# Copyright 2022 Dell Inc. or its subsidiaries. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. --- - name: Random phrase generation command: openssl rand -base64 12 changed_when: false register: generate_random_phrase no_log: true - name: Encrypt login password command: openssl passwd -1 -salt {{ generate_random_phrase.stdout }} {{ provision_password }} no_log: true changed_when: false register: encrypt_login_pass - name: Create a tmp iso directory file: path: "{{ tmp_iso_dir }}" state: directory mode: "{{ file_permission }}" - name: Copy files to tmp folder command: rsync -AHPSXav {{ iso_mount_path }} {{ tmp_iso_dir }} changed_when: true args: warn: false - name: Kickstart file changes rocky and centos block: - name: Kickstart file changes centos block: - name: Set centos kickstart file name set_fact: idrac_kickstart_file: "{{ idrac_centos_ks }}" - name: Remove the kickstart file if exists file: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" state: absent - name: Create the centos kickstart file copy: src: "{{ role_path }}/files/temp_centos7.cfg" dest: "{{ role_path }}/files/{{ idrac_kickstart_file }}" mode: "{{ file_permission }}" - name: Configure kickstart file - nic lineinfile: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" insertafter: '^network --bootproto=dhcp --device=link --onboot=on --activate' line: 'network --bootproto=dhcp --device={{ item }} --onboot=on --activate' with_items: "{{ centos_host_nic }}" when: provision_os == os_supported_centos - name: Kickstart file changes rocky block: - name: Set rocky kickstart file name set_fact: idrac_kickstart_file: "{{ idrac_rocky_ks }}" - name: Remove the kickstart file if exists file: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" state: absent - name: Create the rocky kickstart file copy: src: "{{ role_path }}/files/temp_rocky8.cfg" dest: "{{ role_path }}/files/{{ idrac_kickstart_file }}" mode: "{{ file_permission }}" - name: Configure kickstart file - nic lineinfile: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" insertafter: '^network --bootproto=dhcp --device=link --onboot=on --activate' line: 'network --bootproto=dhcp --device={{ item }} --onboot=on --activate' with_items: "{{ rocky_host_nic }}" when: provision_os == os_supported_rocky - name: Configure kickstart file - Password replace: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" regexp: '^rootpw --iscrypted ks_password' replace: 'rootpw --iscrypted {{ encrypt_login_pass.stdout }}' no_log: true - name: Configure kickstart file - timezone replace: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" regexp: '^timezone --utc ks_timezone' replace: 'timezone --utc {{ timezone }}' - name: Configure kickstart file - language replace: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" regexp: '^lang ks_language' replace: 'lang {{ language }}' - name: Copy kickstart file to iso mount path copy: src: "{{ role_path }}/files/{{ idrac_kickstart_file }}" dest: "{{ tmp_iso_dir }}{{ idrac_kickstart_file }}" mode: preserve - name: Remove ^M characters command: dos2unix {{ tmp_iso_dir }}{{ idrac_kickstart_file }} changed_when: false failed_when: false - name: Edit isolinux.cfg replace: path: "{{ tmp_iso_dir }}{{ isolinux_cfg_path }}" regexp: "{{ item.regexp }}" replace: "{{ item.replace }}" with_items: - { regexp: "append initrd=initrd.img", replace: "append initrd=initrd.img ks=cdrom:/{{ idrac_kickstart_file }}" } - { regexp: "rd.live.check quiet", replace: "" } - name: Edit grub.cfg replace: path: "{{ tmp_iso_dir }}{{ grub_cfg_path }}" regexp: "{{ item.regexp }}" replace: "{{ item.replace }}" with_items: - { regexp: "timeout=60", replace: "timeout=5" } - { regexp: "kernel /images/pxeboot/vmlinuz", replace: "kernel /images/pxeboot/vmlinuz ks=cdrom:/{{ idrac_kickstart_file }}" } - { regexp: "linuxefi /images/pxeboot/vmlinuz", replace: "linuxefi /images/pxeboot/vmlinuz ks=cdrom:/{{ idrac_kickstart_file }}" } - { regexp: "rd.live.check quiet", replace: "" } when: - provision_os == os_supported_rocky or provision_os == os_supported_centos - name: Kickstart file changes leap block: - name: Set leap kickstart file name set_fact: idrac_kickstart_file: "{{ idrac_leap_ks }}" - name: Create the leap kickstart file copy: src: "{{ role_path }}/files/temp_leap15.xml" dest: "{{ role_path }}/files/{{ idrac_kickstart_file }}" mode: "{{ file_permission }}" - name: Configure kickstart file - Password replace: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" regexp: ' ks_password' replace: ' {{ encrypt_login_pass.stdout }}' no_log: true - name: Configure kickstart file - timezone replace: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" regexp: ' ks_timezone' replace: ' {{ timezone }}' - name: Configure kickstart file - nic lineinfile: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" insertafter: ' ' line: >4 dhcp {{ item }} auto with_items: "{{ centos_host_nic }}" - name: Remove blank lines lineinfile: path: "{{ role_path }}/files/{{ idrac_kickstart_file }}" regexp: '^\s*$' state: absent changed_when: false - name: Copy kickstart file to iso mount path copy: src: "{{ role_path }}/files/{{ idrac_kickstart_file }}" dest: "/tmp/leap/{{ idrac_kickstart_file }}" mode: preserve - name: Edit grub.cfg replace: path: "{{ tmp_iso_dir }}{{ grub_cfg_path }}" regexp: "{{ item.regexp }}" replace: "{{ item.replace }}" with_items: - { regexp: " timeout=60", replace: " timeout=5" } when: provision_os == os_supported_leap