From 6756cfa6b5982286471a50ef8418b50b4019a229 Mon Sep 17 00:00:00 2001 From: LinuxSquare Date: Sat, 24 Aug 2024 00:04:35 +0200 Subject: [PATCH] Convert salt to ansible --- airootfs/etc/salt/minion.d/noveria.conf | 5 -- airootfs/root/install.sh | 92 +++++++++---------------- packages.x86_64 | 2 +- profiledef.sh | 4 +- 4 files changed, 34 insertions(+), 69 deletions(-) delete mode 100644 airootfs/etc/salt/minion.d/noveria.conf diff --git a/airootfs/etc/salt/minion.d/noveria.conf b/airootfs/etc/salt/minion.d/noveria.conf deleted file mode 100644 index dd0a295..0000000 --- a/airootfs/etc/salt/minion.d/noveria.conf +++ /dev/null @@ -1,5 +0,0 @@ -state_verbose: False -file_client: local -file_roots: - base: - - /srv/salt diff --git a/airootfs/root/install.sh b/airootfs/root/install.sh index 5aee735..25b29d4 100644 --- a/airootfs/root/install.sh +++ b/airootfs/root/install.sh @@ -22,10 +22,8 @@ readonly INSTALLATION_ESP_PARTITION_SIZE=4 readonly INSTALLATION_MOUNTPOINT='/mnt' readonly INSTALLATION_NOVERIA_BIN='/usr/local/noveria/bin' readonly INSTALLATION_SECRETS_FILE="/root/installation.secrets" -readonly INSTALLATION_SALT_ROOT="srv/salt" -readonly INSTALLATION_SALT_GIT="https://git.noveria.org/Novos/salt-statetree.git" -readonly INSTALLATION_PILLAR_ROOT="srv/pillar" -readonly INSTALLATION_PILLAR_GIT="https://git.noveria.org/Novos/salt-pillartree.git" +readonly INSTALLATION_ANSIBLE_ROOT="srv/ansible" +readonly INSTALLATION_ANSIBLE_GIT="https://git.noveria.org/Novos/ansible-playbooks.git" readonly INSTALLATION_ALPINE_VERSION=$(cat /etc/os-release | grep VERSION_ID | cut -d= -f2) # Colors @@ -148,8 +146,8 @@ function preChecks() { function introDialogue() { local introtext="\n\n\n Velkommen til - _ _ _ - | \ | | _____ _____ _ __(_) __ _ + _ _ _ + | \ | | _____ _____ _ __(_) __ _ | \| |/ _ \ \ / / _ \ '__| |/ _ | | |\ | (_) \ V / __/ | | | (_| | |_| \_|\___/ \_/ \___|_| |_|\__,_| @@ -157,7 +155,7 @@ function introDialogue() { OS: Novos Version: $(date "+%Y%m") IP: $(ifconfig eth0 | grep "inet addr" | awk '{$1=$1};1' | awk '{print $2}' | cut -d: -f2) - + How do you want to continue? " dialog --stdout --clear --cr-wrap --no-collapse --yes-label "Graphical Guide" --no-label "Alpine shell" --yesno "$introtext" 31 93 @@ -259,7 +257,7 @@ Disk: $INSTALLATION_DISK function installation() { # clear display clear - + # lock file touch "$INSTALLATION_LOCK_FILE" || installationFailed @@ -323,7 +321,7 @@ function installation() { installationSubtaskTitle "Mount ESP" mount -o nodev,nosuid,noexec "${ESP_PARTITION}" "${INSTALLATION_MOUNTPOINT}/efi" || installationFailed - + echo "" echo "┌──────────────────────────────────────────┐" echo "│ Install and configure OS │" @@ -342,7 +340,7 @@ function installation() { installationSubtaskTitle "Setup PATH" chroot "${INSTALLATION_MOUNTPOINT}" /bin/ash -c "export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'" || installationFailed - + installationSubtaskTitle "Mount extra mounts for chroot" mount -t proc /proc "${INSTALLATION_MOUNTPOINT}/proc" || installationFailed mount -t sysfs /sys "${INSTALLATION_MOUNTPOINT}/sys" || installationFailed @@ -353,16 +351,16 @@ function installation() { installationSubtaskTitle "Install base-packages" chroot "${INSTALLATION_MOUNTPOINT}" /bin/ash -c "apk add alpine-base --no-cache" || installationFailed - + installationSubtaskTitle "Overwrite default repositories" cp /etc/apk/repositories "${INSTALLATION_MOUNTPOINT}/etc/apk/repositories" || installationFailed - installationSubtaskTitle "Install SaltStack" - chroot "${INSTALLATION_MOUNTPOINT}" /bin/ash -c "apk add salt-minion envsubst" || installationFailed + installationSubtaskTitle "Install Ansible" + chroot "${INSTALLATION_MOUNTPOINT}" /bin/ash -c "apk add ansible envsubst" || installationFailed installationSubtaskTitle "Setup keymap" chroot "${INSTALLATION_MOUNTPOINT}" /bin/ash -c "setup-keymap ch ch" || installationFailed - + installationSubtaskTitle "Setting localtime to Europe/Zurich" chroot "${INSTALLATION_MOUNTPOINT}" /bin/ash -c "setup-timezone Europe/Zurich" || installationFailed @@ -386,65 +384,37 @@ function installation() { echo "" echo "┌──────────────────────────────────────────┐" - echo "│ Configure SaltStack and highstate │" + echo "│ Configure Ansible and playbook-run │" echo "└──────────────────────────────────────────┘" - installationSubtaskTitle "Clone Salt-Repo" - mkdir -p ${INSTALLATION_MOUNTPOINT}/${INSTALLATION_SALT_ROOT} - git clone ${INSTALLATION_SALT_GIT} ${INSTALLATION_MOUNTPOINT}/${INSTALLATION_SALT_ROOT} + installationSubtaskTitle "Clone Playbook-repo" + mkdir -p ${INSTALLATION_MOUNTPOINT}/${INSTALLATION_ANSIBLE_ROOT}/playbooks + git clone ${INSTALLATION_ANSIBLE_GIT} ${INSTALLATION_MOUNTPOINT}/${INSTALLATION_ANSIBLE_ROOT}/playbooks - cat >"${INSTALLATION_MOUNTPOINT}/etc/salt/minion" <"${INSTALLATION_MOUNTPOINT}/etc/ansible/ansible.cfg" <"${INSTALLATION_MOUNTPOINT}/etc/salt/grains" <"${INSTALLATION_MOUNTPOINT}/${INSTALLATION_ANSIBLE_ROOT}/inventory.yml" <"${INSTALLATION_MOUNTPOINT}/${INSTALLATION_SALT_ROOT}/serverspecific.sls" <> "${INSTALLATION_MOUNTPOINT}/${INSTALLATION_SALT_ROOT}/serverspecific.sls" - done - - installationSubtaskTitle "Populate Pillars" - mkdir -p ${INSTALLATION_MOUNTPOINT}/${INSTALLATION_PILLAR_ROOT} - #git clone ${INSTALLATION_PILLAR_GIT} ${INSTALLATION_MOUNTPOINT}/${INSTALLATION_PILLAR_ROOT} - cat >"${INSTALLATION_MOUNTPOINT}/${INSTALLATION_PILLAR_ROOT}/top.sls" << EOT -base: - '*': -EOT - for state in $(find ${INSTALLATION_MOUNTPOINT}/${INSTALLATION_SALT_ROOT} -mindepth 1 -maxdepth 1 -not -path '*/.*' -type d -exec basename {} \;); do - mkdir -p ${INSTALLATION_MOUNTPOINT}/${INSTALLATION_PILLAR_ROOT}/${state} - touch ${INSTALLATION_MOUNTPOINT}/${INSTALLATION_PILLAR_ROOT}/${state}/init.sls - echo -e " - $state" >> ${INSTALLATION_MOUNTPOINT}/${INSTALLATION_PILLAR_ROOT}/top.sls - done - - cat >"${INSTALLATION_MOUNTPOINT}/${INSTALLATION_PILLAR_ROOT}/system/init.sls" << EOT -system.disks.timestamp: ${START_TIMESTAMP} -system.disks.tmpfs.size: 4G -EOT - - installationSubtaskTitle "Salt highstate" - chroot "${INSTALLATION_MOUNTPOINT}" /bin/ash -c "salt-call state.highstate" || installationFailed + installationSubtaskTitle "Execute Ansible playbooks" + chroot "${INSTALLATION_MOUNTPOINT}" /bin/ash -c "ansible-playbook /${INSTALLATION_ANSIBLE_ROOT}/playbooks/top.ansible.yml" || installationFailed echo "" echo "┌──────────────────────────────────────────┐" echo "│ Boot │" echo "└──────────────────────────────────────────┘" - + installationSubtaskTitle "Make EFI boot image with mkinitfs" latest_kernel="$(chroot $INSTALLATION_MOUNTPOINT /bin/ash -c 'echo $(apk search linux-lts | head -n1 | cut -d- -f3- | sed "s|r||")-lts')" chroot "${INSTALLATION_MOUNTPOINT}" /bin/ash -c "mkinitfs $latest_kernel" || installationFailed diff --git a/packages.x86_64 b/packages.x86_64 index 4130b0f..7c6d100 100755 --- a/packages.x86_64 +++ b/packages.x86_64 @@ -1,6 +1,6 @@ linux-lts linux-firmware-none -salt-minion +ansible zsh vim btrfs-progs diff --git a/profiledef.sh b/profiledef.sh index fd7c2e4..47d1dae 100644 --- a/profiledef.sh +++ b/profiledef.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash # shellcheck disable=SC2034 -iso_name="novos" -iso_label="NOVOS_$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m%d)" +iso_name="novos-ansible" +iso_label="NOVOS_$(date --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m%d)-ANSIBLE" iso_publisher="Noveria Network " iso_application="Alpine-Linux Based Server OS for Noveria" iso_version="v3.20"