--- - name: Bootstrap Ubuntu System vars: bootstrap_ubuntu_release: >- {{ 'plucky' if bootstrap_os_key == 'ubuntu' else 'noble' }} bootstrap_ubuntu_package_config: >- {{ lookup('vars', bootstrap_var_key) }} bootstrap_ubuntu_base_packages: >- {{ bootstrap_ubuntu_package_config.base | default([]) | reject('equalto', '') | list }} 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." quiet: true - name: Install Ubuntu base system ansible.builtin.command: >- debootstrap --include={{ bootstrap_ubuntu_base_csv }} {{ bootstrap_ubuntu_release }} /mnt http://archive.ubuntu.com/ubuntu/ register: bootstrap_ubuntu_base_result changed_when: bootstrap_ubuntu_base_result.rc == 0 - name: Ensure chroot has resolv.conf ansible.builtin.file: src: /run/NetworkManager/resolv.conf dest: /mnt/etc/resolv.conf state: link - name: Enable universe repository ansible.builtin.command: "{{ chroot_command }} sed -i '1s|$| universe|' /etc/apt/sources.list" register: bootstrap_ubuntu_repo_result changed_when: bootstrap_ubuntu_repo_result.rc == 0 - name: Update package lists ansible.builtin.command: "{{ chroot_command }} apt update" register: bootstrap_ubuntu_update_result 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 }}" register: bootstrap_ubuntu_extra_result changed_when: bootstrap_ubuntu_extra_result.rc == 0