From 57b68425d4bdd1d6ae2dcd7c908ea44323634375 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Thu, 17 Oct 2024 08:16:13 -0400 Subject: [PATCH 01/13] Use fully qualified names for libvirt modules --- roles/libvirt/tasks/tftp.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/roles/libvirt/tasks/tftp.yml b/roles/libvirt/tasks/tftp.yml index 0bc7f5e5c..11e9317fc 100644 --- a/roles/libvirt/tasks/tftp.yml +++ b/roles/libvirt/tasks/tftp.yml @@ -1,6 +1,6 @@ --- - name: 'create the provisioning libvirt network' - virt_net: + community.libvirt.virt_net: command: define name: provision xml: '{{ lookup("template", "../templates/network.xml.j2") }}' @@ -14,7 +14,7 @@ path: /etc/libvirt/qemu/networks/autostart/provision.xml - name: 'create the provisioning storage' - virt_pool: + community.libvirt.virt_pool: command: define name: provision xml: '{{ lookup("template", "../templates/storage.xml.j2") }}' @@ -58,13 +58,13 @@ shell: set -o pipefail && find /var/lib/tftpboot/ -type d | xargs chmod g+s - name: 'start the provision libvirt network' - virt_net: + community.libvirt.virt_net: state: active name: provision autostart: yes - name: 'start the provision libvirt storage pool' - virt_pool: + community.libvirt.virt_pool: state: active name: provision autostart: yes From 66ad55acc7b234515e8e7a648e4c781e9441fc14 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Thu, 17 Oct 2024 08:17:24 -0400 Subject: [PATCH 02/13] Fix puppet environment use in foreman_provisioning --- roles/foreman_provisioning/tasks/main.yml | 2 +- roles/foreman_provisioning_infrastructure/tasks/main.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/roles/foreman_provisioning/tasks/main.yml b/roles/foreman_provisioning/tasks/main.yml index c5b07ab0f..383cb1bb8 100644 --- a/roles/foreman_provisioning/tasks/main.yml +++ b/roles/foreman_provisioning/tasks/main.yml @@ -37,7 +37,7 @@ --name 'Base' --architecture x86_64 --domain {{ foreman_provisioning_domain }} - --environment production + --puppet-environment production --puppet-ca-proxy-id {{ foreman_provisioning_smart_proxy.Id }} --puppet-proxy-id {{ foreman_provisioning_smart_proxy.Id }} --subnet '{{ foreman_provisioning_network }}/24' diff --git a/roles/foreman_provisioning_infrastructure/tasks/main.yml b/roles/foreman_provisioning_infrastructure/tasks/main.yml index 5df78025b..be558ce1a 100644 --- a/roles/foreman_provisioning_infrastructure/tasks/main.yml +++ b/roles/foreman_provisioning_infrastructure/tasks/main.yml @@ -103,20 +103,20 @@ # Puppet - name: 'find environment' shell: > - {{ foreman_provisioning_hammer }} environment info --name "production" + {{ foreman_provisioning_hammer }} puppet-environment info --name "production" register: foreman_provisioning_environment ignore_errors: True - name: 'create environment' shell: > - {{ foreman_provisioning_hammer }} environment create + {{ foreman_provisioning_hammer }} puppet-environment create --name production {{ foreman_provisioning_hammer_taxonomy_params }} when: foreman_provisioning_environment.stderr.find('not found') != -1 - name: 'update environment' # it may have been automatically created by puppet if katello reports first shell: > - {{ foreman_provisioning_hammer }} environment update + {{ foreman_provisioning_hammer }} puppet-environment update --name production {{ foreman_provisioning_hammer_taxonomy_params }} From d38aefa2665c8d5f50ab7cd2b4fa00ecb1c7b983 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Thu, 17 Oct 2024 08:19:09 -0400 Subject: [PATCH 03/13] Bump fedora to 40 in foreman_provisioning --- ..._fedora_27.yml => configure_fedora_40.yml} | 26 +++++++++---------- roles/foreman_provisioning/tasks/main.yml | 4 +-- 2 files changed, 15 insertions(+), 15 deletions(-) rename roles/foreman_provisioning/tasks/{configure_fedora_27.yml => configure_fedora_40.yml} (59%) diff --git a/roles/foreman_provisioning/tasks/configure_fedora_27.yml b/roles/foreman_provisioning/tasks/configure_fedora_40.yml similarity index 59% rename from roles/foreman_provisioning/tasks/configure_fedora_27.yml rename to roles/foreman_provisioning/tasks/configure_fedora_40.yml index 8895ab81a..f145830ec 100644 --- a/roles/foreman_provisioning/tasks/configure_fedora_27.yml +++ b/roles/foreman_provisioning/tasks/configure_fedora_40.yml @@ -1,19 +1,19 @@ -- name: 'create Fedora 27' +- name: 'create Fedora 40' shell: > - {{ foreman_provisioning_hammer }} os info --title "Fedora 27" || + {{ foreman_provisioning_hammer }} os info --title "Fedora 40" || {{ foreman_provisioning_hammer }} os create - --name Fedora --major 27 --architectures x86_64 --family 'Redhat' --media 'Fedora mirror' --partition-tables 'Kickstart default' + --name Fedora --major 40 --architectures x86_64 --family 'Redhat' --media 'Fedora mirror' --partition-tables 'Kickstart default' -- name: 'find Fedora 27' +- name: 'find Fedora 40' shell: > - {{ foreman_provisioning_hammer }} --output json os info --name "Fedora 27" || - {{ foreman_provisioning_hammer }} --output json os info --title "Fedora 27" - register: foreman_provisioning_fedora27_json + {{ foreman_provisioning_hammer }} --output json os info --name "Fedora 40" || + {{ foreman_provisioning_hammer }} --output json os info --title "Fedora 40" + register: foreman_provisioning_fedora40_json ignore_errors: True -- name: 'get Fedora 27 info' +- name: 'get Fedora 40 info' set_fact: - foreman_provisioning_fedora27: "{{ foreman_provisioning_fedora27_json.stdout|from_json }}" + foreman_provisioning_fedora40: "{{ foreman_provisioning_fedora40_json.stdout|from_json }}" - name: 'find kickstart templates' shell: > @@ -25,12 +25,12 @@ set_fact: kickstart_templates: "{{ kickstart_templates_json.stdout|from_json }}" -- name: 'associate kickstart templates to Fedora 27' +- name: 'associate kickstart templates to Fedora 40' shell: > - {{ foreman_provisioning_hammer }} template add-operatingsystem --id {{ item.Id }} --operatingsystem 'Fedora 27' + {{ foreman_provisioning_hammer }} template add-operatingsystem --id {{ item.Id }} --operatingsystem 'Fedora 40' with_items: "{{ kickstart_templates }}" -- name: 'set default templates for Fedora 27' +- name: 'set default templates for Fedora 40' shell: > - {{ foreman_provisioning_hammer }} os set-default-template --id {{ foreman_provisioning_fedora27.Id }} --provisioning-template-id {{ item.Id }} + {{ foreman_provisioning_hammer }} os set-default-template --id {{ foreman_provisioning_fedora40.Id }} --provisioning-template-id {{ item.Id }} with_items: "{{ kickstart_templates }}" diff --git a/roles/foreman_provisioning/tasks/main.yml b/roles/foreman_provisioning/tasks/main.yml index 383cb1bb8..be1597af5 100644 --- a/roles/foreman_provisioning/tasks/main.yml +++ b/roles/foreman_provisioning/tasks/main.yml @@ -2,8 +2,8 @@ - name: 'Setup CentOS 9 provisioning' import_tasks: configure_centos_9.yml -- name: 'Setup Fedora 27 provisioning' - import_tasks: configure_fedora_27.yml +- name: 'Setup Fedora 40 provisioning' + import_tasks: configure_fedora_40.yml - name: 'Setup Debian 9.3 provisioning' import_tasks: configure_debian_9_3.yml From 9dec4208f7df1c2f93a72ddf119f0b1648e9474f Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Thu, 17 Oct 2024 09:05:51 -0400 Subject: [PATCH 04/13] Adjust foreman_provisioning to centos stream 9 --- roles/foreman_provisioning/tasks/main.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/roles/foreman_provisioning/tasks/main.yml b/roles/foreman_provisioning/tasks/main.yml index be1597af5..362387538 100644 --- a/roles/foreman_provisioning/tasks/main.yml +++ b/roles/foreman_provisioning/tasks/main.yml @@ -49,18 +49,18 @@ {{ foreman_provisioning_hammer_taxonomy_params }} when: foreman_provisioning_hostgroup_base.stderr.find('not found') != -1 -- name: 'find hostgroup CentOS 7' +- name: 'find hostgroup CentOS 9' shell: > - {{ foreman_provisioning_hammer }} hostgroup info --name 'CentOS 7 Mirror' + {{ foreman_provisioning_hammer }} hostgroup info --name 'CentOS 9 Mirror' register: foreman_provisioning_hostgroup_centos_mirror ignore_errors: True -- name: 'create hostgroup CentOS 7 Mirror' +- name: 'create hostgroup CentOS 9 Mirror' shell: > {{ foreman_provisioning_hammer }} hostgroup create - --name 'CentOS 7 Mirror' - --operatingsystem 'CentOS 7' - --medium '{{ centos_medium_name }}' + --name 'CentOS 9 Mirror' + --operatingsystem 'CentOS_Stream 9' + --medium 'CentOS Stream 9 mirror' --partition-table 'Kickstart default' --parent 'Base' {{ foreman_provisioning_hammer_taxonomy_params }} From 4a3404b8eca9f32b866e226b58084987c34dee10 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Thu, 17 Oct 2024 09:29:15 -0400 Subject: [PATCH 05/13] Bump debian to 12.7 in foreman_provisioning --- ...bian_9_3.yml => configure_debian_12_7.yml} | 26 +++++++++---------- roles/foreman_provisioning/tasks/main.yml | 4 +-- 2 files changed, 15 insertions(+), 15 deletions(-) rename roles/foreman_provisioning/tasks/{configure_debian_9_3.yml => configure_debian_12_7.yml} (50%) diff --git a/roles/foreman_provisioning/tasks/configure_debian_9_3.yml b/roles/foreman_provisioning/tasks/configure_debian_12_7.yml similarity index 50% rename from roles/foreman_provisioning/tasks/configure_debian_9_3.yml rename to roles/foreman_provisioning/tasks/configure_debian_12_7.yml index 9469944fd..b9b3e6965 100644 --- a/roles/foreman_provisioning/tasks/configure_debian_9_3.yml +++ b/roles/foreman_provisioning/tasks/configure_debian_12_7.yml @@ -1,19 +1,19 @@ -- name: 'create Debian 9.3' +- name: 'create Debian 12.7' shell: > - {{ foreman_provisioning_hammer }} os info --title "Debian 9.3" || + {{ foreman_provisioning_hammer }} os info --title "Debian 12.7" || {{ foreman_provisioning_hammer }} os create - --name Debian --major 9 --minor 3 --release-name 'stretch' --architectures x86_64 --family 'Debian' --media 'Debian mirror' --partition-tables 'Preseed default' + --name Debian --major 12 --minor 7 --release-name 'stretch' --architectures x86_64 --family 'Debian' --media 'Debian mirror' --partition-tables 'Preseed default' -- name: 'find Debian 9.3' +- name: 'find Debian 12.7' shell: > - {{ foreman_provisioning_hammer }} --output json os info --name "Debian 9.3" || - {{ foreman_provisioning_hammer }} --output json os info --title "Debian 9.3" - register: foreman_provisioning_debian93_json + {{ foreman_provisioning_hammer }} --output json os info --name "Debian 12.7" || + {{ foreman_provisioning_hammer }} --output json os info --title "Debian 12.7" + register: foreman_provisioning_debian127_json ignore_errors: True -- name: 'get CentOS 9.3 info' +- name: 'get CentOS 12.7 info' set_fact: - foreman_provisioning_debian93: "{{ foreman_provisioning_debian93_json.stdout|from_json }}" + foreman_provisioning_debian127: "{{ foreman_provisioning_debian127_json.stdout|from_json }}" - name: 'find preseed templates' shell: > @@ -25,12 +25,12 @@ set_fact: preseed_templates: "{{ preseed_templates_json.stdout|from_json }}" -- name: 'associate preseed templates to Debian 9.3' +- name: 'associate preseed templates to Debian 12.7' shell: > - {{ foreman_provisioning_hammer }} template add-operatingsystem --id {{ item.Id }} --operatingsystem 'Debian 9.3' + {{ foreman_provisioning_hammer }} template add-operatingsystem --id {{ item.Id }} --operatingsystem 'Debian 12.7' with_items: "{{ preseed_templates }}" -- name: 'set default templates for Debian 9.3' +- name: 'set default templates for Debian 12.7' shell: > - {{ foreman_provisioning_hammer }} os set-default-template --id {{ foreman_provisioning_debian93.Id }} --provisioning-template-id {{ item.Id }} + {{ foreman_provisioning_hammer }} os set-default-template --id {{ foreman_provisioning_debian127.Id }} --provisioning-template-id {{ item.Id }} with_items: "{{ preseed_templates }}" diff --git a/roles/foreman_provisioning/tasks/main.yml b/roles/foreman_provisioning/tasks/main.yml index 362387538..8e791b420 100644 --- a/roles/foreman_provisioning/tasks/main.yml +++ b/roles/foreman_provisioning/tasks/main.yml @@ -5,8 +5,8 @@ - name: 'Setup Fedora 40 provisioning' import_tasks: configure_fedora_40.yml -- name: 'Setup Debian 9.3 provisioning' - import_tasks: configure_debian_9_3.yml +- name: 'Setup Debian 12.7 provisioning' + import_tasks: configure_debian_12_7.yml - name: 'Setup Ubuntu 17.10 provisioning' import_tasks: configure_ubuntu_17_10.yml From ce85689b3fce07fbf4fa921a83c04b8102345204 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Thu, 17 Oct 2024 09:30:17 -0400 Subject: [PATCH 06/13] Bump ubuntu to 24.04 in foreman_provisioning --- ...u_17_10.yml => configure_ubuntu_24_04.yml} | 26 +++++++++---------- roles/foreman_provisioning/tasks/main.yml | 4 +-- 2 files changed, 15 insertions(+), 15 deletions(-) rename roles/foreman_provisioning/tasks/{configure_ubuntu_17_10.yml => configure_ubuntu_24_04.yml} (58%) diff --git a/roles/foreman_provisioning/tasks/configure_ubuntu_17_10.yml b/roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml similarity index 58% rename from roles/foreman_provisioning/tasks/configure_ubuntu_17_10.yml rename to roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml index 7e8caf7a8..745b1ac54 100644 --- a/roles/foreman_provisioning/tasks/configure_ubuntu_17_10.yml +++ b/roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml @@ -1,19 +1,19 @@ -- name: 'create Ubuntu 17.10' +- name: 'create Ubuntu 24.04' shell: > - {{ foreman_provisioning_hammer }} os info --title "Ubuntu 17.10" || + {{ foreman_provisioning_hammer }} os info --title "Ubuntu 24.04" || {{ foreman_provisioning_hammer }} os create - --name Ubuntu --major 17 --minor 10 --release-name 'artful' --architectures x86_64 --family 'Debian' --media 'Ubuntu mirror' --partition-tables 'Preseed default' + --name Ubuntu --major 24 --minor 04 --release-name 'artful' --architectures x86_64 --family 'Debian' --media 'Ubuntu mirror' --partition-tables 'Preseed default' -- name: 'find Ubuntu 17.10' +- name: 'find Ubuntu 24.04' shell: > - {{ foreman_provisioning_hammer }} --output json os info --name "Ubuntu 17.10" || - {{ foreman_provisioning_hammer }} --output json os info --title "Ubuntu 17.10" - register: foreman_provisioning_ubuntu1710_json + {{ foreman_provisioning_hammer }} --output json os info --name "Ubuntu 24.04" || + {{ foreman_provisioning_hammer }} --output json os info --title "Ubuntu 24.04" + register: foreman_provisioning_ubuntu2404_json ignore_errors: True -- name: 'get Ubuntu 17.10 info' +- name: 'get Ubuntu 24.04 info' set_fact: - foreman_provisioning_ubuntu1710: "{{ foreman_provisioning_ubuntu1710_json.stdout|from_json }}" + foreman_provisioning_ubuntu2404: "{{ foreman_provisioning_ubuntu2404_json.stdout|from_json }}" - name: 'find preseed templates' shell: > @@ -25,12 +25,12 @@ set_fact: preseed_templates: "{{ preseed_templates_json.stdout|from_json }}" -- name: 'associate preseed templates to Ubuntu 17.10' +- name: 'associate preseed templates to Ubuntu 24.04' shell: > - {{ foreman_provisioning_hammer }} template add-operatingsystem --id {{ item.Id }} --operatingsystem 'Ubuntu 17.10' + {{ foreman_provisioning_hammer }} template add-operatingsystem --id {{ item.Id }} --operatingsystem 'Ubuntu 24.04' with_items: "{{ preseed_templates }}" -- name: 'set default templates for Ubuntu 17.10' +- name: 'set default templates for Ubuntu 24.04' shell: > - {{ foreman_provisioning_hammer }} os set-default-template --id {{ foreman_provisioning_ubuntu1710.Id }} --provisioning-template-id {{ item.Id }} + {{ foreman_provisioning_hammer }} os set-default-template --id {{ foreman_provisioning_ubuntu2404.Id }} --provisioning-template-id {{ item.Id }} with_items: "{{ preseed_templates }}" diff --git a/roles/foreman_provisioning/tasks/main.yml b/roles/foreman_provisioning/tasks/main.yml index 8e791b420..2f1b0dfc7 100644 --- a/roles/foreman_provisioning/tasks/main.yml +++ b/roles/foreman_provisioning/tasks/main.yml @@ -8,8 +8,8 @@ - name: 'Setup Debian 12.7 provisioning' import_tasks: configure_debian_12_7.yml -- name: 'Setup Ubuntu 17.10 provisioning' - import_tasks: configure_ubuntu_17_10.yml +- name: 'Setup Ubuntu 24.04 provisioning' + import_tasks: configure_ubuntu_24_04.yml # TODO verify - should not be needed, DNS should work just fine - name: 'set unattended_url' From 62cc74765a95e471ee4cd7a003b8f33a9d42b411 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Wed, 27 Nov 2024 16:14:27 +0100 Subject: [PATCH 07/13] Fix root password --- roles/foreman_provisioning/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/foreman_provisioning/tasks/main.yml b/roles/foreman_provisioning/tasks/main.yml index 2f1b0dfc7..75eee759b 100644 --- a/roles/foreman_provisioning/tasks/main.yml +++ b/roles/foreman_provisioning/tasks/main.yml @@ -43,7 +43,7 @@ --subnet '{{ foreman_provisioning_network }}/24' {{ foreman_provisioning_compute_profile_option }} {{ foreman_provisioning_compute_resource_option }} - --root-pass changeme + --root-password changeme --pxe-loader "PXELinux BIOS" --organization '{{ foreman_provisioning_organization }}' {{ foreman_provisioning_hammer_taxonomy_params }} From 0cd5277523f21fe52a9961e57c5d1fd647e1f35e Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Tue, 3 Dec 2024 13:09:08 +0100 Subject: [PATCH 08/13] Configure Debian 12.7 using fam --- .../tasks/configure_debian_12_7.yml | 62 +++++++++---------- 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/roles/foreman_provisioning/tasks/configure_debian_12_7.yml b/roles/foreman_provisioning/tasks/configure_debian_12_7.yml index b9b3e6965..e1e4db67a 100644 --- a/roles/foreman_provisioning/tasks/configure_debian_12_7.yml +++ b/roles/foreman_provisioning/tasks/configure_debian_12_7.yml @@ -1,36 +1,30 @@ -- name: 'create Debian 12.7' - shell: > - {{ foreman_provisioning_hammer }} os info --title "Debian 12.7" || - {{ foreman_provisioning_hammer }} os create - --name Debian --major 12 --minor 7 --release-name 'stretch' --architectures x86_64 --family 'Debian' --media 'Debian mirror' --partition-tables 'Preseed default' +- name: "Find all relevant templates" # noqa: args[module] + theforeman.foreman.resource_info: + resource: provisioning_templates + search: name ~ "Preseed default" or name = "Linux host_init_config default" + register: result -- name: 'find Debian 12.7' - shell: > - {{ foreman_provisioning_hammer }} --output json os info --name "Debian 12.7" || - {{ foreman_provisioning_hammer }} --output json os info --title "Debian 12.7" - register: foreman_provisioning_debian127_json - ignore_errors: True +- name: "Ensure Debian 12.7" # noqa: args[module] + theforeman.foreman.operatingsystem: + name: Debian + family: Debian + major: 12 + minor: 7 + release_name: bookworm + architectures: + - x86_64 + media: + - Debian mirror + provisioning_templates: "{{ result.resources | map(attribute='name') }}" + ptables: + - Preseed default + state: present + password_hash: "SHA256" -- name: 'get CentOS 12.7 info' - set_fact: - foreman_provisioning_debian127: "{{ foreman_provisioning_debian127_json.stdout|from_json }}" - -- name: 'find preseed templates' - shell: > - {{ foreman_provisioning_hammer }} --output=json template list - --search 'name ~ "Preseed default"' - register: preseed_templates_json - -- name: 'set preseed templates' - set_fact: - preseed_templates: "{{ preseed_templates_json.stdout|from_json }}" - -- name: 'associate preseed templates to Debian 12.7' - shell: > - {{ foreman_provisioning_hammer }} template add-operatingsystem --id {{ item.Id }} --operatingsystem 'Debian 12.7' - with_items: "{{ preseed_templates }}" - -- name: 'set default templates for Debian 12.7' - shell: > - {{ foreman_provisioning_hammer }} os set-default-template --id {{ foreman_provisioning_debian127.Id }} --provisioning-template-id {{ item.Id }} - with_items: "{{ preseed_templates }}" +- name: "Set default template for Debian 12.7" # noqa: args[module] + theforeman.foreman.os_default_template: + operatingsystem: "Debian 12.7" + template_kind: "{{ item.template_kind_name }}" + provisioning_template: "{{ item.name }}" + state: present + loop: "{{ result.resources | sort(attribute='name') | unique(attribute='template_kind_name') }}" From 6a33c8595912d9b933d088129e7479cb4b25a564 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Tue, 3 Dec 2024 13:11:10 +0100 Subject: [PATCH 09/13] Configure Fedora 40 using fam --- .../tasks/configure_fedora_40.yml | 60 ++++++++----------- 1 file changed, 26 insertions(+), 34 deletions(-) diff --git a/roles/foreman_provisioning/tasks/configure_fedora_40.yml b/roles/foreman_provisioning/tasks/configure_fedora_40.yml index f145830ec..768b359d3 100644 --- a/roles/foreman_provisioning/tasks/configure_fedora_40.yml +++ b/roles/foreman_provisioning/tasks/configure_fedora_40.yml @@ -1,36 +1,28 @@ -- name: 'create Fedora 40' - shell: > - {{ foreman_provisioning_hammer }} os info --title "Fedora 40" || - {{ foreman_provisioning_hammer }} os create - --name Fedora --major 40 --architectures x86_64 --family 'Redhat' --media 'Fedora mirror' --partition-tables 'Kickstart default' +- name: "Find all relevant templates" # noqa: args[module] + theforeman.foreman.resource_info: + resource: provisioning_templates + search: name ~ "Kickstart default" or name = "Linux host_init_config default" + register: result -- name: 'find Fedora 40' - shell: > - {{ foreman_provisioning_hammer }} --output json os info --name "Fedora 40" || - {{ foreman_provisioning_hammer }} --output json os info --title "Fedora 40" - register: foreman_provisioning_fedora40_json - ignore_errors: True +- name: "Ensure Fedora 40" # noqa: args[module] + theforeman.foreman.operatingsystem: + name: Fedora + family: Redhat + major: 40 + architectures: + - x86_64 + media: + - Fedora mirror + provisioning_templates: "{{ result.resources | map(attribute='name') }}" + ptables: + - Kickstart default + state: present + password_hash: "SHA256" -- name: 'get Fedora 40 info' - set_fact: - foreman_provisioning_fedora40: "{{ foreman_provisioning_fedora40_json.stdout|from_json }}" - -- name: 'find kickstart templates' - shell: > - {{ foreman_provisioning_hammer }} --output=json template list - --search 'name ~ "Kickstart default"' - register: kickstart_templates_json - -- name: 'set kickstart templates' - set_fact: - kickstart_templates: "{{ kickstart_templates_json.stdout|from_json }}" - -- name: 'associate kickstart templates to Fedora 40' - shell: > - {{ foreman_provisioning_hammer }} template add-operatingsystem --id {{ item.Id }} --operatingsystem 'Fedora 40' - with_items: "{{ kickstart_templates }}" - -- name: 'set default templates for Fedora 40' - shell: > - {{ foreman_provisioning_hammer }} os set-default-template --id {{ foreman_provisioning_fedora40.Id }} --provisioning-template-id {{ item.Id }} - with_items: "{{ kickstart_templates }}" +- name: "Set default template for Fedora 40" # noqa: args[module] + theforeman.foreman.os_default_template: + operatingsystem: "Fedora 40" + template_kind: "{{ item.template_kind_name }}" + provisioning_template: "{{ item.name }}" + state: present + loop: "{{ result.resources | sort(attribute='name') | unique(attribute='template_kind_name') }}" From 578f05d9a31af220c0ba7b00059053309370dd49 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Tue, 3 Dec 2024 13:13:05 +0100 Subject: [PATCH 10/13] Configure Ubuntu 24.04 using fam --- .../tasks/configure_ubuntu_24_04.yml | 61 ++++++++----------- 1 file changed, 27 insertions(+), 34 deletions(-) diff --git a/roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml b/roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml index 745b1ac54..c0a493022 100644 --- a/roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml +++ b/roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml @@ -1,36 +1,29 @@ -- name: 'create Ubuntu 24.04' - shell: > - {{ foreman_provisioning_hammer }} os info --title "Ubuntu 24.04" || - {{ foreman_provisioning_hammer }} os create - --name Ubuntu --major 24 --minor 04 --release-name 'artful' --architectures x86_64 --family 'Debian' --media 'Ubuntu mirror' --partition-tables 'Preseed default' +- name: "Find all relevant templates" # noqa: args[module] + theforeman.foreman.resource_info: + resource: provisioning_templates + search: name ~ "Preseed default" or name = "Linux host_init_config default" + register: result -- name: 'find Ubuntu 24.04' - shell: > - {{ foreman_provisioning_hammer }} --output json os info --name "Ubuntu 24.04" || - {{ foreman_provisioning_hammer }} --output json os info --title "Ubuntu 24.04" - register: foreman_provisioning_ubuntu2404_json - ignore_errors: True +- name: "Ensure Ubuntu 24.04" # noqa: args[module] + theforeman.foreman.operatingsystem: + name: Ubuntu + family: Debian + major: "24.04" + release_name: artful + architectures: + - x86_64 + media: + - Ubuntu mirror + provisioning_templates: "{{ result.resources | map(attribute='name') }}" + ptables: + - Preseed default + state: present + password_hash: "SHA256" -- name: 'get Ubuntu 24.04 info' - set_fact: - foreman_provisioning_ubuntu2404: "{{ foreman_provisioning_ubuntu2404_json.stdout|from_json }}" - -- name: 'find preseed templates' - shell: > - {{ foreman_provisioning_hammer }} --output=json template list - --search 'name ~ "Preseed default"' - register: preseed_templates_json - -- name: 'set preseed templates' - set_fact: - preseed_templates: "{{ preseed_templates_json.stdout|from_json }}" - -- name: 'associate preseed templates to Ubuntu 24.04' - shell: > - {{ foreman_provisioning_hammer }} template add-operatingsystem --id {{ item.Id }} --operatingsystem 'Ubuntu 24.04' - with_items: "{{ preseed_templates }}" - -- name: 'set default templates for Ubuntu 24.04' - shell: > - {{ foreman_provisioning_hammer }} os set-default-template --id {{ foreman_provisioning_ubuntu2404.Id }} --provisioning-template-id {{ item.Id }} - with_items: "{{ preseed_templates }}" +- name: "Set default template for Ubuntu 24.04" # noqa: args[module] + theforeman.foreman.os_default_template: + operatingsystem: "Ubuntu 24.04" + template_kind: "{{ item.template_kind_name }}" + provisioning_template: "{{ item.name }}" + state: present + loop: "{{ result.resources | sort(attribute='name') | unique(attribute='template_kind_name') }}" From d0c74e96de0057db4ce933d5e73cac27b5653b1a Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Tue, 3 Dec 2024 13:15:49 +0100 Subject: [PATCH 11/13] Set unattended url using fam --- roles/foreman_provisioning/tasks/main.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/roles/foreman_provisioning/tasks/main.yml b/roles/foreman_provisioning/tasks/main.yml index 75eee759b..da1904dca 100644 --- a/roles/foreman_provisioning/tasks/main.yml +++ b/roles/foreman_provisioning/tasks/main.yml @@ -13,8 +13,9 @@ # TODO verify - should not be needed, DNS should work just fine - name: 'set unattended_url' - shell: > - {{ foreman_provisioning_hammer }} settings set --name unattended_url --value 'http://{{ foreman_provisioning_ip_address }}' + theforeman.foreman.setting: + name: unattended_url + value: "http://{{ foreman_provisioning_ip_address }}" - name: 'find hostgroup Base' shell: > From 605a7cf330067188226bfd2f5e13280261da6be2 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Tue, 3 Dec 2024 13:34:31 +0100 Subject: [PATCH 12/13] Make Ubuntu use autoinstall variant of preseed templates --- roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml b/roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml index c0a493022..ba3e2b441 100644 --- a/roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml +++ b/roles/foreman_provisioning/tasks/configure_ubuntu_24_04.yml @@ -26,4 +26,4 @@ template_kind: "{{ item.template_kind_name }}" provisioning_template: "{{ item.name }}" state: present - loop: "{{ result.resources | sort(attribute='name') | unique(attribute='template_kind_name') }}" + loop: "{{ result.resources | sort(attribute='name', reverse=True) | unique(attribute='template_kind_name') }}" From 954d5c997cf8e8ef00aba1480ea302ffdfade2d4 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Tue, 3 Dec 2024 13:36:09 +0100 Subject: [PATCH 13/13] Make centos medium name configurable --- roles/foreman_provisioning/defaults/main.yml | 1 + roles/foreman_provisioning/tasks/configure_centos_9.yml | 2 +- roles/foreman_provisioning/tasks/main.yml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/roles/foreman_provisioning/defaults/main.yml b/roles/foreman_provisioning/defaults/main.yml index 88428bed8..1f922c293 100644 --- a/roles/foreman_provisioning/defaults/main.yml +++ b/roles/foreman_provisioning/defaults/main.yml @@ -12,3 +12,4 @@ foreman_provisioning_network: 192.168.73.0 foreman_provisioning_installer_options: [] foreman_provisioning_domain: example.com foreman_provisioning_foreman_version: "{{ foreman_repositories_version | default('nightly') }}" +foreman_provisioning_centos_medium_name: "CentOS Stream 9 mirror" diff --git a/roles/foreman_provisioning/tasks/configure_centos_9.yml b/roles/foreman_provisioning/tasks/configure_centos_9.yml index adfac4856..e444e2411 100644 --- a/roles/foreman_provisioning/tasks/configure_centos_9.yml +++ b/roles/foreman_provisioning/tasks/configure_centos_9.yml @@ -12,7 +12,7 @@ architectures: - x86_64 media: - - CentOS Stream 9 mirror + - "{{ foreman_provisioning_centos_medium_name }}" provisioning_templates: "{{ result.resources | map(attribute='name') }}" ptables: - Kickstart default diff --git a/roles/foreman_provisioning/tasks/main.yml b/roles/foreman_provisioning/tasks/main.yml index da1904dca..530ff3c1c 100644 --- a/roles/foreman_provisioning/tasks/main.yml +++ b/roles/foreman_provisioning/tasks/main.yml @@ -61,7 +61,7 @@ {{ foreman_provisioning_hammer }} hostgroup create --name 'CentOS 9 Mirror' --operatingsystem 'CentOS_Stream 9' - --medium 'CentOS Stream 9 mirror' + --medium '{{ foreman_provisioning_centos_medium_name }}' --partition-table 'Kickstart default' --parent 'Base' {{ foreman_provisioning_hammer_taxonomy_params }}