77 lines
2.7 KiB
YAML
77 lines
2.7 KiB
YAML
---
|
|
- name: Configure Bootloader
|
|
vars:
|
|
_efi_vendor: >-
|
|
{{
|
|
"redhat" if os == "rhel"
|
|
else ("ubuntu" if os in ["ubuntu", "ubuntu-lts"] else os)
|
|
}}
|
|
_efi_loader: >-
|
|
{{ "shimx64.efi" if is_rhel | bool else "grubx64.efi" }}
|
|
block:
|
|
- name: Install GRUB EFI binary
|
|
when: not (is_rhel | bool)
|
|
ansible.builtin.command: >-
|
|
{{ chroot_command }} /usr/sbin/grub-install --target=x86_64-efi
|
|
--efi-directory={{ partitioning_efi_mountpoint }}
|
|
--bootloader-id={{ _efi_vendor }}
|
|
--no-nvram
|
|
register: configuration_bootloader_result
|
|
changed_when: configuration_bootloader_result.rc == 0
|
|
|
|
- name: Check existing EFI boot entries
|
|
ansible.builtin.command: efibootmgr
|
|
register: configuration_efi_entries
|
|
changed_when: false
|
|
|
|
- name: Ensure EFI boot entry exists
|
|
when: ('* ' + _efi_vendor) not in configuration_efi_entries.stdout
|
|
ansible.builtin.command: >-
|
|
efibootmgr -c
|
|
-L '{{ _efi_vendor }}'
|
|
-d '{{ install_drive }}'
|
|
-p 1
|
|
-l '\EFI\{{ _efi_vendor }}\{{ _efi_loader }}'
|
|
register: configuration_efi_entry_result
|
|
changed_when: configuration_efi_entry_result.rc == 0
|
|
|
|
- name: Ensure lvm2 for non btrfs filesystems
|
|
when: os == "archlinux" and system_cfg.filesystem != "btrfs"
|
|
ansible.builtin.lineinfile:
|
|
path: /mnt/etc/mkinitcpio.conf
|
|
regexp: "^(HOOKS=.*block)(?!.*lvm2)(.*)"
|
|
line: "\\1 lvm2\\2"
|
|
backrefs: true
|
|
|
|
- name: Regenerate initramfs
|
|
when: os not in ["alpine", "void"]
|
|
vars:
|
|
configuration_initramfs_cmd: >-
|
|
{{
|
|
'/usr/sbin/mkinitcpio -P'
|
|
if os == "archlinux"
|
|
else (
|
|
'/usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin '
|
|
+ '/usr/sbin/update-initramfs -u -k all'
|
|
if is_debian | bool
|
|
else '/usr/bin/dracut --regenerate-all --force'
|
|
)
|
|
}}
|
|
ansible.builtin.command: "{{ chroot_command }} {{ configuration_initramfs_cmd }}"
|
|
register: configuration_initramfs_result
|
|
changed_when: configuration_initramfs_result.rc == 0
|
|
|
|
- name: Generate grub config
|
|
vars:
|
|
configuration_grub_cfg_cmd: >-
|
|
{{
|
|
'/usr/sbin/grub2-mkconfig -o '
|
|
+ partitioning_efi_mountpoint
|
|
+ '/EFI/' + _efi_vendor + '/grub.cfg'
|
|
if is_rhel | bool
|
|
else '/usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg'
|
|
}}
|
|
ansible.builtin.command: "{{ chroot_command }} {{ configuration_grub_cfg_cmd }}"
|
|
register: configuration_grub_result
|
|
changed_when: configuration_grub_result.rc == 0
|