From c08b8e7c7c2b7484aa7b229676a0ecd4874279f4 Mon Sep 17 00:00:00 2001 From: akumari Date: Wed, 11 Sep 2024 01:34:31 +0530 Subject: [PATCH] Refactor CentOS provisioning to use theforeman.foreman modules This PR refactors the CentOS Stream 9 provisioning tasks by replacing Hammer CLI commands with theforeman.foreman Ansible modules. --- requirements.yml | 3 + roles/foreman_provisioning/defaults/main.yml | 3 + .../tasks/configure_centos_9.yml | 65 ++++++++----------- 3 files changed, 32 insertions(+), 39 deletions(-) diff --git a/requirements.yml b/requirements.yml index eea98b91a..d9acb0b61 100644 --- a/requirements.yml +++ b/requirements.yml @@ -1,4 +1,7 @@ collections: + - name: https://github.com/theforeman/foreman-ansible-modules.git + type: git + - name: https://github.com/theforeman/foreman-operations-collection type: git diff --git a/roles/foreman_provisioning/defaults/main.yml b/roles/foreman_provisioning/defaults/main.yml index 88428bed8..f29e91fa3 100644 --- a/roles/foreman_provisioning/defaults/main.yml +++ b/roles/foreman_provisioning/defaults/main.yml @@ -12,3 +12,6 @@ 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_username: "admin" +foreman_provisioning_password: "changeme" +foreman_provisioning_server_url: "https://foreman.example.com" diff --git a/roles/foreman_provisioning/tasks/configure_centos_9.yml b/roles/foreman_provisioning/tasks/configure_centos_9.yml index bb6de6e56..ce1abee21 100644 --- a/roles/foreman_provisioning/tasks/configure_centos_9.yml +++ b/roles/foreman_provisioning/tasks/configure_centos_9.yml @@ -1,40 +1,27 @@ -- name: "set CentOS medium name" - set_fact: - centos_medium_name: "CentOS Stream 9 mirror" +- name: "Ensure CentOS Stream 9" + theforeman.foreman.operatingsystem: + username: "{{ foreman_provisioning_username }}" + password: "{{ foreman_provisioning_password }}" + server_url: "{{ foreman_provisioning_server_url }}" + name: CentOS Stream + family: Redhat + major: 9 + architectures: + - x86_64 + media: + - CentOS Stream 9 mirror + provisioning_templates: + - Kickstart default + ptables: + - Kickstart default + state: present -- name: "create CentOS 9" - shell: > - {{ foreman_provisioning_hammer }} os info --title "CentOS 9" || - {{ foreman_provisioning_hammer }} os create - --name CentOS --major 9 --architectures x86_64 --family 'Redhat' --media '{{ centos_medium_name }}' --partition-tables 'Kickstart default' - -- name: "find CentOS 9" - shell: > - {{ foreman_provisioning_hammer }} --output json os info --name "CentOS 9" || - {{ foreman_provisioning_hammer }} --output json os info --title "CentOS 9" - register: foreman_provisioning_centos_json - ignore_errors: True - -- name: "get CentOS 9 info" - set_fact: - foreman_provisioning_centos9: "{{ foreman_provisioning_centos9_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 CentOS 9" - shell: > - {{ foreman_provisioning_hammer }} template add-operatingsystem --id {{ item.Id }} --operatingsystem 'CentOS 9' - with_items: "{{ kickstart_templates }}" - -- name: "set default templates for CentOS 9" - shell: > - {{ foreman_provisioning_hammer }} os set-default-template --id {{ foreman_provisioning_centos9.Id }} --provisioning-template-id {{ item.Id }} - with_items: "{{ kickstart_templates }}" +- name: "Set default template for CentOS Stream 9" + theforeman.foreman.os_default_template: + username: "{{ foreman_provisioning_username }}" + password: "{{ foreman_provisioning_password }}" + server_url: "{{ foreman_provisioning_server_url }}" + operatingsystem: "CentOS Stream 9" + template_kind: "kickstart" + provisioning_template: "Kickstart default" + state: present