77 lines
2.9 KiB
YAML
77 lines
2.9 KiB
YAML
---
|
|
- name: Bootstrap Ubuntu System
|
|
vars:
|
|
bootstrap_ubuntu_release: >-
|
|
{{ 'plucky' if os == '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
|
|
--keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg
|
|
--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: Generate resolv.conf for chroot
|
|
ansible.builtin.copy:
|
|
content: |
|
|
{% for ns in system_cfg.network.dns.servers | default(['1.1.1.1', '8.8.8.8']) %}
|
|
nameserver {{ ns }}
|
|
{% endfor %}
|
|
{% if system_cfg.network.dns.search | default([]) | length > 0 %}
|
|
search {{ system_cfg.network.dns.search | join(' ') }}
|
|
{% endif %}
|
|
dest: /mnt/etc/resolv.conf
|
|
mode: "0644"
|
|
|
|
- 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
|