From e7a36487dc01cc1336d69a4e69337ec783523341 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Mass=C3=A9?= Date: Tue, 23 Sep 2025 06:02:38 -0400 Subject: [PATCH] rework --- bootc/baremetal/Containerfile | 22 ++++++++ .../root/etc/libvirt/qemu}/hooks/qemu | 0 .../root/etc/libvirt/qemu/hooks/qemu.d/.keep} | 0 .../qemu/networks/autostart/default.xml | 0 .../etc/libvirt/qemu/networks/default.xml | 0 bootc/base/Containerfile | 22 +++++--- bootc/scenario1/Containerfile | 8 --- .../hooks.d/afterupdating/30-nextcloud.yaml | 10 ---- bootc/scenario2/Containerfile | 8 --- bootc/scenario3a/Containerfile | 8 --- .../qemu/networks/autostart/default.xml | 1 - .../etc/libvirt/qemu/networks/default.xml | 19 ------- bootc/scenario4/Containerfile | 8 --- .../hooks.d/afterupdating/30-odoo.yaml | 10 ---- bootc/scripts/build-image.sh | 54 +++++++++++++++++++ bootc/scripts/{build.sh => build-qcow2.sh} | 29 ---------- bootc/scripts/buildall.sh | 8 ++- bootc/virtualmachine/Containerfile | 20 +++++++ .../flightctl-agent.service.d/override.conf | 0 .../etc/default/bootstrap-vm-nextcloud.env | 4 +- .../hooks.d/afterupdating/30-edge-vm.yaml | 5 ++ .../hooks.d/beforeupdating/30-edge-vm.yaml | 5 ++ .../check/required.d/30_nextcloud_check.sh | 0 .../libvirt/hooks/qemu.d/nextcloud/iptables | 0 .../etc/systemd/system/bootstrap-vm@.service | 0 .../edge-vm}/usr/local/bin/bootstrap-vm.sh | 0 .../etc/default/migrate-vm-printserver.env | 0 .../afterupdating/30-hyperv-migration.yaml | 5 ++ .../beforeupdating/30-hyperv-migration.yaml | 5 ++ .../check/required.d/30_printserver_check.sh | 0 .../etc/systemd/system/migrate-vm@.service | 0 .../usr/local/bin/migrate-vm.sh | 0 .../systemd/nextcloud-app.container | 10 ++-- .../containers/systemd/nextcloud-db.container | 8 +-- .../systemd/nextcloud-nginx.container | 4 +- .../systemd/nextcloud-redis.container | 6 +-- .../systemd/nextcloud}/nextcloud-app.env | 0 .../nextcloud}/nextcloud-config.env.tmpl | 0 .../systemd/nextcloud}/nextcloud-db.env | 0 .../systemd/nextcloud}/nextcloud-redis.env | 0 .../containers/systemd/nextcloud}/nginx.conf | 0 .../systemd/nextcloud/redis-session.ini | 0 .../containers/systemd/nextcloud}/redis.conf | 0 .../containers/systemd/nextcloud}/www.conf | 0 .../hooks.d/afterupdating/30-nextcloud.yaml | 5 ++ .../hooks.d/beforeupdating/30-nextcloud.yaml | 5 ++ .../check/required.d/30_nextcloud_check.sh | 0 .../etc/systemd/system/nextcloud.target | 0 .../etc/containers/systemd/odoo-app.container | 4 +- .../etc/containers/systemd/odoo-db.container | 10 ++-- .../containers/systemd/odoo-init.container | 6 +-- .../systemd/odoo}/odoo-config.env.tmpl | 0 .../etc/containers/systemd/odoo}/odoo-db.env | 1 + .../hooks.d/afterupdating/30-odoo.yaml | 5 ++ .../hooks.d/beforeupdating/30-odoo.yaml | 5 ++ .../check/required.d/30_odoo_check.sh | 0 .../apps/odoo}/etc/odoo/init.sh | 0 .../apps/odoo}/etc/odoo/odoo.conf | 0 .../apps/odoo}/etc/systemd/system/odoo.target | 0 flightctl/fleets.yaml | 24 --------- .../sites/default/etc/motd.d/unconfigured | 0 .../systemd/configs/nextcloud-config.env | 0 .../systemd/configs/odoo-config.env | 0 .../systemd/configs/nextcloud-config.env | 0 .../systemd/configs/odoo-config.env | 0 .../sites/default/etc/motd.d/unconfigured | 0 .../systemd/configs/nextcloud-config.env | 16 ++++++ .../systemd/configs/nextcloud-config.env | 16 ++++++ .../sites/default/etc/motd.d/unconfigured | 6 --- .../systemd/configs/odoo-config.env | 4 -- .../systemd/configs/odoo-config.env | 4 -- pxe-boot/install.sh | 22 +++----- pxe-boot/tftpboot/menu.ipxe | 47 ++-------------- pxe-boot/www/ks/mac-00190f440391.ks | 2 +- pxe-boot/www/ks/mac-00be43ec5619.ks | 2 +- 75 files changed, 229 insertions(+), 234 deletions(-) create mode 100644 bootc/baremetal/Containerfile rename bootc/{scenario3a/root/etc/libvirt => baremetal/root/etc/libvirt/qemu}/hooks/qemu (100%) rename bootc/{scenario1/root/etc/containers/systemd/configs/redis-session.ini => baremetal/root/etc/libvirt/qemu/hooks/qemu.d/.keep} (100%) rename bootc/{scenario2 => baremetal}/root/etc/libvirt/qemu/networks/autostart/default.xml (100%) rename bootc/{scenario2 => baremetal}/root/etc/libvirt/qemu/networks/default.xml (100%) delete mode 100644 bootc/scenario1/Containerfile delete mode 100644 bootc/scenario1/root/etc/flightctl/hooks.d/afterupdating/30-nextcloud.yaml delete mode 100644 bootc/scenario2/Containerfile delete mode 100644 bootc/scenario3a/Containerfile delete mode 120000 bootc/scenario3a/root/etc/libvirt/qemu/networks/autostart/default.xml delete mode 100644 bootc/scenario3a/root/etc/libvirt/qemu/networks/default.xml delete mode 100644 bootc/scenario4/Containerfile delete mode 100644 bootc/scenario4/root/etc/flightctl/hooks.d/afterupdating/30-odoo.yaml create mode 100755 bootc/scripts/build-image.sh rename bootc/scripts/{build.sh => build-qcow2.sh} (66%) create mode 100644 bootc/virtualmachine/Containerfile rename bootc/{base => virtualmachine}/root/etc/systemd/system/flightctl-agent.service.d/override.conf (100%) rename {bootc/scenario3a/root => flightctl/apps/edge-vm}/etc/default/bootstrap-vm-nextcloud.env (64%) create mode 100644 flightctl/apps/edge-vm/etc/flightctl/hooks.d/afterupdating/30-edge-vm.yaml create mode 100644 flightctl/apps/edge-vm/etc/flightctl/hooks.d/beforeupdating/30-edge-vm.yaml rename {bootc/scenario3a/root => flightctl/apps/edge-vm}/etc/greenboot/check/required.d/30_nextcloud_check.sh (100%) rename {bootc/scenario3a/root => flightctl/apps/edge-vm}/etc/libvirt/hooks/qemu.d/nextcloud/iptables (100%) rename {bootc/scenario3a/root => flightctl/apps/edge-vm}/etc/systemd/system/bootstrap-vm@.service (100%) rename {bootc/scenario3a/root => flightctl/apps/edge-vm}/usr/local/bin/bootstrap-vm.sh (100%) rename {bootc/scenario2/root => flightctl/apps/hyperv-migration}/etc/default/migrate-vm-printserver.env (100%) create mode 100644 flightctl/apps/hyperv-migration/etc/flightctl/hooks.d/afterupdating/30-hyperv-migration.yaml create mode 100644 flightctl/apps/hyperv-migration/etc/flightctl/hooks.d/beforeupdating/30-hyperv-migration.yaml rename {bootc/scenario2/root => flightctl/apps/hyperv-migration}/etc/greenboot/check/required.d/30_printserver_check.sh (100%) rename {bootc/scenario2/root => flightctl/apps/hyperv-migration}/etc/systemd/system/migrate-vm@.service (100%) rename {bootc/scenario2/root => flightctl/apps/hyperv-migration}/usr/local/bin/migrate-vm.sh (100%) rename {bootc/scenario1/root => flightctl/apps/nextcloud}/etc/containers/systemd/nextcloud-app.container (79%) rename {bootc/scenario1/root => flightctl/apps/nextcloud}/etc/containers/systemd/nextcloud-db.container (77%) rename {bootc/scenario1/root => flightctl/apps/nextcloud}/etc/containers/systemd/nextcloud-nginx.container (84%) rename {bootc/scenario1/root => flightctl/apps/nextcloud}/etc/containers/systemd/nextcloud-redis.container (79%) rename {bootc/scenario1/root/etc/containers/systemd/configs => flightctl/apps/nextcloud/etc/containers/systemd/nextcloud}/nextcloud-app.env (100%) rename {bootc/scenario1/root/etc/containers/systemd/configs => flightctl/apps/nextcloud/etc/containers/systemd/nextcloud}/nextcloud-config.env.tmpl (100%) rename {bootc/scenario1/root/etc/containers/systemd/configs => flightctl/apps/nextcloud/etc/containers/systemd/nextcloud}/nextcloud-db.env (100%) rename {bootc/scenario1/root/etc/containers/systemd/configs => flightctl/apps/nextcloud/etc/containers/systemd/nextcloud}/nextcloud-redis.env (100%) rename {bootc/scenario1/root/etc/containers/systemd/configs => flightctl/apps/nextcloud/etc/containers/systemd/nextcloud}/nginx.conf (100%) create mode 100644 flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/redis-session.ini rename {bootc/scenario1/root/etc/containers/systemd/configs => flightctl/apps/nextcloud/etc/containers/systemd/nextcloud}/redis.conf (100%) rename {bootc/scenario1/root/etc/containers/systemd/configs => flightctl/apps/nextcloud/etc/containers/systemd/nextcloud}/www.conf (100%) create mode 100644 flightctl/apps/nextcloud/etc/flightctl/hooks.d/afterupdating/30-nextcloud.yaml create mode 100644 flightctl/apps/nextcloud/etc/flightctl/hooks.d/beforeupdating/30-nextcloud.yaml rename {bootc/scenario1/root => flightctl/apps/nextcloud}/etc/greenboot/check/required.d/30_nextcloud_check.sh (100%) rename {bootc/scenario1/root => flightctl/apps/nextcloud}/etc/systemd/system/nextcloud.target (100%) rename {bootc/scenario4/root => flightctl/apps/odoo}/etc/containers/systemd/odoo-app.container (90%) rename {bootc/scenario4/root => flightctl/apps/odoo}/etc/containers/systemd/odoo-db.container (74%) rename {bootc/scenario4/root => flightctl/apps/odoo}/etc/containers/systemd/odoo-init.container (86%) rename {bootc/scenario4/root/etc/containers/systemd/configs => flightctl/apps/odoo/etc/containers/systemd/odoo}/odoo-config.env.tmpl (100%) rename {bootc/scenario4/root/etc/containers/systemd/configs => flightctl/apps/odoo/etc/containers/systemd/odoo}/odoo-db.env (92%) create mode 100644 flightctl/apps/odoo/etc/flightctl/hooks.d/afterupdating/30-odoo.yaml create mode 100644 flightctl/apps/odoo/etc/flightctl/hooks.d/beforeupdating/30-odoo.yaml rename {bootc/scenario4/root => flightctl/apps/odoo}/etc/greenboot/check/required.d/30_odoo_check.sh (100%) rename {bootc/scenario4/root => flightctl/apps/odoo}/etc/odoo/init.sh (100%) rename {bootc/scenario4/root => flightctl/apps/odoo}/etc/odoo/odoo.conf (100%) rename {bootc/scenario4/root => flightctl/apps/odoo}/etc/systemd/system/odoo.target (100%) rename flightctl/{scenario1 => fleets/baremetal}/sites/default/etc/motd.d/unconfigured (100%) rename flightctl/{scenario1 => fleets/baremetal}/sites/paris-wagram/etc/containers/systemd/configs/nextcloud-config.env (100%) rename flightctl/{scenario3a => fleets/baremetal}/sites/paris-wagram/etc/containers/systemd/configs/odoo-config.env (100%) rename flightctl/{scenario1 => fleets/baremetal}/sites/villeneuve-d-ascq/etc/containers/systemd/configs/nextcloud-config.env (100%) rename flightctl/{scenario3a => fleets/baremetal}/sites/villeneuve-d-ascq/etc/containers/systemd/configs/odoo-config.env (100%) rename flightctl/{scenario3a => fleets/virtualmachines}/sites/default/etc/motd.d/unconfigured (100%) create mode 100644 flightctl/fleets/virtualmachines/sites/paris-wagram/etc/containers/systemd/configs/nextcloud-config.env create mode 100644 flightctl/fleets/virtualmachines/sites/villeneuve-d-ascq/etc/containers/systemd/configs/nextcloud-config.env delete mode 100644 flightctl/scenario4/sites/default/etc/motd.d/unconfigured delete mode 100644 flightctl/scenario4/sites/paris-wagram/etc/containers/systemd/configs/odoo-config.env delete mode 100644 flightctl/scenario4/sites/villeneuve-d-ascq/etc/containers/systemd/configs/odoo-config.env diff --git a/bootc/baremetal/Containerfile b/bootc/baremetal/Containerfile new file mode 100644 index 0000000..943e64b --- /dev/null +++ b/bootc/baremetal/Containerfile @@ -0,0 +1,22 @@ +FROM edge-registry.itix.fr/demo-edge-retail/base:latest + +RUN < - default - - - - - - host - - - - - - - - - - - diff --git a/bootc/scenario4/Containerfile b/bootc/scenario4/Containerfile deleted file mode 100644 index 18e4c0b..0000000 --- a/bootc/scenario4/Containerfile +++ /dev/null @@ -1,8 +0,0 @@ -FROM edge-registry.itix.fr/demo-edge-retail/base:latest - -ADD --chown=root:root root / - -RUN < [qcow2-target-image]" + exit 1 +fi + +TARGET_IMAGE="$1" + +OCI_REGISTRY="${TARGET_IMAGE%%/*}" +SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +PROJECT_DIR="$(dirname "$SCRIPT_DIR")" + +if [ ! -f "$PROJECT_DIR/signing-key.pass" ]; then + openssl rand -base64 30 > "$PROJECT_DIR/signing-key.pass" + chmod 600 "$PROJECT_DIR/signing-key.pass" +fi + +if [ ! -f "$PROJECT_DIR/signing-key.pub" ]; then + skopeo generate-sigstore-key --output-prefix "$PROJECT_DIR/signing-key" --passphrase-file "$PROJECT_DIR/signing-key.pass" +fi + +if [ ! -f "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" ]; then + tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null < /dev/null && pwd )" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" -if [ ! -f "$PROJECT_DIR/signing-key.pass" ]; then - openssl rand -base64 30 > "$PROJECT_DIR/signing-key.pass" - chmod 600 "$PROJECT_DIR/signing-key.pass" -fi - -if [ ! -f "$PROJECT_DIR/signing-key.pub" ]; then - skopeo generate-sigstore-key --output-prefix "$PROJECT_DIR/signing-key" --passphrase-file "$PROJECT_DIR/signing-key.pass" -fi - -if [ ! -f "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" ]; then - tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null < /dev/null - "$SCRIPT_DIR/build.sh" "$TARGET_IMAGE" + "$SCRIPT_DIR/build-image.sh" "$TARGET_IMAGE" + if [[ "$SCENARIO" == "virtualmachine" ]]; then + echo "Building qcow2 image for $TARGET_IMAGE..." + "$SCRIPT_DIR/build-qcow2.sh" "$TARGET_IMAGE" + fi popd > /dev/null fi done diff --git a/bootc/virtualmachine/Containerfile b/bootc/virtualmachine/Containerfile new file mode 100644 index 0000000..b2ecb15 --- /dev/null +++ b/bootc/virtualmachine/Containerfile @@ -0,0 +1,20 @@ +FROM edge-registry.itix.fr/demo-edge-retail/base:latest + +RUN </dev/null; for try in $(seq 0 12); do if ! /bin/true 5<> /dev/tcp/127.0.0.1/5432; then echo "Waiting for PostgreSQL to be available..."; sleep 5; else exit 0; fi; done; exit 1' diff --git a/bootc/scenario1/root/etc/containers/systemd/nextcloud-db.container b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud-db.container similarity index 77% rename from bootc/scenario1/root/etc/containers/systemd/nextcloud-db.container rename to flightctl/apps/nextcloud/etc/containers/systemd/nextcloud-db.container index bdad765..f118f77 100644 --- a/bootc/scenario1/root/etc/containers/systemd/nextcloud-db.container +++ b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud-db.container @@ -4,7 +4,7 @@ Documentation=https://www.postgresql.org/ After=network.target # Only start if Nextcloud has been configured -ConditionPathExists=/etc/containers/systemd/configs/nextcloud-config.env +ConditionPathExists=/etc/containers/systemd/nextcloud/nextcloud-config.env # Start/stop this unit when the target is started/stopped PartOf=nextcloud.target @@ -17,10 +17,10 @@ Image=docker.io/library/postgres:17-alpine Network=host # Environment variables from config -EnvironmentFile=/etc/containers/systemd/configs/nextcloud-db.env +EnvironmentFile=/etc/containers/systemd/nextcloud/nextcloud-db.env # Volume mounts -Volume=/var/lib/postgresql/data:/var/lib/postgresql/data:Z +Volume=/var/lib/postgresql/data-nextcloud:/var/lib/postgresql/data:Z # Health check HealthCmd=pg_isready -U nextcloud -d nextcloud @@ -36,7 +36,7 @@ TimeoutStartSec=120 TimeoutStopSec=30 # Skaffold filesystem + fix permissions -ExecStartPre=install -m 0700 -o 70 -g 70 -d /var/lib/postgresql/data +ExecStartPre=install -m 0700 -o 70 -g 70 -d /var/lib/postgresql/data-nextcloud [Install] WantedBy=nextcloud.target diff --git a/bootc/scenario1/root/etc/containers/systemd/nextcloud-nginx.container b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud-nginx.container similarity index 84% rename from bootc/scenario1/root/etc/containers/systemd/nextcloud-nginx.container rename to flightctl/apps/nextcloud/etc/containers/systemd/nextcloud-nginx.container index 0d0afea..88764b0 100644 --- a/bootc/scenario1/root/etc/containers/systemd/nextcloud-nginx.container +++ b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud-nginx.container @@ -4,7 +4,7 @@ Documentation=https://nextcloud.com/ After=network.target # Only start if Nextcloud has been configured -ConditionPathExists=/etc/containers/systemd/configs/nextcloud-config.env +ConditionPathExists=/etc/containers/systemd/nextcloud/nextcloud-config.env # Start/stop this unit when the target is started/stopped PartOf=nextcloud.target @@ -22,7 +22,7 @@ User=82:82 # Volume mounts Volume=/var/lib/nextcloud/data:/var/www/html:z -Volume=/etc/containers/systemd/configs/nginx.conf:/etc/nginx/nginx.conf:ro +Volume=/etc/containers/systemd/nextcloud/nginx.conf:/etc/nginx/nginx.conf:ro # Health check (equivalent to readiness probe) HealthCmd=curl -f http://localhost:80/status.php diff --git a/bootc/scenario1/root/etc/containers/systemd/nextcloud-redis.container b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud-redis.container similarity index 79% rename from bootc/scenario1/root/etc/containers/systemd/nextcloud-redis.container rename to flightctl/apps/nextcloud/etc/containers/systemd/nextcloud-redis.container index 6df040d..3296dda 100644 --- a/bootc/scenario1/root/etc/containers/systemd/nextcloud-redis.container +++ b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud-redis.container @@ -4,7 +4,7 @@ Documentation=https://redis.io/ After=network.target # Only start if Nextcloud has been configured -ConditionPathExists=/etc/containers/systemd/configs/nextcloud-config.env +ConditionPathExists=/etc/containers/systemd/nextcloud/nextcloud-config.env # Start/stop this unit when the target is started/stopped PartOf=nextcloud.target @@ -20,11 +20,11 @@ Network=host Exec=redis-server /usr/local/etc/redis/redis.conf # Environment variables -EnvironmentFile=/etc/containers/systemd/configs/nextcloud-redis.env +EnvironmentFile=/etc/containers/systemd/nextcloud/nextcloud-redis.env # Volume mounts for data persistence Volume=/var/lib/redis:/data:Z -Volume=/etc/containers/systemd/configs/redis.conf:/usr/local/etc/redis/redis.conf:ro +Volume=/etc/containers/systemd/nextcloud/redis.conf:/usr/local/etc/redis/redis.conf:ro # Health check HealthCmd=redis-cli ping | grep -q PONG diff --git a/bootc/scenario1/root/etc/containers/systemd/configs/nextcloud-app.env b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/nextcloud-app.env similarity index 100% rename from bootc/scenario1/root/etc/containers/systemd/configs/nextcloud-app.env rename to flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/nextcloud-app.env diff --git a/bootc/scenario1/root/etc/containers/systemd/configs/nextcloud-config.env.tmpl b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/nextcloud-config.env.tmpl similarity index 100% rename from bootc/scenario1/root/etc/containers/systemd/configs/nextcloud-config.env.tmpl rename to flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/nextcloud-config.env.tmpl diff --git a/bootc/scenario1/root/etc/containers/systemd/configs/nextcloud-db.env b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/nextcloud-db.env similarity index 100% rename from bootc/scenario1/root/etc/containers/systemd/configs/nextcloud-db.env rename to flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/nextcloud-db.env diff --git a/bootc/scenario1/root/etc/containers/systemd/configs/nextcloud-redis.env b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/nextcloud-redis.env similarity index 100% rename from bootc/scenario1/root/etc/containers/systemd/configs/nextcloud-redis.env rename to flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/nextcloud-redis.env diff --git a/bootc/scenario1/root/etc/containers/systemd/configs/nginx.conf b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/nginx.conf similarity index 100% rename from bootc/scenario1/root/etc/containers/systemd/configs/nginx.conf rename to flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/nginx.conf diff --git a/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/redis-session.ini b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/redis-session.ini new file mode 100644 index 0000000..e69de29 diff --git a/bootc/scenario1/root/etc/containers/systemd/configs/redis.conf b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/redis.conf similarity index 100% rename from bootc/scenario1/root/etc/containers/systemd/configs/redis.conf rename to flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/redis.conf diff --git a/bootc/scenario1/root/etc/containers/systemd/configs/www.conf b/flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/www.conf similarity index 100% rename from bootc/scenario1/root/etc/containers/systemd/configs/www.conf rename to flightctl/apps/nextcloud/etc/containers/systemd/nextcloud/www.conf diff --git a/flightctl/apps/nextcloud/etc/flightctl/hooks.d/afterupdating/30-nextcloud.yaml b/flightctl/apps/nextcloud/etc/flightctl/hooks.d/afterupdating/30-nextcloud.yaml new file mode 100644 index 0000000..879bd66 --- /dev/null +++ b/flightctl/apps/nextcloud/etc/flightctl/hooks.d/afterupdating/30-nextcloud.yaml @@ -0,0 +1,5 @@ +- if: + - path: /etc/containers/systemd/nextcloud/nextcloud-config.env + op: [created, updated] + run: /bin/sh -Eeuo pipefail -c 'systemctl enable nextcloud.target ; systemctl restart nextcloud.target' + timeout: 5m diff --git a/flightctl/apps/nextcloud/etc/flightctl/hooks.d/beforeupdating/30-nextcloud.yaml b/flightctl/apps/nextcloud/etc/flightctl/hooks.d/beforeupdating/30-nextcloud.yaml new file mode 100644 index 0000000..e371d48 --- /dev/null +++ b/flightctl/apps/nextcloud/etc/flightctl/hooks.d/beforeupdating/30-nextcloud.yaml @@ -0,0 +1,5 @@ +- if: + - path: /etc/containers/systemd/nextcloud/nextcloud-config.env + op: [removed] + run: /bin/sh -c 'if [ -f /etc/systemd/system/nextcloud.target ]; then systemctl stop nextcloud.target ; systemctl disable nextcloud.target ; fi' + timeout: 5m diff --git a/bootc/scenario1/root/etc/greenboot/check/required.d/30_nextcloud_check.sh b/flightctl/apps/nextcloud/etc/greenboot/check/required.d/30_nextcloud_check.sh similarity index 100% rename from bootc/scenario1/root/etc/greenboot/check/required.d/30_nextcloud_check.sh rename to flightctl/apps/nextcloud/etc/greenboot/check/required.d/30_nextcloud_check.sh diff --git a/bootc/scenario1/root/etc/systemd/system/nextcloud.target b/flightctl/apps/nextcloud/etc/systemd/system/nextcloud.target similarity index 100% rename from bootc/scenario1/root/etc/systemd/system/nextcloud.target rename to flightctl/apps/nextcloud/etc/systemd/system/nextcloud.target diff --git a/bootc/scenario4/root/etc/containers/systemd/odoo-app.container b/flightctl/apps/odoo/etc/containers/systemd/odoo-app.container similarity index 90% rename from bootc/scenario4/root/etc/containers/systemd/odoo-app.container rename to flightctl/apps/odoo/etc/containers/systemd/odoo-app.container index 0024bbd..a3b1779 100644 --- a/bootc/scenario4/root/etc/containers/systemd/odoo-app.container +++ b/flightctl/apps/odoo/etc/containers/systemd/odoo-app.container @@ -7,7 +7,7 @@ Requires=odoo-init.service odoo-db.service After=odoo-init.service odoo-db.service # Only start if Odoo has been configured -ConditionPathExists=/etc/containers/systemd/configs/odoo-config.env +ConditionPathExists=/etc/containers/systemd/odoo/odoo-config.env # Only start if initialization has completed ConditionPathExists=/var/lib/odoo/initialized @@ -43,7 +43,7 @@ TimeoutStartSec=600 TimeoutStopSec=30 # Wait for PostgreSQL to be ready -ExecStartPre=/bin/sh -c 'exec 2>/dev/null; for try in $(seq 0 12); do if ! /bin/true 5<> /dev/tcp/127.0.0.1/5432; then echo "Waiting for PostgreSQL to be available..."; sleep 5; else exit 0; fi; done; exit 1' +ExecStartPre=/bin/sh -c 'exec 2>/dev/null; for try in $(seq 0 12); do if ! /bin/true 5<> /dev/tcp/127.0.0.1/5433; then echo "Waiting for PostgreSQL to be available..."; sleep 5; else exit 0; fi; done; exit 1' [Install] WantedBy=odoo.target diff --git a/bootc/scenario4/root/etc/containers/systemd/odoo-db.container b/flightctl/apps/odoo/etc/containers/systemd/odoo-db.container similarity index 74% rename from bootc/scenario4/root/etc/containers/systemd/odoo-db.container rename to flightctl/apps/odoo/etc/containers/systemd/odoo-db.container index da7990c..ae18796 100644 --- a/bootc/scenario4/root/etc/containers/systemd/odoo-db.container +++ b/flightctl/apps/odoo/etc/containers/systemd/odoo-db.container @@ -4,7 +4,7 @@ Documentation=https://www.postgresql.org/ After=network.target # Only start if Odoo has been configured -ConditionPathExists=/etc/containers/systemd/configs/odoo-config.env +ConditionPathExists=/etc/containers/systemd/odoo/odoo-config.env # Start/stop this unit when the target is started/stopped PartOf=odoo.target @@ -17,13 +17,13 @@ Image=docker.io/library/postgres:17-alpine Network=host # Environment variables from config -EnvironmentFile=/etc/containers/systemd/configs/odoo-db.env +EnvironmentFile=/etc/containers/systemd/odoo/odoo-db.env # Volume mounts -Volume=/var/lib/postgresql/data:/var/lib/postgresql/data:Z +Volume=/var/lib/postgresql/data-odoo:/var/lib/postgresql/data:Z # Health check -HealthCmd=pg_isready -U odoo -d postgres +HealthCmd=pg_isready -U odoo -d postgres -p 5433 HealthInterval=30s HealthTimeout=10s HealthStartPeriod=60s @@ -36,7 +36,7 @@ TimeoutStartSec=120 TimeoutStopSec=30 # Skaffold filesystem + fix permissions -ExecStartPre=install -m 0700 -o 70 -g 70 -d /var/lib/postgresql/data +ExecStartPre=install -m 0700 -o 70 -g 70 -d /var/lib/postgresql/data-odoo [Install] WantedBy=odoo.target diff --git a/bootc/scenario4/root/etc/containers/systemd/odoo-init.container b/flightctl/apps/odoo/etc/containers/systemd/odoo-init.container similarity index 86% rename from bootc/scenario4/root/etc/containers/systemd/odoo-init.container rename to flightctl/apps/odoo/etc/containers/systemd/odoo-init.container index 0fe2ae3..3ce3afb 100644 --- a/bootc/scenario4/root/etc/containers/systemd/odoo-init.container +++ b/flightctl/apps/odoo/etc/containers/systemd/odoo-init.container @@ -7,7 +7,7 @@ After=odoo-db.service Before=odoo-app.service # Only start if Odoo has been configured -ConditionPathExists=/etc/containers/systemd/configs/odoo-config.env +ConditionPathExists=/etc/containers/systemd/odoo/odoo-config.env # Prevent running if already initialized ConditionPathExists=!/var/lib/odoo/initialized @@ -24,7 +24,7 @@ Network=host AddCapability=CAP_NET_BIND_SERVICE # Environment variables from secrets and config -EnvironmentFile=/etc/containers/systemd/configs/odoo-config.env +EnvironmentFile=/etc/containers/systemd/odoo/odoo-config.env # Volume mounts Volume=/etc/odoo:/etc/odoo:ro @@ -48,7 +48,7 @@ ExecStartPost=/bin/touch /var/lib/odoo/initialized ExecStartPre=install -m 0700 -o 101 -g 101 -d /var/lib/odoo/data /var/lib/odoo/addons /var/log/odoo # Wait for PostgreSQL to be ready -ExecStartPre=/bin/sh -c 'exec 2>/dev/null; for try in $(seq 0 12); do if ! /bin/true 5<> /dev/tcp/127.0.0.1/5432; then echo "Waiting for PostgreSQL to be available..."; sleep 5; else exit 0; fi; done; exit 1' +ExecStartPre=/bin/sh -c 'exec 2>/dev/null; for try in $(seq 0 12); do if ! /bin/true 5<> /dev/tcp/127.0.0.1/5433; then echo "Waiting for PostgreSQL to be available..."; sleep 5; else exit 0; fi; done; exit 1' [Install] WantedBy=odoo.target diff --git a/bootc/scenario4/root/etc/containers/systemd/configs/odoo-config.env.tmpl b/flightctl/apps/odoo/etc/containers/systemd/odoo/odoo-config.env.tmpl similarity index 100% rename from bootc/scenario4/root/etc/containers/systemd/configs/odoo-config.env.tmpl rename to flightctl/apps/odoo/etc/containers/systemd/odoo/odoo-config.env.tmpl diff --git a/bootc/scenario4/root/etc/containers/systemd/configs/odoo-db.env b/flightctl/apps/odoo/etc/containers/systemd/odoo/odoo-db.env similarity index 92% rename from bootc/scenario4/root/etc/containers/systemd/configs/odoo-db.env rename to flightctl/apps/odoo/etc/containers/systemd/odoo/odoo-db.env index d77dc61..25c6342 100644 --- a/bootc/scenario4/root/etc/containers/systemd/configs/odoo-db.env +++ b/flightctl/apps/odoo/etc/containers/systemd/odoo/odoo-db.env @@ -3,3 +3,4 @@ POSTGRES_PASSWORD=odoo POSTGRES_DB=postgres POSTGRES_HOST_AUTH_METHOD=scram-sha-256 POSTGRES_INITDB_ARGS=--auth-host=scram-sha-256 +PGPORT=5433 diff --git a/flightctl/apps/odoo/etc/flightctl/hooks.d/afterupdating/30-odoo.yaml b/flightctl/apps/odoo/etc/flightctl/hooks.d/afterupdating/30-odoo.yaml new file mode 100644 index 0000000..f81372f --- /dev/null +++ b/flightctl/apps/odoo/etc/flightctl/hooks.d/afterupdating/30-odoo.yaml @@ -0,0 +1,5 @@ +- if: + - path: /etc/containers/systemd/odoo/odoo-config.env + op: [created, updated] + run: /bin/sh -Eeuo pipefail -c 'systemctl enable odoo.target ; systemctl restart odoo.target' + timeout: 5m diff --git a/flightctl/apps/odoo/etc/flightctl/hooks.d/beforeupdating/30-odoo.yaml b/flightctl/apps/odoo/etc/flightctl/hooks.d/beforeupdating/30-odoo.yaml new file mode 100644 index 0000000..6e33f25 --- /dev/null +++ b/flightctl/apps/odoo/etc/flightctl/hooks.d/beforeupdating/30-odoo.yaml @@ -0,0 +1,5 @@ +- if: + - path: /etc/containers/systemd/odoo/odoo-config.env + op: [removed] + run: /bin/sh -c 'if [ -f /etc/systemd/system/odoo.target ]; then systemctl stop odoo.target ; systemctl disable odoo.target ; fi' + timeout: 5m diff --git a/bootc/scenario4/root/etc/greenboot/check/required.d/30_odoo_check.sh b/flightctl/apps/odoo/etc/greenboot/check/required.d/30_odoo_check.sh similarity index 100% rename from bootc/scenario4/root/etc/greenboot/check/required.d/30_odoo_check.sh rename to flightctl/apps/odoo/etc/greenboot/check/required.d/30_odoo_check.sh diff --git a/bootc/scenario4/root/etc/odoo/init.sh b/flightctl/apps/odoo/etc/odoo/init.sh similarity index 100% rename from bootc/scenario4/root/etc/odoo/init.sh rename to flightctl/apps/odoo/etc/odoo/init.sh diff --git a/bootc/scenario4/root/etc/odoo/odoo.conf b/flightctl/apps/odoo/etc/odoo/odoo.conf similarity index 100% rename from bootc/scenario4/root/etc/odoo/odoo.conf rename to flightctl/apps/odoo/etc/odoo/odoo.conf diff --git a/bootc/scenario4/root/etc/systemd/system/odoo.target b/flightctl/apps/odoo/etc/systemd/system/odoo.target similarity index 100% rename from bootc/scenario4/root/etc/systemd/system/odoo.target rename to flightctl/apps/odoo/etc/systemd/system/odoo.target diff --git a/flightctl/fleets.yaml b/flightctl/fleets.yaml index 1f340b2..019c9a9 100644 --- a/flightctl/fleets.yaml +++ b/flightctl/fleets.yaml @@ -1,29 +1,5 @@ apiVersion: flightctl.io/v1alpha1 kind: Fleet -metadata: - annotations: {} - labels: - scenario: 'base' - name: base -spec: - selector: - matchLabels: - scenario: 'base' - template: - metadata: - labels: - fleet: base - spec: - applications: [] - config: [] - os: - image: edge-registry.itix.fr/demo-edge-retail/base:latest - systemd: - matchPatterns: - - greenboot-healthcheck.service ---- -apiVersion: flightctl.io/v1alpha1 -kind: Fleet metadata: annotations: {} labels: diff --git a/flightctl/scenario1/sites/default/etc/motd.d/unconfigured b/flightctl/fleets/baremetal/sites/default/etc/motd.d/unconfigured similarity index 100% rename from flightctl/scenario1/sites/default/etc/motd.d/unconfigured rename to flightctl/fleets/baremetal/sites/default/etc/motd.d/unconfigured diff --git a/flightctl/scenario1/sites/paris-wagram/etc/containers/systemd/configs/nextcloud-config.env b/flightctl/fleets/baremetal/sites/paris-wagram/etc/containers/systemd/configs/nextcloud-config.env similarity index 100% rename from flightctl/scenario1/sites/paris-wagram/etc/containers/systemd/configs/nextcloud-config.env rename to flightctl/fleets/baremetal/sites/paris-wagram/etc/containers/systemd/configs/nextcloud-config.env diff --git a/flightctl/scenario3a/sites/paris-wagram/etc/containers/systemd/configs/odoo-config.env b/flightctl/fleets/baremetal/sites/paris-wagram/etc/containers/systemd/configs/odoo-config.env similarity index 100% rename from flightctl/scenario3a/sites/paris-wagram/etc/containers/systemd/configs/odoo-config.env rename to flightctl/fleets/baremetal/sites/paris-wagram/etc/containers/systemd/configs/odoo-config.env diff --git a/flightctl/scenario1/sites/villeneuve-d-ascq/etc/containers/systemd/configs/nextcloud-config.env b/flightctl/fleets/baremetal/sites/villeneuve-d-ascq/etc/containers/systemd/configs/nextcloud-config.env similarity index 100% rename from flightctl/scenario1/sites/villeneuve-d-ascq/etc/containers/systemd/configs/nextcloud-config.env rename to flightctl/fleets/baremetal/sites/villeneuve-d-ascq/etc/containers/systemd/configs/nextcloud-config.env diff --git a/flightctl/scenario3a/sites/villeneuve-d-ascq/etc/containers/systemd/configs/odoo-config.env b/flightctl/fleets/baremetal/sites/villeneuve-d-ascq/etc/containers/systemd/configs/odoo-config.env similarity index 100% rename from flightctl/scenario3a/sites/villeneuve-d-ascq/etc/containers/systemd/configs/odoo-config.env rename to flightctl/fleets/baremetal/sites/villeneuve-d-ascq/etc/containers/systemd/configs/odoo-config.env diff --git a/flightctl/scenario3a/sites/default/etc/motd.d/unconfigured b/flightctl/fleets/virtualmachines/sites/default/etc/motd.d/unconfigured similarity index 100% rename from flightctl/scenario3a/sites/default/etc/motd.d/unconfigured rename to flightctl/fleets/virtualmachines/sites/default/etc/motd.d/unconfigured diff --git a/flightctl/fleets/virtualmachines/sites/paris-wagram/etc/containers/systemd/configs/nextcloud-config.env b/flightctl/fleets/virtualmachines/sites/paris-wagram/etc/containers/systemd/configs/nextcloud-config.env new file mode 100644 index 0000000..32c81ad --- /dev/null +++ b/flightctl/fleets/virtualmachines/sites/paris-wagram/etc/containers/systemd/configs/nextcloud-config.env @@ -0,0 +1,16 @@ +## +## Nextcloud Configuration Environment Variables +## + +# Nextcloud domain configuration +NEXTCLOUD_TRUSTED_DOMAINS=optiplex-7000.itix.fr +OVERWRITEHOST=optiplex-7000.itix.fr +OVERWRITEPROTOCOL=http +OVERWRITECLIURL=http://optiplex-7000.itix.fr + +# Nextcloud admin credentials +NEXTCLOUD_ADMIN_USER=admin +NEXTCLOUD_ADMIN_PASSWORD=nextcloud + +# Nextcloud server info token +NEXTCLOUD_SERVERINFO_TOKEN=S3cr3t! diff --git a/flightctl/fleets/virtualmachines/sites/villeneuve-d-ascq/etc/containers/systemd/configs/nextcloud-config.env b/flightctl/fleets/virtualmachines/sites/villeneuve-d-ascq/etc/containers/systemd/configs/nextcloud-config.env new file mode 100644 index 0000000..eca8888 --- /dev/null +++ b/flightctl/fleets/virtualmachines/sites/villeneuve-d-ascq/etc/containers/systemd/configs/nextcloud-config.env @@ -0,0 +1,16 @@ +## +## Nextcloud Configuration Environment Variables +## + +# Nextcloud domain configuration +NEXTCLOUD_TRUSTED_DOMAINS=adlink-dlap-4001.itix.fr +OVERWRITEHOST=adlink-dlap-4001.itix.fr +OVERWRITEPROTOCOL=http +OVERWRITECLIURL=http://adlink-dlap-4001.itix.fr + +# Nextcloud admin credentials +NEXTCLOUD_ADMIN_USER=admin +NEXTCLOUD_ADMIN_PASSWORD=nextcloud + +# Nextcloud server info token +NEXTCLOUD_SERVERINFO_TOKEN=S3cr3t! diff --git a/flightctl/scenario4/sites/default/etc/motd.d/unconfigured b/flightctl/scenario4/sites/default/etc/motd.d/unconfigured deleted file mode 100644 index af8dfa1..0000000 --- a/flightctl/scenario4/sites/default/etc/motd.d/unconfigured +++ /dev/null @@ -1,6 +0,0 @@ - - -HEADS UP !!! - -This system is not configured ! - diff --git a/flightctl/scenario4/sites/paris-wagram/etc/containers/systemd/configs/odoo-config.env b/flightctl/scenario4/sites/paris-wagram/etc/containers/systemd/configs/odoo-config.env deleted file mode 100644 index b70e44c..0000000 --- a/flightctl/scenario4/sites/paris-wagram/etc/containers/systemd/configs/odoo-config.env +++ /dev/null @@ -1,4 +0,0 @@ -DATABASE=redhat -ADMIN_PASSWORD=R3dH4t! -RIBBON_COLOR=rgba(255,0,0,.6) -RIBBON_NAME=Paris Wagram
({db_name}) diff --git a/flightctl/scenario4/sites/villeneuve-d-ascq/etc/containers/systemd/configs/odoo-config.env b/flightctl/scenario4/sites/villeneuve-d-ascq/etc/containers/systemd/configs/odoo-config.env deleted file mode 100644 index efa44bf..0000000 --- a/flightctl/scenario4/sites/villeneuve-d-ascq/etc/containers/systemd/configs/odoo-config.env +++ /dev/null @@ -1,4 +0,0 @@ -DATABASE=redhat -ADMIN_PASSWORD=R3dH4t! -RIBBON_COLOR=rgba(0,0,255,.6) -RIBBON_NAME=Villeneuve d'Ascq
({db_name}) diff --git a/pxe-boot/install.sh b/pxe-boot/install.sh index c1c945d..42bcf7e 100755 --- a/pxe-boot/install.sh +++ b/pxe-boot/install.sh @@ -42,26 +42,20 @@ function install_directories() { done } - - # This function templates a kickstart file by replacing placeholders with actual values. # The templates are located in the www/ks directory. # The output files are written to /var/www/ks. # The placeholders are in the format expected by envsubst. -# For each template file, eight versions are created: base + scenario{1,2,3a,3b,4,5,6}. -# The output files are named as /var/www/ks/