diff --git a/roles/bootstrap/tasks/alpine.yml b/roles/bootstrap/tasks/alpine.yml index 2e417bc..5964ce4 100644 --- a/roles/bootstrap/tasks/alpine.yml +++ b/roles/bootstrap/tasks/alpine.yml @@ -1,21 +1,25 @@ --- - name: Bootstrap Alpine Linux vars: - bootstrap_alpine_packages: >- + _config: "{{ lookup('vars', bootstrap_var_key) }}" + _base_packages: "{{ _config.base | join(' ') }}" + _extra_packages: >- {{ - lookup('vars', bootstrap_var_key) | reject('equalto', '') | join(' ') + ((_config.extra | default([])) + (_config.conditional | default([]))) + | reject('equalto', '') + | join(' ') }} block: - - name: Install Alpine Linux packages + - name: Install Alpine Linux base ansible.builtin.command: > - apk --root /mnt --no-cache add alpine-base + apk --root /mnt --no-cache add {{ _base_packages }} register: bootstrap_alpine_bootstrap_result changed_when: bootstrap_alpine_bootstrap_result.rc == 0 - name: Install extra packages - when: bootstrap_alpine_packages | length > 0 + when: _extra_packages | trim | length > 0 ansible.builtin.command: > - apk --root /mnt add {{ bootstrap_alpine_packages }} + apk --root /mnt add {{ _extra_packages }} register: bootstrap_alpine_extra_result changed_when: bootstrap_alpine_extra_result.rc == 0 diff --git a/roles/bootstrap/tasks/archlinux.yml b/roles/bootstrap/tasks/archlinux.yml index 7e9a49d..fd79524 100644 --- a/roles/bootstrap/tasks/archlinux.yml +++ b/roles/bootstrap/tasks/archlinux.yml @@ -1,11 +1,14 @@ --- - name: Bootstrap ArchLinux vars: + _config: "{{ lookup('vars', bootstrap_var_key) }}" bootstrap_archlinux_packages: >- {{ - lookup('vars', bootstrap_var_key) + ((_config.base | default([])) + (_config.conditional | default([]))) + | reject('equalto', '') + | list }} ansible.builtin.command: >- - pacstrap /mnt {{ bootstrap_archlinux_packages | reject('equalto', '') | join(' ') }} --asexplicit + pacstrap /mnt {{ bootstrap_archlinux_packages | join(' ') }} --asexplicit register: bootstrap_result changed_when: bootstrap_result.rc == 0 diff --git a/roles/bootstrap/tasks/debian.yml b/roles/bootstrap/tasks/debian.yml index d6eaf2c..60272a7 100644 --- a/roles/bootstrap/tasks/debian.yml +++ b/roles/bootstrap/tasks/debian.yml @@ -10,53 +10,33 @@ else 'sid' if (os_version | string) == 'unstable' else 'trixie' }} - bootstrap_debian_package_config: >- - {{ - lookup('vars', bootstrap_var_key) - }} - bootstrap_debian_base_packages: >- - {{ - bootstrap_debian_package_config.base - | default([]) - | reject('equalto', '') - | list - }} - bootstrap_debian_extra_packages: >- - {{ - bootstrap_debian_package_config.extra - | default([]) - | reject('equalto', '') - | list - }} - bootstrap_debian_base_csv: "{{ bootstrap_debian_base_packages | join(',') }}" + _config: "{{ lookup('vars', bootstrap_var_key) }}" + bootstrap_debian_base_csv: "{{ (['ca-certificates'] + _config.base) | unique | join(',') }}" bootstrap_debian_extra_args: >- {{ - bootstrap_debian_extra_packages + ((_config.extra | default([])) + (_config.conditional | default([]))) + | reject('equalto', '') | join(' ') }} block: - name: Validate Debian package configuration ansible.builtin.assert: that: - - bootstrap_debian_package_config is mapping - - bootstrap_debian_package_config.base is defined - - bootstrap_debian_package_config.base is sequence - - bootstrap_debian_package_config.base is not string - - bootstrap_debian_package_config.extra is defined - - bootstrap_debian_package_config.extra is sequence - - bootstrap_debian_package_config.extra is not string - fail_msg: "bootstrap package definition for {{ bootstrap_var_key }} must be a mapping with base/extra lists." + - _config is mapping + - _config.base is sequence + - _config.extra is sequence + fail_msg: "{{ bootstrap_var_key }} must be a dict with base/extra/conditional keys." quiet: true - name: Install Debian base system ansible.builtin.command: >- debootstrap --include={{ bootstrap_debian_base_csv }} - {{ bootstrap_debian_release }} /mnt http://deb.debian.org/debian/ + {{ bootstrap_debian_release }} /mnt https://deb.debian.org/debian/ register: bootstrap_debian_base_result changed_when: bootstrap_debian_base_result.rc == 0 - name: Install extra packages - when: bootstrap_debian_extra_packages | length > 0 + when: bootstrap_debian_extra_args | trim | length > 0 ansible.builtin.command: "{{ chroot_command }} apt install -y {{ bootstrap_debian_extra_args }}" register: bootstrap_debian_extra_result changed_when: bootstrap_debian_extra_result.rc == 0 diff --git a/roles/bootstrap/tasks/opensuse.yml b/roles/bootstrap/tasks/opensuse.yml index 1717b3f..19df423 100644 --- a/roles/bootstrap/tasks/opensuse.yml +++ b/roles/bootstrap/tasks/opensuse.yml @@ -1,21 +1,25 @@ --- - name: Bootstrap openSUSE vars: - bootstrap_opensuse_packages: >- + _config: "{{ lookup('vars', bootstrap_var_key) }}" + _base_patterns: "{{ _config.base | join(' ') }}" + _extra_packages: >- {{ - lookup('vars', bootstrap_var_key) | reject('equalto', '') | join(' ') + ((_config.extra | default([])) + (_config.conditional | default([]))) + | reject('equalto', '') + | join(' ') }} block: - - name: Install openSUSE base packages + - name: Install openSUSE base patterns ansible.builtin.command: > - zypper --root /mnt --non-interactive install -t pattern patterns-base-base + zypper --root /mnt --non-interactive install -t pattern {{ _base_patterns }} register: bootstrap_opensuse_base_result changed_when: bootstrap_opensuse_base_result.rc == 0 - - name: Install openSUSE extra packages - when: bootstrap_opensuse_packages | length > 0 + - name: Install extra packages + when: _extra_packages | trim | length > 0 ansible.builtin.command: > - zypper --root /mnt --non-interactive install {{ bootstrap_opensuse_packages }} + zypper --root /mnt --non-interactive install {{ _extra_packages }} register: bootstrap_opensuse_extra_result changed_when: bootstrap_opensuse_extra_result.rc == 0 diff --git a/roles/bootstrap/tasks/rhel.yml b/roles/bootstrap/tasks/rhel.yml index d0a77bf..a0189a2 100644 --- a/roles/bootstrap/tasks/rhel.yml +++ b/roles/bootstrap/tasks/rhel.yml @@ -1,12 +1,22 @@ --- - name: Bootstrap RHEL System + vars: + _rhel_config: "{{ lookup('vars', bootstrap_var_key) }}" + _rhel_repos: "{{ _rhel_config.repos | map('regex_replace', '^', '--repo=') | join(' ') }}" + _rhel_groups: "{{ _rhel_config.base | join(' ') }}" + _rhel_extra: >- + {{ + ((_rhel_config.extra | default([])) + (_rhel_config.conditional | default([]))) + | reject('equalto', '') + | join(' ') + }} block: - name: Install base packages in chroot environment ansible.builtin.command: >- - dnf --releasever={{ os_version_major }} --repo=rhel{{ os_version_major }}-baseos + dnf --releasever={{ os_version_major }} {{ _rhel_repos }} --installroot=/mnt --setopt=install_weak_deps=False --setopt=optional_metadata_types=filelists - groupinstall -y core base standard + groupinstall -y {{ _rhel_groups }} register: bootstrap_result changed_when: bootstrap_result.rc == 0 failed_when: @@ -40,15 +50,8 @@ remote_src: true - name: Install additional packages in chroot - vars: - bootstrap_rhel_extra: >- - {{ - lookup('vars', bootstrap_var_key) - | reject('equalto', '') - | join(' ') - }} ansible.builtin.command: >- {{ chroot_command }} dnf --releasever={{ os_version_major }} - --setopt=install_weak_deps=False install -y {{ bootstrap_rhel_extra }} + --setopt=install_weak_deps=False install -y {{ _rhel_extra }} register: bootstrap_result changed_when: bootstrap_result.rc == 0 diff --git a/roles/bootstrap/tasks/ubuntu.yml b/roles/bootstrap/tasks/ubuntu.yml index 0a78720..1456910 100644 --- a/roles/bootstrap/tasks/ubuntu.yml +++ b/roles/bootstrap/tasks/ubuntu.yml @@ -6,38 +6,22 @@ ubuntu: plucky ubuntu-lts: noble bootstrap_ubuntu_release: "{{ bootstrap_ubuntu_release_map[os] | default('noble') }}" - bootstrap_ubuntu_package_config: >- + _config: "{{ lookup('vars', bootstrap_var_key) }}" + bootstrap_ubuntu_base_csv: "{{ (['ca-certificates'] + _config.base) | unique | join(',') }}" + bootstrap_ubuntu_extra_args: >- {{ - lookup('vars', bootstrap_var_key) - }} - bootstrap_ubuntu_base_packages: >- - {{ - bootstrap_ubuntu_package_config.base - | default([]) + ((_config.extra | default([])) + (_config.conditional | default([]))) | reject('equalto', '') - | list + | join(' ') }} - bootstrap_ubuntu_extra_packages: >- - {{ - bootstrap_ubuntu_package_config.extra - | default([]) - | reject('equalto', '') - | list - }} - bootstrap_ubuntu_base_csv: "{{ bootstrap_ubuntu_base_packages | join(',') }}" - bootstrap_ubuntu_extra: "{{ bootstrap_ubuntu_extra_packages | join(' ') }}" block: - name: Validate Ubuntu package configuration ansible.builtin.assert: that: - - bootstrap_ubuntu_package_config is mapping - - bootstrap_ubuntu_package_config.base is defined - - bootstrap_ubuntu_package_config.base is sequence - - bootstrap_ubuntu_package_config.base is not string - - bootstrap_ubuntu_package_config.extra is defined - - bootstrap_ubuntu_package_config.extra is sequence - - bootstrap_ubuntu_package_config.extra is not string - fail_msg: "bootstrap package definition for {{ bootstrap_var_key }} must be a mapping with base/extra lists." + - _config is mapping + - _config.base is sequence + - _config.extra is sequence + fail_msg: "{{ bootstrap_var_key }} must be a dict with base/extra/conditional keys." quiet: true - name: Install Ubuntu base system @@ -46,7 +30,7 @@ --keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg --include={{ bootstrap_ubuntu_base_csv }} {{ bootstrap_ubuntu_release }} /mnt - http://archive.ubuntu.com/ubuntu/ + https://archive.ubuntu.com/ubuntu/ register: bootstrap_ubuntu_base_result changed_when: bootstrap_ubuntu_base_result.rc == 0 @@ -62,7 +46,7 @@ changed_when: bootstrap_ubuntu_update_result.rc == 0 - name: Install extra packages - when: bootstrap_ubuntu_extra_packages | length > 0 - ansible.builtin.command: "{{ chroot_command }} apt install -y {{ bootstrap_ubuntu_extra }}" + when: bootstrap_ubuntu_extra_args | trim | length > 0 + ansible.builtin.command: "{{ chroot_command }} apt install -y {{ bootstrap_ubuntu_extra_args }}" register: bootstrap_ubuntu_extra_result changed_when: bootstrap_ubuntu_extra_result.rc == 0 diff --git a/roles/bootstrap/tasks/void.yml b/roles/bootstrap/tasks/void.yml index f276e3c..89e94bb 100644 --- a/roles/bootstrap/tasks/void.yml +++ b/roles/bootstrap/tasks/void.yml @@ -1,21 +1,25 @@ --- - name: Bootstrap Void Linux vars: - bootstrap_void_packages: >- + _config: "{{ lookup('vars', bootstrap_var_key) }}" + _base_packages: "{{ _config.base | join(' ') }}" + _extra_packages: >- {{ - lookup('vars', bootstrap_var_key) | reject('equalto', '') | join(' ') + ((_config.extra | default([])) + (_config.conditional | default([]))) + | reject('equalto', '') + | join(' ') }} block: - - name: Install Void Linux base packages + - name: Install Void Linux base ansible.builtin.command: > - xbps-install -Sy -r /mnt -R https://repo-default.voidlinux.org/current void-repo-nonfree base-system + xbps-install -Sy -r /mnt -R https://repo-default.voidlinux.org/current {{ _base_packages }} register: bootstrap_void_base_result changed_when: bootstrap_void_base_result.rc == 0 - name: Install extra packages - when: bootstrap_void_packages | length > 0 + when: _extra_packages | trim | length > 0 ansible.builtin.command: > - xbps-install -Su -r /mnt {{ bootstrap_void_packages }} + xbps-install -Su -r /mnt {{ _extra_packages }} register: bootstrap_void_extra_result changed_when: bootstrap_void_extra_result.rc == 0 diff --git a/roles/bootstrap/vars/main.yml b/roles/bootstrap/vars/main.yml index 5910ab2..37764ee 100644 --- a/roles/bootstrap/vars/main.yml +++ b/roles/bootstrap/vars/main.yml @@ -1,6 +1,6 @@ --- -# Common feature-gated packages. Built as a clean list (no empty strings). -# Arch overrides nftables → iptables-nft; SSH package names vary per distro. +# Feature-gated packages shared across all distros. +# Arch has special nftables handling and composes this differently. bootstrap_common_conditional: >- {{ ( @@ -14,158 +14,374 @@ bootstrap_common_conditional: >- ) }} -bootstrap_rhel_base: >- - {{ - ['bind-utils', 'dhcp-client', 'efibootmgr', - 'glibc-langpack-de', 'glibc-langpack-en', 'lrzsz', - 'lvm2', 'mtr', 'ncurses-term', 'nfs-utils', - 'policycoreutils-python-utils', 'shim', 'tmux', 'vim', 'zstd'] - + bootstrap_common_conditional - }} +# --------------------------------------------------------------------------- +# Per-OS package definitions: base (rootfs/group install), extra (post-base), +# conditional (feature/version-gated, appended by task files). +# DNF-based distros also carry repos (dnf --repo) and use base as group names. +# --------------------------------------------------------------------------- -bootstrap_rhel_versioned: >- - {{ - ['grub2'] - + (['grub2-efi-x64'] if os_version_major | default('') == '8' else ['grub2-efi']) - + (['grub2-tools-extra'] if os_version_major | default('') in ['8', '9'] else []) - + (['python39'] if os_version_major | default('') == '8' else ['python']) - + (['kernel'] if os_version_major | default('') == '10' else []) - + (['zram-generator'] if os_version_major | default('') in ['9', '10'] else []) - }} +bootstrap_rhel: + repos: + - "rhel{{ os_version_major }}-baseos" + base: + - core + - base + - standard + extra: + - bind-utils + - dhcp-client + - efibootmgr + - glibc-langpack-de + - glibc-langpack-en + - grub2 + - lrzsz + - lvm2 + - mtr + - ncurses-term + - nfs-utils + - policycoreutils-python-utils + - shim + - tmux + - vim + - zstd + conditional: >- + {{ + (['grub2-efi-x64'] if os_version_major | default('') == '8' else ['grub2-efi']) + + (['grub2-tools-extra'] if os_version_major | default('') in ['8', '9'] else []) + + (['python39'] if os_version_major | default('') == '8' else ['python']) + + (['kernel'] if os_version_major | default('') == '10' else []) + + (['zram-generator'] if os_version_major | default('') in ['9', '10'] else []) + + bootstrap_common_conditional + }} -bootstrap_rhel: "{{ bootstrap_rhel_base + bootstrap_rhel_versioned }}" +bootstrap_almalinux: + repos: + - baseos + - appstream + base: + - core + extra: + - bind-utils + - dhcp-client + - efibootmgr + - glibc-langpack-de + - glibc-langpack-en + - grub2 + - grub2-efi + - lrzsz + - lvm2 + - mtr + - nc + - ncurses-term + - nfs-utils + - nfsv4-client-utils + - policycoreutils-python-utils + - ppp + - python3 + - shim + - tmux + - vim + - zram-generator + - zstd + conditional: >- + {{ + (['dbus-daemon'] if (os_version_major | default('10') | int) >= 9 else []) + + bootstrap_common_conditional + }} -bootstrap_almalinux: >- - {{ - bootstrap_rhel_base - + ['grub2', 'grub2-efi', - 'nfsv4-client-utils', 'nc', 'ppp', 'python3', 'zram-generator'] - + (['dbus-daemon'] if (os_version_major | default('10') | int) >= 9 else []) - }} +bootstrap_rocky: + repos: + - baseos + - appstream + base: + - core + extra: + - bind-utils + - dhcp-client + - efibootmgr + - glibc-langpack-de + - glibc-langpack-en + - grub2 + - grub2-efi + - lrzsz + - lvm2 + - mtr + - nc + - ncurses-term + - nfs-utils + - nfsv4-client-utils + - policycoreutils-python-utils + - ppp + - python3 + - shim + - telnet + - tmux + - util-linux-core + - vim + - wget + - zram-generator + - zstd + conditional: "{{ bootstrap_common_conditional }}" -bootstrap_rocky: >- - {{ - bootstrap_rhel_base - + ['grub2', 'grub2-efi', 'nfsv4-client-utils', 'nc', 'ppp', - 'python3', 'telnet', 'util-linux-core', 'wget', 'zram-generator'] - }} - -bootstrap_fedora: >- - {{ - ['bat', 'bind-utils', 'btrfs-progs', 'cronie', 'dhcp-client', - 'duf', 'efibootmgr', 'entr', 'fish', 'fzf', - 'glibc-langpack-de', 'glibc-langpack-en', 'grub2', 'grub2-efi', - 'htop', 'iperf3', 'logrotate', 'lrzsz', 'lvm2', - 'nc', 'nfs-utils', 'nfsv4-client-utils', 'polkit', 'ppp', - 'python3', 'ripgrep', 'shim', 'tmux', 'vim-default-editor', - 'wget', 'zoxide', 'zram-generator', 'zstd'] - + bootstrap_common_conditional - }} - -bootstrap_debian_base_common: >- - {{ - ['btrfs-progs', 'cron', 'gnupg', 'grub-efi', 'grub-efi-amd64-signed', - 'grub2-common', 'locales', 'logrotate', 'lvm2', 'python3', 'xfsprogs'] - + (['cryptsetup-initramfs'] if system_cfg.luks.enabled | bool else []) - + (['openssh-server'] if system_cfg.features.ssh.enabled | bool else []) - }} - -bootstrap_debian_extra_common: - - apparmor-utils - - bat - - chrony - - curl - - entr - - fish - - fzf - - htop - - jq - - libpam-pwquality - - lrzsz - - mtr - - ncdu - - net-tools - - network-manager - - python-is-python3 - - ripgrep - - rsync - - screen - - sudo - - syslog-ng - - tcpd - - vim - - wget - - zstd - -bootstrap_debian_extra_versioned: >- - {{ - ['linux-image-amd64'] - + (['duf'] if (os_version | string) not in ['10', '11'] else []) - + (['fastfetch'] if (os_version | string) in ['13', 'unstable'] else []) - + (['neofetch'] if (os_version | string) == '12' else []) - + (['software-properties-common'] if (os_version | string) not in ['13', 'unstable'] else []) - + (['systemd-zram-generator'] if (os_version | string) not in ['10', '11'] else []) - + (['tldr'] if (os_version | string) not in ['13', 'unstable'] else []) - }} +bootstrap_fedora: + repos: + - fedora + - fedora-updates + base: + - critical-path-base + - core + extra: + - bat + - bind-utils + - btrfs-progs + - cronie + - dhcp-client + - duf + - efibootmgr + - entr + - fish + - fzf + - glibc-langpack-de + - glibc-langpack-en + - grub2 + - grub2-efi + - htop + - iperf3 + - logrotate + - lrzsz + - lvm2 + - nc + - nfs-utils + - nfsv4-client-utils + - polkit + - ppp + - python3 + - ripgrep + - shim + - tmux + - vim-default-editor + - wget + - zoxide + - zram-generator + - zstd + conditional: "{{ bootstrap_common_conditional }}" bootstrap_debian: - base: "{{ bootstrap_debian_base_common }}" - extra: >- + base: + - btrfs-progs + - cron + - cryptsetup-initramfs + - gnupg + - grub-efi + - grub-efi-amd64-signed + - grub2-common + - locales + - logrotate + - lvm2 + - openssh-server + - python3 + - xfsprogs + extra: + - apparmor-utils + - bat + - chrony + - curl + - entr + - fish + - fzf + - htop + - jq + - libpam-pwquality + - linux-image-amd64 + - lrzsz + - mtr + - ncdu + - net-tools + - network-manager + - python-is-python3 + - ripgrep + - rsync + - screen + - sudo + - syslog-ng + - tcpd + - vim + - wget + - zstd + conditional: >- {{ - bootstrap_debian_extra_common - + bootstrap_debian_extra_versioned + (['duf'] if (os_version | string) not in ['10', '11'] else []) + + (['fastfetch'] if (os_version | string) in ['13', 'unstable'] else []) + + (['neofetch'] if (os_version | string) == '12' else []) + + (['software-properties-common'] if (os_version | string) not in ['13', 'unstable'] else []) + + (['systemd-zram-generator'] if (os_version | string) not in ['10', '11'] else []) + + (['tldr'] if (os_version | string) not in ['13', 'unstable'] else []) + bootstrap_common_conditional }} bootstrap_ubuntu: base: + - btrfs-progs + - cron + - cryptsetup-initramfs + - gnupg + - grub-efi + - grub-efi-amd64-signed + - grub2-common - initramfs-tools - linux-image-generic - extra: >- + - locales + - logrotate + - lvm2 + - openssh-server + - python3 + - xfsprogs + extra: + - apparmor-utils + - bash-completion + - bat + - chrony + - curl + - dnsutils + - duf + - entr + - eza + - fdupes + - fio + - fish + - fzf + - htop + - jq + - libpam-pwquality + - lrzsz + - mtr + - ncdu + - ncurses-term + - net-tools + - network-manager + - python-is-python3 + - ripgrep + - rsync + - screen + - software-properties-common + - sudo + - syslog-ng + - systemd-zram-generator + - tcpd + - tldr + - traceroute + - util-linux-extra + - vim + - wget + - yq + - zoxide + - zstd + conditional: "{{ bootstrap_common_conditional }}" + +bootstrap_archlinux: + base: + - base + - btrfs-progs + - cronie + - dhcpcd + - efibootmgr + - fastfetch + - fish + - fzf + - grub + - htop + - libpwquality + - linux + - logrotate + - lrzsz + - lsof + - lvm2 + - ncdu + - networkmanager + - nfs-utils + - ppp + - python + - reflector + - rsync + - sudo + - tldr + - tmux + - vim + - zram-generator + extra: [] + conditional: >- {{ - bootstrap_debian_base_common - + bootstrap_debian_extra_common - + ['bash-completion', 'dnsutils', 'duf', 'eza', 'fdupes', 'fio', - 'ncurses-term', 'software-properties-common', 'systemd-zram-generator', - 'tldr', 'traceroute', 'util-linux-extra', 'yq', 'zoxide'] + (['openssh'] if system_cfg.features.ssh.enabled | bool else []) + + (['iptables-nft'] if system_cfg.features.firewall.toolkit == 'nftables' and system_cfg.features.firewall.enabled | bool else []) + + (bootstrap_common_conditional | reject('equalto', 'nftables') | list) + }} + +bootstrap_alpine: + base: + - alpine-base + extra: + - btrfs-progs + - chrony + - curl + - e2fsprogs + - linux-lts + - logrotate + - lvm2 + - python3 + - rsync + - sudo + - util-linux + - vim + - xfsprogs + conditional: >- + {{ + (['openssh'] if system_cfg.features.ssh.enabled | bool else []) + bootstrap_common_conditional }} -bootstrap_archlinux: >- - {{ - ['base', 'btrfs-progs', 'cronie', 'dhcpcd', 'efibootmgr', 'fastfetch', - 'fish', 'fzf', 'grub', 'htop', 'libpwquality', 'linux', 'logrotate', - 'lrzsz', 'lsof', 'lvm2', 'ncdu', 'networkmanager', 'nfs-utils', - 'ppp', 'python', 'reflector', - 'rsync', 'sudo', 'tldr', 'tmux', 'vim', 'zram-generator'] - + (['openssh'] if system_cfg.features.ssh.enabled | bool else []) - + (['iptables-nft'] if system_cfg.features.firewall.toolkit == 'nftables' and system_cfg.features.firewall.enabled | bool else []) - + (bootstrap_common_conditional | reject('equalto', 'nftables') | list) - }} +bootstrap_opensuse: + base: + - patterns-base-base + extra: + - btrfs-progs + - chrony + - curl + - e2fsprogs + - glibc-locale + - kernel-default + - logrotate + - lvm2 + - NetworkManager + - python3 + - rsync + - sudo + - vim + - xfsprogs + conditional: >- + {{ + (['openssh'] if system_cfg.features.ssh.enabled | bool else []) + + bootstrap_common_conditional + }} -bootstrap_alpine: >- - {{ - ['alpine-base', 'btrfs-progs', 'chrony', 'curl', 'e2fsprogs', - 'linux-lts', 'logrotate', 'lvm2', 'python3', 'rsync', 'sudo', - 'util-linux', 'vim', 'xfsprogs'] - + (['openssh'] if system_cfg.features.ssh.enabled | bool else []) - + bootstrap_common_conditional - }} - -bootstrap_opensuse: >- - {{ - ['btrfs-progs', 'chrony', 'curl', 'e2fsprogs', - 'glibc-locale', 'kernel-default', 'logrotate', 'lvm2', 'NetworkManager', - 'python3', 'rsync', 'sudo', 'vim', 'xfsprogs'] - + (['openssh'] if system_cfg.features.ssh.enabled | bool else []) - + bootstrap_common_conditional - }} - -bootstrap_void: >- - {{ - ['btrfs-progs', 'chrony', 'curl', 'dhcpcd', 'e2fsprogs', - 'logrotate', 'lvm2', 'python3', 'rsync', 'sudo', - 'vim', 'xfsprogs'] - + (['openssh'] if system_cfg.features.ssh.enabled | bool else []) - + bootstrap_common_conditional - }} +bootstrap_void: + base: + - base-system + - void-repo-nonfree + extra: + - btrfs-progs + - chrony + - curl + - dhcpcd + - e2fsprogs + - logrotate + - lvm2 + - python3 + - rsync + - sudo + - vim + - xfsprogs + conditional: >- + {{ + (['openssh'] if system_cfg.features.ssh.enabled | bool else []) + + bootstrap_common_conditional + }}