From cc40bae858a2def5f2884f3337899ffcb2ef1db3 Mon Sep 17 00:00:00 2001 From: Sandwich Date: Tue, 16 Apr 2024 01:14:05 +0200 Subject: [PATCH] Add RockyLinux support --- main.yml | 4 ++-- roles/bootstrap/tasks/main.yml | 8 ++++++++ roles/bootstrap/vars/packages.yml | 16 +++++++++++++++- roles/configuration/tasks/main.yml | 22 ++++++++++++++-------- roles/environment/tasks/main.yml | 4 ++-- roles/partitioning/tasks/ext4.yml | 2 +- templates/rockylinux.repo.j2 | 10 ---------- 7 files changed, 42 insertions(+), 24 deletions(-) delete mode 100644 templates/rockylinux.repo.j2 diff --git a/main.yml b/main.yml index 4e7b86b..5804187 100644 --- a/main.yml +++ b/main.yml @@ -38,7 +38,7 @@ vars_files: vars.yml pre_tasks: - name: Set ansible_python_interpreter - when: os | lower in ["almalinux", "rhel9", "rhel8"] + when: os | lower in ["almalinux", "rhel9", "rhel8", "rocky"] set_fact: ansible_python_interpreter: /usr/bin/python3 @@ -47,7 +47,7 @@ that: - hypervisor in ["libvirt", "proxmox", "vmware", "none"] - filesystem in ["btrfs", "ext4", "xfs"] - - os in ["archlinux", "almalinux", "debian11", "debian12", "fedora"] + - os in ["archlinux", "almalinux", "debian11", "debian12", "fedora", "rocky"] fail_msg: "Invalid input specified, please try again" - name: Set connection diff --git a/roles/bootstrap/tasks/main.yml b/roles/bootstrap/tasks/main.yml index 076dd96..6d6ca49 100644 --- a/roles/bootstrap/tasks/main.yml +++ b/roles/bootstrap/tasks/main.yml @@ -34,6 +34,14 @@ - arch-chroot /mnt dnf --releasever=39 --setopt=install_weak_deps=False install -y {{ role_packages.fedora | join(' ') }} - arch-chroot /mnt dnf reinstall -y grub2-efi-x64 kernel + - name: Bootstrap RockyLinux 9 + when: os | lower == 'rocky' + shell: "{{ item }}" + with_items: + - dnf --releasever=9 --best --repo=rocky-baseos --installroot=/mnt --setopt=install_weak_deps=False groupinstall -y base core + - echo "nameserver 1.0.0.1" > /mnt/etc/resolv.conf + - arch-chroot /mnt dnf --releasever=9 --setopt=install_weak_deps=False install -y {{ role_packages.rocky | join(' ') }} + - name: Bootstrap RHEL System when: os | lower in ['rhel8', 'rhel9'] shell: "{{ item }}" diff --git a/roles/bootstrap/vars/packages.yml b/roles/bootstrap/vars/packages.yml index ec926d9..764d925 100644 --- a/roles/bootstrap/vars/packages.yml +++ b/roles/bootstrap/vars/packages.yml @@ -130,7 +130,7 @@ almalinux: - lrzsz - nfs-utils - open-vm-tools - - shims + - shim - telnet - vim - zstd @@ -157,4 +157,18 @@ rhel9: - open-vm-tools - shim - telnet + - zstd + +rocky: + - dhcp-client + - efibootmgr + - grub2 + - grub2-efi + - lrzsz + - nfs-utils + - open-vm-tools + - shim + - telnet + - util-linux-core + - vim-minimal - zstd \ No newline at end of file diff --git a/roles/configuration/tasks/main.yml b/roles/configuration/tasks/main.yml index 149ab19..68c3da4 100644 --- a/roles/configuration/tasks/main.yml +++ b/roles/configuration/tasks/main.yml @@ -27,6 +27,7 @@ - name: Setup locales block: - name: Configure locale.gen + when: os | lower != "rocky" lineinfile: dest: /mnt/etc/locale.gen regexp: '{{ item.regex }}' @@ -34,7 +35,8 @@ loop: - {regex: en_US\.UTF-8 UTF-8, line: en_US.UTF-8 UTF-8} - - name: Generate locales + - name: Generate locales\ + when: os | lower != "rocky" command: arch-chroot /mnt /usr/sbin/locale-gen - name: Set hostname @@ -71,7 +73,7 @@ command: arch-chroot /mnt systemctl enable sshd logrotate systemd-resolved systemd-timesyncd NetworkManager - name: Configure grub - when: os | lower != "fedora" and os | lower != "almalinux" and os | lower != "rhel8" and os | lower != "rhel9" + when: os | lower not in ['almalinux', 'fedora', 'rhel8', 'rhel9', 'rocky'] block: - name: Add commandline information to grub config lineinfile: @@ -88,17 +90,21 @@ - name: Configure Bootloader block: - name: Install Bootloader - command: arch-chroot /mnt {% if os | lower != "archlinux" and os | lower != "debian11" and os | lower != "debian12" %}/usr/sbin/efibootmgr -c -L '{{ os }}' -d "{{ install_drive }}" -wwp 1 -l '\efi\EFI\{{ os }}\shimx64.efi'{% else %}/usr/sbin/grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id={{ os }}{% endif %} + command: arch-chroot /mnt {% if os | lower not in ["archlinux", "debian11", "debian12"] %}/usr/sbin/efibootmgr -c -L '{{ os }}' -d "{{ install_drive }}" -wwp 1 -l '\efi\EFI\{{ os }}\shimx64.efi'{% else %}/usr/sbin/grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id={{ os }}{% endif %} - name: Generate grub config - command: arch-chroot /mnt {% if os | lower != "archlinux" and os | lower != "debian11" and os | lower != "debian12" %}/usr/sbin/grub2-mkconfig -o /boot/efi/EFI/{{ os }}/grub.cfg{% else %}/usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg{% endif %} + command: arch-chroot /mnt {% if os | lower not in ["archlinux", "debian11", "debian12"] %}/usr/sbin/grub2-mkconfig -o /boot/efi/EFI/{{ os }}/grub.cfg{% else %}/usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg{% endif %} + + - name: Regenerate initramfs + command: arch-chroot /mnt {% if os | lower not in ["archlinux", "debian11", "debian12"] %}/usr/bin/dracut --regenerate-all --force{% else %}/usr/sbin/mkinitcpio -P{% endif %} - name: Extra Configuration when: os | lower != "archlinux" block: - name: Append lines to vimrc + ignore_errors: true lineinfile: - path: "{{ '/mnt/etc/vim/vimrc' if os|lower == 'debian11' or os|lower == 'debian12' else '/mnt/etc/vimrc' }}" + path: "{{ '/mnt/etc/vim/vimrc' if os|lower in ['debian11' ,'debian12'] else '/mnt/etc/vimrc' }}" line: "{{ item }}" insertafter: EOF with_items: @@ -140,7 +146,7 @@ - name: Create user account command: '{{ item }}' with_items: - - arch-chroot /mnt /usr/sbin/useradd --create-home --user-group --groups {{ "sudo" if os|lower == "debian11" or os|lower == "debian12" else "wheel" }} {{ user_name }} --password {{ user_password | password_hash('sha512') }} --shell /bin/bash + - arch-chroot /mnt /usr/sbin/useradd --create-home --user-group --groups {{ "sudo" if os|lower in ["debian11", "debian12"] else "wheel" }} {{ user_name }} --password {{ user_password | password_hash('sha512') }} --shell /bin/bash - arch-chroot /mnt /usr/sbin/usermod --password '{{ root_password | password_hash('sha512') }}' root --shell /bin/bash - name: Add SSH public key to authorized_keys @@ -155,11 +161,11 @@ - name: Give sudo access to wheel group copy: - content: "{{ '%sudo ALL=(ALL) ALL' if os|lower == 'debian11' or os|lower == 'debian12' else '%wheel ALL=(ALL) ALL' }}" + content: "{{ '%sudo ALL=(ALL) ALL' if os|lower in ['debian11', 'debian12'] else '%wheel ALL=(ALL) ALL' }}" dest: /mnt/etc/sudoers.d/01-wheel mode: 0440 validate: /usr/sbin/visudo --check --file=%s - name: Fix SELinux - when: (os | lower == "almalinux" or os | lower == "fedora" or os | lower == "rhel8" or os | lower == "rhel9") + when: os | lower in ['almalinux', 'fedora', 'rhel8', 'rhel9', 'rocky'] command: touch /mnt/.autorelabel \ No newline at end of file diff --git a/roles/environment/tasks/main.yml b/roles/environment/tasks/main.yml index 9573eae..b666999 100644 --- a/roles/environment/tasks/main.yml +++ b/roles/environment/tasks/main.yml @@ -53,7 +53,7 @@ state: latest loop: - { name: 'glibc' } - - { name: 'dnf', os: ['almalinux', 'rhel9', 'rhel8'] } + - { name: 'dnf', os: ['almalinux', 'rhel9', 'rhel8', 'rocky'] } - { name: 'debootstrap', os: ['debian11', 'debian12'] } - { name: 'debian-archive-keyring', os: ['debian11', 'debian12'] } when: "'os' not in item or os in item.os" @@ -61,7 +61,7 @@ delay: 15 - name: Configure RHEL Repos for installation - when: os | lower == "almalinux" or os | lower == "fedora" + when: os | lower in ["almalinux", "fedora", "rocky"] block: - name: Create directories for repository files and RPM GPG keys file: diff --git a/roles/partitioning/tasks/ext4.yml b/roles/partitioning/tasks/ext4.yml index ba88ddf..0611315 100644 --- a/roles/partitioning/tasks/ext4.yml +++ b/roles/partitioning/tasks/ext4.yml @@ -13,7 +13,7 @@ - { lv: var_log_audit } - name: Remove Unsupported features for older Systems - when: (os | lower == 'debian11') and (cis == true or item.lv not in ['var_log', 'var_log_audit']) + when: (os | lower in ['almalinux', 'debian11', 'rhel8', 'rhel9', 'rocky']) and (cis == true or item.lv not in ['var_log', 'var_log_audit']) command: tune2fs -O "^orphan_file,^metadata_csum_seed" "/dev/sys/{{ item.lv }}" loop: - { lv: root } diff --git a/templates/rockylinux.repo.j2 b/templates/rockylinux.repo.j2 deleted file mode 100644 index 9582e31..0000000 --- a/templates/rockylinux.repo.j2 +++ /dev/null @@ -1,10 +0,0 @@ -[rocky-baseos] -name=Rocky Linux $releasever - BaseOS -mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever -#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/ -gpgcheck=1 -enabled=1 -countme=1 -gpgkey=https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-$releasever -metadata_expire=86400 -enabled_metadata=1