Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 24 additions & 14 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ include Makefile.config
# load possible overrides or non-free definitions
-include Makefile.local

# all, aliases
all: $(patsubst %, packer-%, $(DISTROS)) $(patsubst %, packer-%, $(SERVICES))
distros: $(patsubst %, packer-%, $(DISTROS))
services: $(patsubst %, packer-%, $(SERVICES))
# aliases
distros-amd64: $(patsubst %, packer-%, $(DISTROS_AMD64))
distros-arm64: $(patsubst %, packer-%, $(DISTROS_ARM64))
services-amd64: $(patsubst %, packer-%, $(SERVICES_AMD64))
services-arm64: $(patsubst %, packer-%, $(SERVICES_ARM64))

# allow individual distribution targets (e.g., "make debian11")
$(DISTROS) $(SERVICES): %: packer-% ;
Expand All @@ -26,6 +27,9 @@ packer-service_example: packer-alma8 ${DIR_EXPORT}/service_example.qcow2
packer-service_VRouter: packer-alpine320 ${DIR_EXPORT}/service_VRouter.qcow2
@${INFO} "Packer service_VRouter done"

packer-service_VRouter.aarch64: packer-alpine320.aarch64 ${DIR_EXPORT}/service_VRouter.aarch64.qcow2
@${INFO} "Packer service_VRouter.aarch64 done"

packer-service_Harbor: packer-ubuntu2204 ${DIR_EXPORT}/service_Harbor.qcow2
@${INFO} "Packer service_Harbor done"

Expand All @@ -49,8 +53,8 @@ ${DIR_EXPORT}/service_OneKE_storage.qcow2:
@${INFO} "Packer service_OneKE_storage done"

${DIR_EXPORT}/%.qcow2: $(patsubst %, context-linux/out/%, $(LINUX_CONTEXT_PACKAGES))
$(eval DISTRO_NAME := $(shell echo ${*} | sed 's/[0-9].*//'))
$(eval DISTRO_VER := $(shell echo ${*} | sed 's/^.[^0-9]*\(.*\)/\1/'))
$(eval DISTRO_NAME := $(shell echo ${*} | sed 's/[0-9\.].*//'))
$(eval DISTRO_VER := $(shell echo ${*} | sed 's/^.[^0-9\.]*\(.*\)/\1/'))
packer/build.sh "${DISTRO_NAME}" "${DISTRO_VER}" ${@}

# context packages
Expand Down Expand Up @@ -83,19 +87,25 @@ help:
@echo ' make <distro> -- build just one distro'
@echo ' make <service> -- build just one service'
@echo
@echo ' make all -- build all distros and services'
@echo ' make all -j 4 -- build all in 4 parallel tasks'
@echo ' make distros -- build all distros'
@echo ' make services -- build all services'
@echo ' make distros-amd64 -- build all distros (x86_64)'
@echo ' make distros-amd64 -j4 -- build all distros (x86_64) in 4 parallel tasks'
@echo ' make distros-arm64 -- build all distros (aarch64)'
@echo ' make services-amd64 -- build all services (x86_64)'
@echo
@echo ' make context-linux -- build context linux packages'
@echo ' make context-windows -- build windows linux packages'
@echo
@echo 'Available distros:'
@echo "$(shell echo "${DISTROS}" | fmt -w 65 | tr '\n' '\1' )" \
@echo 'Available distros (x86_64):'
@echo "$(shell echo "${DISTROS_AMD64}" | fmt -w 65 | tr '\n' '\1' )" \
| tr '\1' '\n' | sed 's/^/ /'
@echo 'Available distros (aarch64):'
@echo "$(shell echo "${DISTROS_ARM64}" | fmt -w 65 | tr '\n' '\1' )" \
| tr '\1' '\n' | sed 's/^/ /'
@echo 'Available services (x86_64):'
@echo "$(shell echo "${SERVICES_AMD64}" | fmt -w 65 | tr '\n' '\1' )" \
| tr '\1' '\n' | sed 's/^/ /'
@echo 'Available services:'
@echo ' $(SERVICES)'
@echo 'Available services (aarch64):'
@echo ' $(SERVICES_ARM64)'
@echo

version:
Expand Down
40 changes: 26 additions & 14 deletions Makefile.config
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,32 @@ VERBOSE := 1
PACKER_LOG := 0
PACKER_HEADLESS := true

DISTROS := alma8 alma8.aarch64 alma9 alma9.aarch64 \
alpine316 alpine317 alpine318 alpine319 alpine320 \
alt10 \
amazon2 amazon2023 \
debian11 debian11.aarch64 debian12 debian12.aarch64 \
devuan4 devuan5 \
fedora38 fedora39 fedora40 \
freebsd13 freebsd14 \
ol8 ol9 \
opensuse15 \
rocky8 rocky9 \
ubuntu2004 ubuntu2004min ubuntu2204 ubuntu2204.aarch64 ubuntu2204oneke ubuntu2204min ubuntu2204min.aarch64 ubuntu2404 ubuntu2404.aarch64 ubuntu2404min ubuntu2404min.aarch64

SERVICES := service_Wordpress service_VRouter service_OneKE service_OneKEa service_Harbor service_MinIO service_Ray service_example
DISTROS_AMD64 := alma8 alma9 \
alpine318 alpine319 alpine320 alpine321 \
alt10 \
amazon2 amazon2023 \
debian11 debian12 \
devuan4 devuan5 \
fedora38 fedora39 fedora40 \
freebsd13 freebsd14 \
ol8 ol9 \
opensuse15 \
rocky8 rocky9 \
ubuntu2004 ubuntu2004min ubuntu2204 ubuntu2204min \
ubuntu2404 ubuntu2404min \

DISTROS_ARM64 := alma8.aarch64 alma9.aarch64 \
alpine318.aarch64 alpine319.aarch64 alpine320.aarch64 alpine321.aarch64 \
debian11.aarch64 debian12.aarch64 \
ubuntu2204.aarch64 ubuntu2204min.aarch64 ubuntu2404.aarch64 ubuntu2404min.aarch64

SERVICES_AMD64 := service_Wordpress service_VRouter service_OneKE service_OneKEa \
service_Harbor service_MinIO service_Ray service_example

SERVICES_ARM64 := service_VRouter.aarch64

DISTROS := $(DISTROS_AMD64) $(DISTROS_ARM64)
SERVICES := $(SERVICES_AMD64) $(SERVICES_ARM64)

.DEFAULT_GOAL := help

Expand Down
37 changes: 24 additions & 13 deletions appliances/OneKE/kubernetes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,39 +13,50 @@
def install_kubernetes(airgap_dir = ONE_AIRGAP_DIR)
rke2_release_url = "https://github.com/rancher/rke2/releases/download/#{ONE_SERVICE_RKE2_VERSION}"

amap= {
"x86_64" => "amd64",
"aarch64" => "arm64"
}
begin
arch = amap[`arch`.strip]
rescue KeyError
msg :error, "Unknown architecture"
exit 1
end

msg :info, "Install RKE2 runtime: #{ONE_SERVICE_RKE2_VERSION}"
bash <<~SCRIPT
curl -fsSL '#{rke2_release_url}/rke2.linux-amd64.tar.gz' | tar -xz -f- -C /usr/local/
curl -fsSL '#{rke2_release_url}/rke2.linux-#{arch}.tar.gz' | tar -xz -f- -C /usr/local/
SCRIPT

if ONE_SERVICE_AIRGAPPED
msg :info, "Download RKE2 airgapped image archives: #{ONE_SERVICE_RKE2_VERSION}"
bash <<~SCRIPT
curl -fsSL '#{rke2_release_url}/rke2-images-core.linux-amd64.tar.zst' \
| install -o 0 -g 0 -m u=rw,go=r -D /dev/fd/0 '#{airgap_dir}/rke2-images-core/rke2-images-core.linux-amd64.tar.zst'
curl -fsSL '#{rke2_release_url}/rke2-images-core.linux-#{arch}.tar.zst' \
| install -o 0 -g 0 -m u=rw,go=r -D /dev/fd/0 '#{airgap_dir}/rke2-images-core/rke2-images-core.linux-#{arch}.tar.zst'
SCRIPT
bash <<~SCRIPT
curl -fsSL '#{rke2_release_url}/rke2-images-multus.linux-amd64.tar.zst' \
| install -o 0 -g 0 -m u=rw,go=r -D /dev/fd/0 '#{airgap_dir}/rke2-images-multus/rke2-images-multus.linux-amd64.tar.zst'
curl -fsSL '#{rke2_release_url}/rke2-images-multus.linux-#{arch}.tar.zst' \
| install -o 0 -g 0 -m u=rw,go=r -D /dev/fd/0 '#{airgap_dir}/rke2-images-multus/rke2-images-multus.linux-#{arch}.tar.zst'
SCRIPT
bash <<~SCRIPT
curl -fsSL '#{rke2_release_url}/rke2-images-calico.linux-amd64.tar.zst' \
| install -o 0 -g 0 -m u=rw,go=r -D /dev/fd/0 '#{airgap_dir}/rke2-images-calico/rke2-images-calico.linux-amd64.tar.zst'
curl -fsSL '#{rke2_release_url}/rke2-images-calico.linux-#{arch}.tar.zst' \
| install -o 0 -g 0 -m u=rw,go=r -D /dev/fd/0 '#{airgap_dir}/rke2-images-calico/rke2-images-calico.linux-#{arch}.tar.zst'
SCRIPT
bash <<~SCRIPT
curl -fsSL '#{rke2_release_url}/rke2-images-canal.linux-amd64.tar.zst' \
| install -o 0 -g 0 -m u=rw,go=r -D /dev/fd/0 '#{airgap_dir}/rke2-images-canal/rke2-images-canal.linux-amd64.tar.zst'
curl -fsSL '#{rke2_release_url}/rke2-images-canal.linux-#{arch}.tar.zst' \
| install -o 0 -g 0 -m u=rw,go=r -D /dev/fd/0 '#{airgap_dir}/rke2-images-canal/rke2-images-canal.linux-#{arch}.tar.zst'
SCRIPT
bash <<~SCRIPT
curl -fsSL '#{rke2_release_url}/rke2-images-cilium.linux-amd64.tar.zst' \
| install -o 0 -g 0 -m u=rw,go=r -D /dev/fd/0 '#{airgap_dir}/rke2-images-cilium/rke2-images-cilium.linux-amd64.tar.zst'
curl -fsSL '#{rke2_release_url}/rke2-images-cilium.linux-#{arch}.tar.zst' \
| install -o 0 -g 0 -m u=rw,go=r -D /dev/fd/0 '#{airgap_dir}/rke2-images-cilium/rke2-images-cilium.linux-#{arch}.tar.zst'
SCRIPT
end

msg :info, "Install Helm binary: #{ONE_SERVICE_HELM_VERSION}"
bash <<~SCRIPT
curl -fsSL 'https://get.helm.sh/helm-v#{ONE_SERVICE_HELM_VERSION}-linux-amd64.tar.gz' \
| tar -xOz -f- linux-amd64/helm \
curl -fsSL 'https://get.helm.sh/helm-v#{ONE_SERVICE_HELM_VERSION}-linux-#{arch}.tar.gz' \
| tar -xOz -f- linux-#{arch}/helm \
| install -o 0 -g 0 -m u=rwx,go=rx -D /dev/fd/0 /usr/local/bin/helm
SCRIPT

Expand Down
5 changes: 4 additions & 1 deletion packer/alpine/11-update-boot.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ gawk -i inplace -f- /etc/inittab <<'EOF'
{ print }
EOF

gawk -i inplace -f- /boot/extlinux.conf <<'EOF'
if [ "$(arch)" = "x86_64" ]; then
apk --no-cache add syslinux
gawk -i inplace -f- /boot/extlinux.conf <<'EOF'
BEGIN { update = "TIMEOUT 3" }
/^TIMEOUT\s/ { $0 = update; found = 1 }
{ print }
ENDFILE { if (!found) print update }
EOF
fi

sync
2 changes: 2 additions & 0 deletions packer/alpine/98-collect-garbage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
exec 1>&2
set -eux -o pipefail

apk del cloud-init

rm -f /etc/motd

rm -rf /var/cache/apk/*
Expand Down
57 changes: 0 additions & 57 deletions packer/alpine/alpine.init

This file was deleted.

28 changes: 16 additions & 12 deletions packer/alpine/alpine.pkr.hcl
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
source "null" "null" { communicator = "none" }

build {
sources = ["sources.null.null"]

provisioner "shell-local" {
inline = [
"cloud-localds ${var.input_dir}/${var.appliance_name}-cloud-init.iso ${var.input_dir}/cloud-init.yml",
]
}
}

source "qemu" "alpine" {
cpus = 2
cpu_model = "host"
Expand All @@ -14,27 +26,19 @@ source "qemu" "alpine" {

headless = var.headless

http_directory = "${var.input_dir}"
boot_command = [
"root<enter>",
"ifconfig eth0 up && udhcpc -i eth0<enter><wait1>",
"wget -qO alpine.init http://{{ .HTTPIP }}:{{ .HTTPPort }}/alpine.init<enter><wait1>",
"/bin/ash alpine.init<enter><wait20>"
]
boot_wait = "20s"

disk_image = true
disk_cache = "unsafe"
disk_interface = "virtio"
net_device = "virtio-net"
disk_size = 256
disk_size = 512
format = "qcow2"
disk_compression = false

output_directory = "${var.output_dir}"

qemuargs = [
["-cpu", "host"],
["-serial", "stdio"],
["-cdrom", "${var.input_dir}/${var.appliance_name}-cloud-init.iso"],
["-serial", "stdio"]
]

ssh_username = "root"
Expand Down
16 changes: 16 additions & 0 deletions packer/alpine/cloud-init.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#cloud-config
growpart:
mode: auto
devices: [/]

users:
- name: root
lock_passwd: false
hashed_passwd: $6$rounds=4096$2RFfXKGPKTcdF.CH$dzLlW9Pg1jbeojxRxEraHwEMAPAbpChBdrMFV1SOa6etSF2CYAe.hC1dRDM1icTOk7M4yhVS1BtwJjah9essD0

disable_root: false
ssh_pwauth: true

runcmd:
- echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
- rc-service sshd restart
43 changes: 25 additions & 18 deletions packer/alpine/variables.pkr.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -25,33 +25,40 @@ variable "alpine" {
type = map(map(string))

default = {
"316" = {
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.16/releases/x86_64/alpine-virt-3.16.9-x86_64.iso"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.16/releases/x86_64/alpine-virt-3.16.9-x86_64.iso.sha256"
}

"317" = {
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.17/releases/x86_64/alpine-virt-3.17.5-x86_64.iso"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.17/releases/x86_64/alpine-virt-3.17.5-x86_64.iso.sha256"
}

"318" = {
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-virt-3.18.4-x86_64.iso"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-virt-3.18.4-x86_64.iso.sha256"
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/cloud/nocloud_alpine-3.18.9-x86_64-bios-cloudinit-r0.qcow2"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/cloud/nocloud_alpine-3.18.9-x86_64-bios-cloudinit-r0.qcow2.sha512"
}
"318.aarch64" = {
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/cloud/nocloud_alpine-3.18.9-aarch64-uefi-cloudinit-r0.qcow2"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/cloud/nocloud_alpine-3.18.9-aarch64-uefi-cloudinit-r0.qcow2.sha512"
}

"319" = {
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-virt-3.19.1-x86_64.iso"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/x86_64/alpine-virt-3.19.1-x86_64.iso.sha256"
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/cloud/nocloud_alpine-3.19.4-x86_64-bios-cloudinit-r0.qcow2"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/cloud/nocloud_alpine-3.19.4-x86_64-bios-cloudinit-r0.qcow2.sha512"
}
"319.aarch64" = {
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/cloud/nocloud_alpine-3.19.4-aarch64-uefi-cloudinit-r0.qcow2"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/cloud/nocloud_alpine-3.19.4-aarch64-uefi-cloudinit-r0.qcow2.sha512"
}

"320" = {
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/x86_64/alpine-virt-3.20.0-x86_64.iso"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/x86_64/alpine-virt-3.20.0-x86_64.iso.sha256"
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/cloud/nocloud_alpine-3.20.3-x86_64-bios-cloudinit-r0.qcow2"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/cloud/nocloud_alpine-3.20.3-x86_64-bios-cloudinit-r0.qcow2.sha512"
}
"320.aarch64" = {
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/aarch64/alpine-virt-3.20.0-aarch64.iso"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/aarch64/alpine-virt-3.20.0-aarch64.iso.sha256"
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/cloud/nocloud_alpine-3.20.3-aarch64-uefi-cloudinit-r0.qcow2"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/cloud/nocloud_alpine-3.20.3-aarch64-uefi-cloudinit-r0.qcow2.sha512"
}

"321" = {
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/cloud/nocloud_alpine-3.21.0-x86_64-bios-cloudinit-r0.qcow2"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/cloud/nocloud_alpine-3.21.0-x86_64-bios-cloudinit-r0.qcow2.sha512"
}
"321.aarch64" = {
iso_url = "https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/cloud/nocloud_alpine-3.21.0-aarch64-uefi-cloudinit-r0.qcow2"
iso_checksum = "file:https://dl-cdn.alpinelinux.org/alpine/v3.21/releases/cloud/nocloud_alpine-3.21.0-aarch64-uefi-cloudinit-r0.qcow2.sha512"
}
}
}
Loading
Loading