This should allow just having a general 'target' system for ansible which will take all the modifications - but not care whether we connect to it locally (i.e. running from void) or through chroot. We can set the connection method for the specific system(s) in whatever we group as part of the target group then. For local installation we simply add locally connected hosts and for chroot set up chrooted hosts.
133 lines
3.4 KiB
YAML
133 lines
3.4 KiB
YAML
- name: Install void base system
|
|
hosts: target_system
|
|
become: true
|
|
tasks:
|
|
# Prefer booster to dracut so make sure to never install it
|
|
- name: Ignore dracut
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/xbps.d/ignore-dracut.conf
|
|
line: ignorepkg=dracut
|
|
state: present
|
|
create: true # create file if absent
|
|
|
|
- name: Update xbps and system
|
|
community.general.xbps:
|
|
name:
|
|
- xbps
|
|
state: latest
|
|
update_cache: true
|
|
upgrade: true
|
|
|
|
- name: Install Base system
|
|
community.general.xbps:
|
|
name:
|
|
- base-system
|
|
state: present
|
|
|
|
- name: Get rid of temporary container metapackage
|
|
community.general.xbps:
|
|
name:
|
|
- base-container-full
|
|
state: absent
|
|
|
|
- name: Install booster
|
|
community.general.xbps:
|
|
name: booster
|
|
state: present
|
|
notify: installed-booster
|
|
|
|
handlers:
|
|
- name: List kernel module dirs
|
|
ansible.builtin.find:
|
|
paths: "/usr/lib/modules"
|
|
file_type: directory
|
|
register: found_kernels
|
|
listen: installed-booster
|
|
|
|
- name: Find kernels
|
|
ansible.builtin.set_fact:
|
|
kernel_list: "{{ found_kernels['files'] | map(attribute='path') | map('regex_replace', '^.*/(.*)$', '\\1') | list }}"
|
|
listen: installed-booster
|
|
|
|
- name: Create booster initramfs
|
|
vars:
|
|
fname: /boot/booster-void
|
|
ansible.builtin.command:
|
|
argv:
|
|
- booster
|
|
- --verbose
|
|
- build
|
|
- --kernel-version={{ item }}
|
|
- "{{ fname }}-{{ item }}.img"
|
|
creates: "{{ fname }}-{{ item }}.img"
|
|
loop: "{{ kernel_list }}"
|
|
listen: installed-booster
|
|
|
|
- name: Configure void base system
|
|
hosts: target_system
|
|
become: true
|
|
vars:
|
|
host_name: voider
|
|
timezone: Europe/Berlin
|
|
locales_enabled:
|
|
- en_US.UTF-8 UTF-8
|
|
|
|
tasks:
|
|
- name: Set hostname
|
|
ansible.builtin.template:
|
|
src: hostname.tpl
|
|
dest: /etc/hostname
|
|
|
|
- name: Set timezone
|
|
ansible.builtin.file:
|
|
path: /etc/localtime
|
|
src: /usr/share/zoneinfo/{{ timezone }}
|
|
state: link
|
|
|
|
- name: Check if glibc locales exist
|
|
ansible.builtin.stat:
|
|
path: /etc/default/libc-locales
|
|
register: libc_locales_file
|
|
|
|
- name: Set correct glibc locales
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/default/libc-locales
|
|
regexp: "^{{ item }}"
|
|
line: "{{ item }}"
|
|
state: present
|
|
create: true
|
|
loop: "{{ locales_enabled }}"
|
|
when: libc_locales_file.stat.exists
|
|
notify: glibc-locales-changed
|
|
|
|
- name: Set up chrony for NTP management
|
|
community.general.xbps:
|
|
name:
|
|
- chrony
|
|
state: present
|
|
notify: installed-chrony
|
|
|
|
- name: Activate acpid service
|
|
ansible.builtin.file:
|
|
force: "yes"
|
|
src: "/etc/sv/acpid"
|
|
dest: "/etc/runit/runsvdir/default/acpid"
|
|
state: link
|
|
|
|
handlers:
|
|
- name: Regenerate locales
|
|
ansible.builtin.command:
|
|
argv:
|
|
- xbps-reconfigure
|
|
- --force
|
|
- libc-locales
|
|
listen: glibc-locales-changed
|
|
|
|
- name: Activate chronyd service
|
|
ansible.builtin.file:
|
|
force: "yes"
|
|
src: "/etc/sv/{{ item }}"
|
|
dest: "/etc/runit/runsvdir/default/{{ item }}"
|
|
state: link
|
|
with_items: [chronyd]
|
|
listen: installed-chrony
|