Fix agent state get init (#643)

This commit is contained in:
Itxaka 2024-01-31 13:11:16 +01:00 committed by GitHub
parent 3cce86e58f
commit 9fd7387342
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 47 additions and 31 deletions

View File

@ -1,4 +1,4 @@
packages: packages:
- name: "kairos-overlay-files" - name: "kairos-overlay-files"
category: "static" category: "static"
version: "1.1.24" version: "1.1.25"

View File

@ -1,11 +1,11 @@
name: "Start agent" name: "Start agent"
stages: stages:
boot: boot:
- if: '[ ! -f "/run/cos/recovery_mode" ] && [ "$(kairos-agent state get kairos.init)" == "systemd" ]' - if: '[ ! -f "/run/cos/recovery_mode" ] && [ -d "/usr/share/systemd" ]'
commands: commands:
- systemctl start kairos-agent - systemctl start kairos-agent
- systemctl enable kairos-agent - systemctl enable kairos-agent
initramfs: initramfs:
- if: '[ ! -f "/run/cos/recovery_mode" ] && [ "$(kairos-agent state get kairos.init)" == "systemd" ]' - if: '[ ! -f "/run/cos/recovery_mode" ] && [ -d "/usr/share/systemd" ]'
commands: commands:
- systemctl enable kairos-agent - systemctl enable kairos-agent

View File

@ -2,7 +2,7 @@ name: "Default network configuration"
stages: stages:
rootfs.before: rootfs.before:
- name: "Enable systemd-network config files for DHCP" # Needed if systemd-networkd runs in the initramfs! - name: "Enable systemd-network config files for DHCP" # Needed if systemd-networkd runs in the initramfs!
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
directories: directories:
- path: "/etc/systemd/network/" # doesnt exist on initramfs - path: "/etc/systemd/network/" # doesnt exist on initramfs
permissions: 0775 permissions: 0775
@ -35,7 +35,7 @@ stages:
- networkctl reload # make sure it reloads our config files - networkctl reload # make sure it reloads our config files
initramfs: initramfs:
- name: "Enable systemd-network config files for DHCP" - name: "Enable systemd-network config files for DHCP"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
files: files:
- path: /etc/systemd/network/20-dhcp.network - path: /etc/systemd/network/20-dhcp.network
permissions: 0644 permissions: 0644
@ -62,30 +62,30 @@ stages:
commands: commands:
- networkctl reload # make sure it reloads our config files - networkctl reload # make sure it reloads our config files
- name: "Disable NetworkManager and wicked" - name: "Disable NetworkManager and wicked"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
systemctl: systemctl:
disable: disable:
- NetworkManager - NetworkManager
- wicked - wicked
- name: "Enable systemd-network and systemd-resolved" - name: "Enable systemd-network and systemd-resolved"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
systemctl: systemctl:
enable: enable:
- systemd-networkd - systemd-networkd
- systemd-resolved - systemd-resolved
- name: "Link /etc/resolv.conf to systemd resolv.conf" - name: "Link /etc/resolv.conf to systemd resolv.conf"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ] && [ -f /etc/hosts ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] && [ -f /etc/hosts ]'
commands: commands:
- rm /etc/resolv.conf - rm /etc/resolv.conf
- ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf - ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
boot: boot:
- name: "Reload systemd-networkd config" - name: "Reload systemd-networkd config"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
commands: commands:
- networkctl reload # make sure it reloads our config files - networkctl reload # make sure it reloads our config files
fs: fs:
- name: "Reload systemd-networkd config" - name: "Reload systemd-networkd config"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
commands: commands:
- networkctl reload # make sure it reloads our config files - networkctl reload # make sure it reloads our config files
# dns: # dns:

View File

@ -3,7 +3,7 @@ stages:
initramfs: initramfs:
- name: "Create OpenRC services" - name: "Create OpenRC services"
if: | if: |
[ "$(kairos-agent state get kairos.init)" == "openrc" ] [ -f "/sbin/openrc" ]
files: files:
- path: /etc/init.d/cos-setup-boot - path: /etc/init.d/cos-setup-boot
permissions: 0755 permissions: 0755
@ -118,7 +118,7 @@ stages:
group: 0 group: 0
- name: "Enable OpenRC services" - name: "Enable OpenRC services"
if: | if: |
[ "$(kairos-agent state get kairos.init)" == "openrc" ] [ -f "/sbin/openrc" ]
commands: commands:
- mkdir -p /etc/runlevels/default - mkdir -p /etc/runlevels/default
- ln -sf ../../init.d/cos-setup-boot /etc/runlevels/default/cos-setup-boot - ln -sf ../../init.d/cos-setup-boot /etc/runlevels/default/cos-setup-boot

View File

@ -13,7 +13,7 @@ stages:
fs.inotify.max_user_watches: 524288 fs.inotify.max_user_watches: 524288
initramfs: initramfs:
- name: "Default systemd config" - name: "Default systemd config"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
systemctl: systemctl:
enable: enable:
- multi-user.target - multi-user.target
@ -34,7 +34,7 @@ stages:
commands: commands:
- ssh-keygen -A - ssh-keygen -A
- name: "Create systemd services" - name: "Create systemd services"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
files: files:
- path: /etc/systemd/system/cos-setup-boot.service - path: /etc/systemd/system/cos-setup-boot.service
permissions: 0644 permissions: 0644
@ -123,7 +123,7 @@ stages:
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
- name: "Enable systemd services" - name: "Enable systemd services"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
commands: commands:
- ln -sf /etc/systemd/system/cos-setup-reconcile.timer /etc/systemd/system/multi-user.target.wants/cos-setup-reconcile.timer - ln -sf /etc/systemd/system/cos-setup-reconcile.timer /etc/systemd/system/multi-user.target.wants/cos-setup-reconcile.timer
- ln -sf /etc/systemd/system/cos-setup-fs.service /etc/systemd/system/sysinit.target.wants/cos-setup-fs.service - ln -sf /etc/systemd/system/cos-setup-fs.service /etc/systemd/system/sysinit.target.wants/cos-setup-fs.service

View File

@ -52,7 +52,7 @@ stages:
# Run this in the after stage so it doesnt collide with other initramfs changes to the /etc/inittab # Run this in the after stage so it doesnt collide with other initramfs changes to the /etc/inittab
# Otherwise this can lead to 2 steps modifying the inittab at the same time and overriding or not cleaning it properly # Otherwise this can lead to 2 steps modifying the inittab at the same time and overriding or not cleaning it properly
- name: "Enable serial login for alpine" # https://wiki.alpinelinux.org/wiki/Enable_Serial_Console_on_Boot - name: "Enable serial login for alpine" # https://wiki.alpinelinux.org/wiki/Enable_Serial_Console_on_Boot
if: '[ "$(kairos-agent state get kairos.init)" == "openrc" ]' if: '[ -e /sbin/openrc ]'
commands: commands:
- sed -i -e 's/ttyS0.*//g' /etc/inittab - sed -i -e 's/ttyS0.*//g' /etc/inittab
- echo "ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100" >> /etc/inittab - echo "ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100" >> /etc/inittab

View File

@ -2,7 +2,7 @@ name: "sysext"
stages: stages:
fs.after: fs.after:
- name: "Default sysext extensions dirs" - name: "Default sysext extensions dirs"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
directories: directories:
- path: /etc/extensions - path: /etc/extensions
- path: /run/extensions - path: /run/extensions
@ -11,7 +11,7 @@ stages:
- path: /usr/local/lib/extensions - path: /usr/local/lib/extensions
initramfs: initramfs:
- name: "systemd-sysext initramfs settings" - name: "systemd-sysext initramfs settings"
if: '[ "$(kairos-agent state get kairos.init)" == "systemd" ]' if: '[ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ]'
systemctl: systemctl:
enable: enable:
- systemd-sysext - systemd-sysext

View File

@ -4,7 +4,8 @@ stages:
# TODO: Drop interactive-install keyword in Kairos 4.0.0 # TODO: Drop interactive-install keyword in Kairos 4.0.0
- if: | - if: |
(grep -qv "interactive-install" /proc/cmdline || grep -qv "install-mode-interactive" /proc/cmdline ) && \ (grep -qv "interactive-install" /proc/cmdline || grep -qv "install-mode-interactive" /proc/cmdline ) && \
[ -f /run/cos/live_mode ] || [ -f /run/cos/uki_install_mode ] && [ "$(kairos-agent state get kairos.init)" == "systemd" ] [ -f /run/cos/live_mode ] || [ -f /run/cos/uki_install_mode ] && \
( [ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] )
files: files:
- path: /etc/systemd/system/serial-getty@ttyS0.service.d/override.conf - path: /etc/systemd/system/serial-getty@ttyS0.service.d/override.conf
content: | content: |
@ -23,7 +24,7 @@ stages:
if: | if: |
(grep -qv "interactive-install" /proc/cmdline || grep -qv "install-mode-interactive" /proc/cmdline) && \ (grep -qv "interactive-install" /proc/cmdline || grep -qv "install-mode-interactive" /proc/cmdline) && \
[ -f /run/cos/live_mode ] && \ [ -f /run/cos/live_mode ] && \
[ "$(kairos-agent state get kairos.init)" == "openrc" ] [ -f "/sbin/openrc" ]
files: files:
- path: /etc/motd - path: /etc/motd
content: | content: |

View File

@ -1,6 +1,6 @@
stages: stages:
initramfs.before: initramfs.before:
- name: "Blacklist bpfilter on Alpine ( bug: https://github.com/kairos-io/kairos/issues/277 )" - name: "Blacklist bpfilter on Alpine ( bug: https://github.com/kairos-io/kairos/issues/277 )"
if: '[ "$(kairos-agent state get kairos.init)" == "openrc" ]' if: '[ -e /sbin/openrc ]'
commands: commands:
- echo "install bpfilter /bin/false" > /etc/modprobe.d/blacklist_bpfilter.conf - echo "install bpfilter /bin/false" > /etc/modprobe.d/blacklist_bpfilter.conf

View File

@ -3,14 +3,15 @@ stages:
initramfs: initramfs:
- name: "Starts kairos-recovery and generate a temporary pass" - name: "Starts kairos-recovery and generate a temporary pass"
if: | if: |
grep -q "kairos.remote_recovery_mode" /proc/cmdline && [ "$(kairos-agent state get kairos.init)" == "systemd" ] grep -q "kairos.remote_recovery_mode" /proc/cmdline && \
( [ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] )
commands: commands:
- systemctl disable getty@tty1 - systemctl disable getty@tty1
- systemctl stop getty@tty1 - systemctl stop getty@tty1
- systemctl mask getty@tty1 - systemctl mask getty@tty1
- systemctl enable kairos-recovery - systemctl enable kairos-recovery
- name: "Starts kairos-recovery for openRC based systems" - name: "Starts kairos-recovery for openRC based systems"
if: grep -q "kairos.remote_recovery_mode" /proc/cmdline && [ "$(kairos-agent state get kairos.init)" == "openrc" ] if: grep -q "kairos.remote_recovery_mode" /proc/cmdline && [ -f "/sbin/openrc" ]
commands: commands:
- sed -i -e 's/tty1.*//g' /etc/inittab - sed -i -e 's/tty1.*//g' /etc/inittab
- echo "tty1::respawn:/usr/bin/kairos-agent recovery tty1" >> /etc/inittab - echo "tty1::respawn:/usr/bin/kairos-agent recovery tty1" >> /etc/inittab

View File

@ -3,14 +3,15 @@ stages:
initramfs: initramfs:
- name: "Starts kairos-reset for systemd based systems" - name: "Starts kairos-reset for systemd based systems"
if: | if: |
grep -q "kairos.reset" /proc/cmdline && [ "$(kairos-agent state get kairos.init)" == "systemd" ] grep -q "kairos.reset" /proc/cmdline && \
( [ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] )
commands: commands:
- systemctl disable getty@tty1 - systemctl disable getty@tty1
- systemctl stop getty@tty1 - systemctl stop getty@tty1
- systemctl mask getty@tty1 - systemctl mask getty@tty1
- systemctl enable kairos-reset - systemctl enable kairos-reset
- name: "Starts kairos-reset for openRC-based systems" - name: "Starts kairos-reset for openRC-based systems"
if: grep -q "kairos.reset" /proc/cmdline && [ "$(kairos-agent state get kairos.init)" == "openrc" ] if: grep -q "kairos.reset" /proc/cmdline && [ -f "/sbin/openrc" ]
commands: commands:
- sed -i -e 's/tty1.*//g' /etc/inittab - sed -i -e 's/tty1.*//g' /etc/inittab
- echo "tty1::respawn:/usr/bin/kairos-agent reset tty1" >> /etc/inittab - echo "tty1::respawn:/usr/bin/kairos-agent reset tty1" >> /etc/inittab

View File

@ -5,7 +5,10 @@ stages:
# and we dont want to trigger both # and we dont want to trigger both
# Works in livecd or uki install mode # Works in livecd or uki install mode
# TODO: Drop nodepair.enable keyword in Kairos 4.0.0 # TODO: Drop nodepair.enable keyword in Kairos 4.0.0
- if: (grep -q "install-mode" /proc/cmdline || grep -q "nodepair.enable" /proc/cmdline ) && grep -vq "install-mode-interactive" && ([ "$(kairos-agent state get boot)" == "livecd_boot" ] || [ -f /run/cos/uki_install_mode ]) && [ "$(kairos-agent state get kairos.init)" == "systemd" ] - if: |
(grep -q "install-mode" /proc/cmdline || grep -q "nodepair.enable" /proc/cmdline ) && \
([ -f /run/cos/live_mode ] || [ -f /run/cos/uki_install_mode ]) && \
( [ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] )
commands: commands:
- systemctl disable getty@tty1 - systemctl disable getty@tty1
- systemctl stop getty@tty1 - systemctl stop getty@tty1
@ -14,14 +17,19 @@ stages:
- systemctl enable kairos-webui - systemctl enable kairos-webui
# Starts installer on boot for openRC based systems # Starts installer on boot for openRC based systems
# TODO: Drop nodepair.enable keyword in Kairos 4.0.0 # TODO: Drop nodepair.enable keyword in Kairos 4.0.0
- if: (grep -q "install-mode" /proc/cmdline || grep -q "nodepair.enable" /proc/cmdline ) && grep -vq "install-mode-interactive" && [ "$(kairos-agent state get kairos.init)" == "openrc" ] - if: |
(grep -q "install-mode" /proc/cmdline || grep -q "nodepair.enable" /proc/cmdline ) && \
([ -f /run/cos/live_mode ] || [ -f /run/cos/uki_install_mode ]) && \
[ -f "/sbin/openrc" ]
commands: commands:
- sed -i -e 's/tty1.*//g' /etc/inittab - sed -i -e 's/tty1.*//g' /etc/inittab
- echo "tty1::respawn:/usr/bin/kairos-agent install tty1" >> /etc/inittab - echo "tty1::respawn:/usr/bin/kairos-agent install tty1" >> /etc/inittab
# Starts interactive installer on boot for systemd based systems in livecd or uki install mode # Starts interactive installer on boot for systemd based systems in livecd or uki install mode
# TODO: Drop interactive-install keyword in Kairos 4.0.0 # TODO: Drop interactive-install keyword in Kairos 4.0.0
- if: | - if: |
(grep -q "interactive-install" /proc/cmdline || grep -q "install-mode-interactive" /proc/cmdline) && ([ "$(kairos-agent state get boot)" == "livecd_boot" ] || [ -f /run/cos/uki_install_mode ]) && [ "$(kairos-agent state get kairos.init)" == "systemd" ] (grep -q "interactive-install" /proc/cmdline || grep -q "install-mode-interactive" /proc/cmdline) && \
([ -f /run/cos/live_mode ] || [ -f /run/cos/uki_install_mode ]) && \
( [ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] )
commands: commands:
- systemctl stop kairos - systemctl stop kairos
- systemctl disable kairos - systemctl disable kairos
@ -31,16 +39,21 @@ stages:
- systemctl enable kairos-interactive - systemctl enable kairos-interactive
# Starts installer on boot for openRC based systems # Starts installer on boot for openRC based systems
# TODO: Drop interactive-install keyword in Kairos 4.0.0 # TODO: Drop interactive-install keyword in Kairos 4.0.0
- if: (grep -q "interactive-install" /proc/cmdline || grep -q "install-mode-interactive" /proc/cmdline) && [ "$(kairos-agent state get kairos.init)" == "openrc" ] - if: |
(grep -q "interactive-install" /proc/cmdline || grep -q "install-mode-interactive" /proc/cmdline) && \
([ -f /run/cos/live_mode ] || [ -f /run/cos/uki_install_mode ]) && \
[ -f "/sbin/openrc" ]
commands: commands:
- sed -i -e 's/tty1.*//g' /etc/inittab - sed -i -e 's/tty1.*//g' /etc/inittab
- echo "tty1::respawn:/usr/bin/kairos-agent interactive-install --shell tty1" >> /etc/inittab - echo "tty1::respawn:/usr/bin/kairos-agent interactive-install --shell tty1" >> /etc/inittab
boot: boot:
- if: | - if: |
[ "$(kairos-agent state get boot)" == "livecd_boot" ] && [ "$(kairos-agent state get kairos.init)" == "openrc" ] ([ -f /run/cos/live_mode ] || [ -f /run/cos/uki_install_mode ]) && \
[ -f "/sbin/openrc" ]
commands: commands:
- rc-service kairos-webui start - rc-service kairos-webui start
- if: | - if: |
([ "$(kairos-agent state get boot)" == "livecd_boot" ] || [ -f /run/cos/uki_install_mode ]) && [ "$(kairos-agent state get kairos.init)" == "systemd" ] ([ -f /run/cos/live_mode ] || [ -f /run/cos/uki_install_mode ]) && \
( [ -e "/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] || [ -e "/usr/sbin/systemctl" ] || [ -e "/usr/bin/systemctl" ] )
commands: commands:
- systemctl start kairos-webui - systemctl start kairos-webui