From a97a51ec7e5160d3052097313c316c567704bba2 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Mon, 16 Jun 2025 12:12:26 +0200 Subject: [PATCH 01/18] make plugins configurable --- src/playbooks/deploy/metadata.obsah.yaml | 4 ++++ src/playbooks/setup-hammer/setup-hammer.yaml | 1 + src/roles/foreman/tasks/main.yaml | 4 ++++ src/roles/hammer/defaults/main.yml | 9 ++++----- src/vars/base.yaml | 1 + src/vars/defaults.yml | 4 ++++ 6 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/playbooks/deploy/metadata.obsah.yaml b/src/playbooks/deploy/metadata.obsah.yaml index 6ce868ec2..080731660 100644 --- a/src/playbooks/deploy/metadata.obsah.yaml +++ b/src/playbooks/deploy/metadata.obsah.yaml @@ -11,6 +11,10 @@ variables: help: Number of workers for Puma. pulp_worker_count: help: Number of Pulp workers. Defaults to 8 or the number of CPU cores, whichever is smaller. + plugins: + parameter: --plugin + help: Plugins to enable in this deployment. + action: append include: - _certificate_source diff --git a/src/playbooks/setup-hammer/setup-hammer.yaml b/src/playbooks/setup-hammer/setup-hammer.yaml index a1d125c66..7b2e561dd 100644 --- a/src/playbooks/setup-hammer/setup-hammer.yaml +++ b/src/playbooks/setup-hammer/setup-hammer.yaml @@ -9,5 +9,6 @@ - "../../vars/foreman.yml" vars: hammer_ca_certificate: "{{ server_ca_certificate }}" + hammer_plugins: "{{ plugins | map('replace', 'foreman-tasks', 'foreman_tasks') }}" roles: - hammer diff --git a/src/roles/foreman/tasks/main.yaml b/src/roles/foreman/tasks/main.yaml index 3c25aabd9..68fc3d484 100644 --- a/src/roles/foreman/tasks/main.yaml +++ b/src/roles/foreman/tasks/main.yaml @@ -105,6 +105,7 @@ - 'foreman-client-key,type=mount,target=/etc/foreman/client_key.pem' env: FOREMAN_PUMA_WORKERS: "{{ foreman_puma_workers }}" + FOREMAN_ENABLED_PLUGINS: "{{ foreman_plugins | join(' ') }}" quadlet_options: - | [Install] @@ -136,6 +137,7 @@ DYNFLOW_SIDEKIQ_SCRIPT: "/usr/share/foreman/extras/dynflow-sidekiq.rb" DYNFLOW_REDIS_URL: "redis://localhost:6379/6" REDIS_PROVIDER: "DYNFLOW_REDIS_URL" + FOREMAN_ENABLED_PLUGINS: "{{ foreman_plugins | join(' ') }}" command: "/usr/libexec/foreman/sidekiq-selinux -e production -r /usr/share/foreman/extras/dynflow-sidekiq.rb -C /etc/foreman/dynflow/%i.yml" quadlet_options: - | @@ -175,6 +177,8 @@ detach: false working_dir: /usr/share/foreman network: host + env: + FOREMAN_ENABLED_PLUGINS: "{{ foreman_plugins | join(' ') }}" secrets: - 'foreman-database-url,type=env,target=DATABASE_URL' - 'foreman-seed-admin-user,type=env,target=SEED_ADMIN_USER' diff --git a/src/roles/hammer/defaults/main.yml b/src/roles/hammer/defaults/main.yml index 030d4bfd1..ab69142d6 100644 --- a/src/roles/hammer/defaults/main.yml +++ b/src/roles/hammer/defaults/main.yml @@ -1,8 +1,7 @@ --- hammer_foreman_server_url: "https://{{ ansible_facts['fqdn'] }}" hammer_ca_certificate: "" -hammer_packages: - - hammer-cli-plugin-foreman - - hammer-cli-plugin-foreman_tasks - - hammer-cli-plugin-foreman_remote_execution - - hammer-cli-plugin-katello +hammer_default_plugins: + - foreman +hammer_plugins: [] +hammer_packages: "{{ (hammer_default_plugins+hammer_plugins) | map('regex_replace', '^', 'hammer-cli-plugin-') }}" diff --git a/src/vars/base.yaml b/src/vars/base.yaml index 5ad8d2f70..af2b5666f 100644 --- a/src/vars/base.yaml +++ b/src/vars/base.yaml @@ -20,6 +20,7 @@ foreman_client_key: "{{ client_key }}" foreman_client_certificate: "{{ client_certificate }}" foreman_oauth_consumer_key: abcdefghijklmnopqrstuvwxyz123456 foreman_oauth_consumer_secret: abcdefghijklmnopqrstuvwxyz123456 +foreman_plugins: "{{ plugins }}" foreman_url: "https://{{ ansible_facts['fqdn'] }}" httpd_server_ca_certificate: "{{ server_ca_certificate }}" diff --git a/src/vars/defaults.yml b/src/vars/defaults.yml index 879ac747f..74ce6dd4d 100644 --- a/src/vars/defaults.yml +++ b/src/vars/defaults.yml @@ -2,3 +2,7 @@ certificate_source: default database_mode: internal tuning_profile: development +plugins: + - foreman-tasks + - foreman_remote_execution + - katello From 9bfca4041b7df6ff50b69ca7f512b28464eb6408 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Wed, 13 Aug 2025 08:36:44 +0200 Subject: [PATCH 02/18] set pulp_enabled_plugins --- src/roles/pulp/defaults/main.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/roles/pulp/defaults/main.yaml b/src/roles/pulp/defaults/main.yaml index d2c5529ab..23eb05d39 100644 --- a/src/roles/pulp/defaults/main.yaml +++ b/src/roles/pulp/defaults/main.yaml @@ -21,6 +21,15 @@ pulp_pulp_url: "http://{{ ansible_facts['fqdn'] }}:24817" pulp_enable_analytics: false +pulp_default_plugins: + - pulp_certguard + - pulp_file + - pulp_smart_proxy +pulp_plugins: + - pulp_container + - pulp_rpm +pulp_enabled_plugins: "{{ pulp_default_plugins + pulp_plugins }}" + pulp_database_name: pulp pulp_database_user: pulp pulp_database_host: localhost @@ -35,6 +44,8 @@ pulp_settings_database_env: PULP_DATABASES__default__PORT: "{{ pulp_database_port }}" PULP_DATABASES__default__OPTIONS__sslmode: "{{ pulp_database_ssl_mode }}" PULP_DATABASES__default__OPTIONS__sslrootcert: "{{ pulp_database_ssl_ca }}" + PULP_ENABLED_PLUGINS: >- + {{ pulp_enabled_plugins }} # The arrays (AUTH_BACKENDS, AUTH_CLASSES) need to be strings # that get parsed to array by dynaconf, so we're using block scalars for them From d86c41243a17a8f4b743ecd6d5d372620fa2af28 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Wed, 13 Aug 2025 10:56:03 +0200 Subject: [PATCH 03/18] expose features, not plugins --- src/playbooks/deploy/metadata.obsah.yaml | 6 +++--- src/playbooks/setup-hammer/setup-hammer.yaml | 2 +- src/vars/base.yaml | 3 ++- src/vars/defaults.yml | 4 +++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/playbooks/deploy/metadata.obsah.yaml b/src/playbooks/deploy/metadata.obsah.yaml index 080731660..42984c4dd 100644 --- a/src/playbooks/deploy/metadata.obsah.yaml +++ b/src/playbooks/deploy/metadata.obsah.yaml @@ -11,9 +11,9 @@ variables: help: Number of workers for Puma. pulp_worker_count: help: Number of Pulp workers. Defaults to 8 or the number of CPU cores, whichever is smaller. - plugins: - parameter: --plugin - help: Plugins to enable in this deployment. + features: + parameter: --feature + help: Features to enable in this deployment. action: append include: diff --git a/src/playbooks/setup-hammer/setup-hammer.yaml b/src/playbooks/setup-hammer/setup-hammer.yaml index 7b2e561dd..7b40f449e 100644 --- a/src/playbooks/setup-hammer/setup-hammer.yaml +++ b/src/playbooks/setup-hammer/setup-hammer.yaml @@ -9,6 +9,6 @@ - "../../vars/foreman.yml" vars: hammer_ca_certificate: "{{ server_ca_certificate }}" - hammer_plugins: "{{ plugins | map('replace', 'foreman-tasks', 'foreman_tasks') }}" + hammer_plugins: "{{ features | reject('contains', 'content/') | map('replace', 'foreman-tasks', 'foreman_tasks') | list }}" roles: - hammer diff --git a/src/vars/base.yaml b/src/vars/base.yaml index af2b5666f..2969c3cc0 100644 --- a/src/vars/base.yaml +++ b/src/vars/base.yaml @@ -20,7 +20,7 @@ foreman_client_key: "{{ client_key }}" foreman_client_certificate: "{{ client_certificate }}" foreman_oauth_consumer_key: abcdefghijklmnopqrstuvwxyz123456 foreman_oauth_consumer_secret: abcdefghijklmnopqrstuvwxyz123456 -foreman_plugins: "{{ plugins }}" +foreman_plugins: "{{ features | reject('contains', 'content/') }}" foreman_url: "https://{{ ansible_facts['fqdn'] }}" httpd_server_ca_certificate: "{{ server_ca_certificate }}" @@ -30,3 +30,4 @@ httpd_server_key: "{{ server_key }}" pulp_content_origin: "https://{{ ansible_facts['fqdn'] }}" pulp_pulp_url: "https://{{ ansible_facts['fqdn'] }}" +pulp_plugins: "{{ features | select('contains', 'content/') | map('replace', 'content/', 'pulp_') | list }}" diff --git a/src/vars/defaults.yml b/src/vars/defaults.yml index 74ce6dd4d..48c138af6 100644 --- a/src/vars/defaults.yml +++ b/src/vars/defaults.yml @@ -2,7 +2,9 @@ certificate_source: default database_mode: internal tuning_profile: development -plugins: +features: - foreman-tasks - foreman_remote_execution - katello + - content/container + - content/rpm From 1277bc48e25385ed00670b8c22ed5674ee122545 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Thu, 6 Nov 2025 14:19:47 +0100 Subject: [PATCH 04/18] make hammer a feature --- .github/workflows/test.yml | 9 +++++---- DEVELOPMENT.md | 2 +- src/playbooks/deploy/deploy.yaml | 3 +++ src/playbooks/setup-hammer/metadata.obsah.yaml | 6 ------ src/playbooks/setup-hammer/setup-hammer.yaml | 14 -------------- src/vars/base.yaml | 3 +++ 6 files changed, 12 insertions(+), 25 deletions(-) delete mode 100644 src/playbooks/setup-hammer/metadata.obsah.yaml delete mode 100644 src/playbooks/setup-hammer/setup-hammer.yaml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d09cfdb21..875ccf3b8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -75,9 +75,10 @@ jobs: - name: Run deployment run: | ./foremanctl deploy --certificate-source=${{ matrix.certificate_source }} --foreman-initial-admin-password=changeme - - name: Setup hammer + - name: Add optional feature - hammer + # FIXME: We need to repeat the default features once run: | - ./foremanctl setup-hammer + ./foremanctl deploy --feature foreman-tasks --feature foreman_remote_execution --feature katello --feature content/container --feature content/rpm --feature hammer - name: Set up Foreman Proxy run: | ./foremanctl setup-foreman-proxy @@ -193,9 +194,9 @@ jobs: - name: Run deployment run: | ./foremanctl deploy - - name: Setup hammer + - name: Add optional feature - hammer run: | - ./foremanctl setup-hammer + ./foremanctl deploy --feature hammer - name: Set up Foreman Proxy run: | ./foremanctl setup-foreman-proxy diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 4e77c6dd6..33cd8078e 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -34,7 +34,7 @@ source .venv/bin/activate ``` ./forge setup-repositories -./foremanctl setup-hammer +./foremanctl deploy --feature hammer ``` To teardown the environment: diff --git a/src/playbooks/deploy/deploy.yaml b/src/playbooks/deploy/deploy.yaml index 59a525a80..c3098a402 100644 --- a/src/playbooks/deploy/deploy.yaml +++ b/src/playbooks/deploy/deploy.yaml @@ -29,4 +29,7 @@ - pulp - foreman - role: systemd_target + - role: hammer + when: + - "'hammer' in features" - post_install diff --git a/src/playbooks/setup-hammer/metadata.obsah.yaml b/src/playbooks/setup-hammer/metadata.obsah.yaml deleted file mode 100644 index 83dd65828..000000000 --- a/src/playbooks/setup-hammer/metadata.obsah.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -help: | - Setup hammer - -include: - - _certificate_source diff --git a/src/playbooks/setup-hammer/setup-hammer.yaml b/src/playbooks/setup-hammer/setup-hammer.yaml deleted file mode 100644 index 7b40f449e..000000000 --- a/src/playbooks/setup-hammer/setup-hammer.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -- name: Setup hammer on the quadlet machine - hosts: - - quadlet - become: true - vars_files: - - "../../vars/defaults.yml" - - "../../vars/{{ certificate_source }}_certificates.yml" - - "../../vars/foreman.yml" - vars: - hammer_ca_certificate: "{{ server_ca_certificate }}" - hammer_plugins: "{{ features | reject('contains', 'content/') | map('replace', 'foreman-tasks', 'foreman_tasks') | list }}" - roles: - - hammer diff --git a/src/vars/base.yaml b/src/vars/base.yaml index 2969c3cc0..0bbc81982 100644 --- a/src/vars/base.yaml +++ b/src/vars/base.yaml @@ -31,3 +31,6 @@ httpd_server_key: "{{ server_key }}" pulp_content_origin: "https://{{ ansible_facts['fqdn'] }}" pulp_pulp_url: "https://{{ ansible_facts['fqdn'] }}" pulp_plugins: "{{ features | select('contains', 'content/') | map('replace', 'content/', 'pulp_') | list }}" + +hammer_ca_certificate: "{{ server_ca_certificate }}" +hammer_plugins: "{{ foreman_plugins | map('replace', 'foreman-tasks', 'foreman_tasks') | list }}" From 15e8e8081939e4ed9d035e86324c7736fc1a7a2c Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Thu, 6 Nov 2025 15:41:19 +0100 Subject: [PATCH 05/18] assume tasks and rex are pulled in by gem dependencies --- .github/workflows/test.yml | 2 +- src/vars/defaults.yml | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 875ccf3b8..3abd343d1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -78,7 +78,7 @@ jobs: - name: Add optional feature - hammer # FIXME: We need to repeat the default features once run: | - ./foremanctl deploy --feature foreman-tasks --feature foreman_remote_execution --feature katello --feature content/container --feature content/rpm --feature hammer + ./foremanctl deploy --feature katello --feature content/container --feature content/rpm --feature hammer - name: Set up Foreman Proxy run: | ./foremanctl setup-foreman-proxy diff --git a/src/vars/defaults.yml b/src/vars/defaults.yml index 48c138af6..4cfe70a60 100644 --- a/src/vars/defaults.yml +++ b/src/vars/defaults.yml @@ -3,8 +3,6 @@ certificate_source: default database_mode: internal tuning_profile: development features: - - foreman-tasks - - foreman_remote_execution - katello - content/container - content/rpm From 88123f01b77266dad0a5535c1b3aded725ce6621 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Fri, 7 Nov 2025 08:41:32 +0100 Subject: [PATCH 06/18] add profiles --- .github/workflows/test.yml | 3 +-- development/playbooks/deploy-dev/deploy-dev.yaml | 1 + src/playbooks/deploy/deploy.yaml | 3 ++- src/playbooks/deploy/metadata.obsah.yaml | 4 +++- src/vars/base.yaml | 4 ++-- src/vars/defaults.yml | 7 +++---- src/vars/profiles/katello.yml | 5 +++++ 7 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 src/vars/profiles/katello.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3abd343d1..04228aafe 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -76,9 +76,8 @@ jobs: run: | ./foremanctl deploy --certificate-source=${{ matrix.certificate_source }} --foreman-initial-admin-password=changeme - name: Add optional feature - hammer - # FIXME: We need to repeat the default features once run: | - ./foremanctl deploy --feature katello --feature content/container --feature content/rpm --feature hammer + ./foremanctl deploy --feature hammer - name: Set up Foreman Proxy run: | ./foremanctl setup-foreman-proxy diff --git a/development/playbooks/deploy-dev/deploy-dev.yaml b/development/playbooks/deploy-dev/deploy-dev.yaml index dfa10cee7..32c41098d 100644 --- a/development/playbooks/deploy-dev/deploy-dev.yaml +++ b/development/playbooks/deploy-dev/deploy-dev.yaml @@ -4,6 +4,7 @@ become: true vars_files: - "../../../src/vars/defaults.yml" + - "../../../src/vars/profiles/{{ profile }}.yml" - "../../../src/vars/{{ certificate_source }}_certificates.yml" - "../../../src/vars/images.yml" - "../../../src/vars/database.yml" diff --git a/src/playbooks/deploy/deploy.yaml b/src/playbooks/deploy/deploy.yaml index c3098a402..634ff62f4 100644 --- a/src/playbooks/deploy/deploy.yaml +++ b/src/playbooks/deploy/deploy.yaml @@ -5,6 +5,7 @@ become: true vars_files: - "../../vars/defaults.yml" + - "../../vars/profiles/{{ profile }}.yml" - "../../vars/{{ certificate_source }}_certificates.yml" - "../../vars/images.yml" - "../../vars/database.yml" @@ -31,5 +32,5 @@ - role: systemd_target - role: hammer when: - - "'hammer' in features" + - "'hammer' in enabled_features" - post_install diff --git a/src/playbooks/deploy/metadata.obsah.yaml b/src/playbooks/deploy/metadata.obsah.yaml index 42984c4dd..3f91f7ffe 100644 --- a/src/playbooks/deploy/metadata.obsah.yaml +++ b/src/playbooks/deploy/metadata.obsah.yaml @@ -11,9 +11,11 @@ variables: help: Number of workers for Puma. pulp_worker_count: help: Number of Pulp workers. Defaults to 8 or the number of CPU cores, whichever is smaller. + profile: + help: Base profile to use in this deployment. features: parameter: --feature - help: Features to enable in this deployment. + help: Additional features to enable in this deployment. action: append include: diff --git a/src/vars/base.yaml b/src/vars/base.yaml index 0bbc81982..b07214474 100644 --- a/src/vars/base.yaml +++ b/src/vars/base.yaml @@ -20,7 +20,7 @@ foreman_client_key: "{{ client_key }}" foreman_client_certificate: "{{ client_certificate }}" foreman_oauth_consumer_key: abcdefghijklmnopqrstuvwxyz123456 foreman_oauth_consumer_secret: abcdefghijklmnopqrstuvwxyz123456 -foreman_plugins: "{{ features | reject('contains', 'content/') }}" +foreman_plugins: "{{ enabled_features | reject('contains', 'content/') | reject('contains', 'hammer') }}" foreman_url: "https://{{ ansible_facts['fqdn'] }}" httpd_server_ca_certificate: "{{ server_ca_certificate }}" @@ -30,7 +30,7 @@ httpd_server_key: "{{ server_key }}" pulp_content_origin: "https://{{ ansible_facts['fqdn'] }}" pulp_pulp_url: "https://{{ ansible_facts['fqdn'] }}" -pulp_plugins: "{{ features | select('contains', 'content/') | map('replace', 'content/', 'pulp_') | list }}" +pulp_plugins: "{{ enabled_features | select('contains', 'content/') | map('replace', 'content/', 'pulp_') | list }}" hammer_ca_certificate: "{{ server_ca_certificate }}" hammer_plugins: "{{ foreman_plugins | map('replace', 'foreman-tasks', 'foreman_tasks') | list }}" diff --git a/src/vars/defaults.yml b/src/vars/defaults.yml index 4cfe70a60..9eb91ae8e 100644 --- a/src/vars/defaults.yml +++ b/src/vars/defaults.yml @@ -2,7 +2,6 @@ certificate_source: default database_mode: internal tuning_profile: development -features: - - katello - - content/container - - content/rpm +profile: katello +features: [] +enabled_features: "{{ profile_features + features }}" diff --git a/src/vars/profiles/katello.yml b/src/vars/profiles/katello.yml new file mode 100644 index 000000000..a01edb9c2 --- /dev/null +++ b/src/vars/profiles/katello.yml @@ -0,0 +1,5 @@ +--- +profile_features: + - katello + - content/container + - content/rpm From 2c787efa6a9488a6af2cd39a82d5da140a810d63 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Fri, 7 Nov 2025 10:20:47 +0100 Subject: [PATCH 07/18] ensure features are unique --- src/vars/defaults.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vars/defaults.yml b/src/vars/defaults.yml index 9eb91ae8e..be0447e79 100644 --- a/src/vars/defaults.yml +++ b/src/vars/defaults.yml @@ -4,4 +4,4 @@ database_mode: internal tuning_profile: development profile: katello features: [] -enabled_features: "{{ profile_features + features }}" +enabled_features: "{{ (profile_features + features) | unique }}" From 3ff946ab6b737ba4370d176f041412d457151cf0 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Thu, 13 Nov 2025 09:35:23 +0100 Subject: [PATCH 08/18] make foreman-proxy a feature --- .github/workflows/test.yml | 8 ++++---- src/playbooks/deploy/deploy.yaml | 3 +++ .../setup-foreman-proxy/metadata.obsah.yaml | 6 ------ .../setup-foreman-proxy.yaml | 17 ----------------- src/vars/base.yaml | 2 +- 5 files changed, 8 insertions(+), 28 deletions(-) delete mode 100644 src/playbooks/setup-foreman-proxy/metadata.obsah.yaml delete mode 100644 src/playbooks/setup-foreman-proxy/setup-foreman-proxy.yaml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 04228aafe..4ca24b56d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -78,9 +78,9 @@ jobs: - name: Add optional feature - hammer run: | ./foremanctl deploy --feature hammer - - name: Set up Foreman Proxy + - name: Add optional feature - foreman-proxy run: | - ./foremanctl setup-foreman-proxy + ./foremanctl deploy --feature foreman-proxy - name: Run tests run: | ./forge test --pytest-args="--certificate-source=${{ matrix.certificate_source }}" @@ -196,9 +196,9 @@ jobs: - name: Add optional feature - hammer run: | ./foremanctl deploy --feature hammer - - name: Set up Foreman Proxy + - name: Add optional feature - foreman-proxy run: | - ./foremanctl setup-foreman-proxy + ./foremanctl deploy --feature foreman-proxy - name: Run tests run: | ./forge test diff --git a/src/playbooks/deploy/deploy.yaml b/src/playbooks/deploy/deploy.yaml index 634ff62f4..909a02288 100644 --- a/src/playbooks/deploy/deploy.yaml +++ b/src/playbooks/deploy/deploy.yaml @@ -30,6 +30,9 @@ - pulp - foreman - role: systemd_target + - role: foreman_proxy + when: + - "'foreman-proxy' in enabled_features" - role: hammer when: - "'hammer' in enabled_features" diff --git a/src/playbooks/setup-foreman-proxy/metadata.obsah.yaml b/src/playbooks/setup-foreman-proxy/metadata.obsah.yaml deleted file mode 100644 index 04f85f245..000000000 --- a/src/playbooks/setup-foreman-proxy/metadata.obsah.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -help: | - Set up Foreman Proxy - -include: - - _certificate_source diff --git a/src/playbooks/setup-foreman-proxy/setup-foreman-proxy.yaml b/src/playbooks/setup-foreman-proxy/setup-foreman-proxy.yaml deleted file mode 100644 index a73f6bd45..000000000 --- a/src/playbooks/setup-foreman-proxy/setup-foreman-proxy.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -- name: Set up Foreman Proxy - hosts: - - quadlet - become: true - vars_files: - - "../../vars/defaults.yml" - - "../../vars/{{ certificate_source }}_certificates.yml" - - "../../vars/foreman.yml" - - "../../vars/images.yml" - vars: - foreman_url: "https://{{ ansible_facts['fqdn'] }}" - - roles: - - pre_install - - checks - - foreman_proxy diff --git a/src/vars/base.yaml b/src/vars/base.yaml index b07214474..bb0d369a0 100644 --- a/src/vars/base.yaml +++ b/src/vars/base.yaml @@ -20,7 +20,7 @@ foreman_client_key: "{{ client_key }}" foreman_client_certificate: "{{ client_certificate }}" foreman_oauth_consumer_key: abcdefghijklmnopqrstuvwxyz123456 foreman_oauth_consumer_secret: abcdefghijklmnopqrstuvwxyz123456 -foreman_plugins: "{{ enabled_features | reject('contains', 'content/') | reject('contains', 'hammer') }}" +foreman_plugins: "{{ enabled_features | reject('contains', 'content/') | reject('contains', 'hammer') | reject('contains', 'foreman-proxy') }}" foreman_url: "https://{{ ansible_facts['fqdn'] }}" httpd_server_ca_certificate: "{{ server_ca_certificate }}" From e74c042e47b0ed2d8c461730894d9482a25ae40b Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Thu, 13 Nov 2025 09:43:15 +0100 Subject: [PATCH 09/18] move profile/feature params into a common thing --- src/playbooks/_profile_features/metadata.obsah.yaml | 8 ++++++++ src/playbooks/deploy/metadata.obsah.yaml | 7 +------ 2 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 src/playbooks/_profile_features/metadata.obsah.yaml diff --git a/src/playbooks/_profile_features/metadata.obsah.yaml b/src/playbooks/_profile_features/metadata.obsah.yaml new file mode 100644 index 000000000..28faeb727 --- /dev/null +++ b/src/playbooks/_profile_features/metadata.obsah.yaml @@ -0,0 +1,8 @@ +--- +variables: + profile: + help: Base profile to use in this deployment. + features: + parameter: --feature + help: Additional features to enable in this deployment. + action: append diff --git a/src/playbooks/deploy/metadata.obsah.yaml b/src/playbooks/deploy/metadata.obsah.yaml index 3f91f7ffe..c249c3bb4 100644 --- a/src/playbooks/deploy/metadata.obsah.yaml +++ b/src/playbooks/deploy/metadata.obsah.yaml @@ -11,14 +11,9 @@ variables: help: Number of workers for Puma. pulp_worker_count: help: Number of Pulp workers. Defaults to 8 or the number of CPU cores, whichever is smaller. - profile: - help: Base profile to use in this deployment. - features: - parameter: --feature - help: Additional features to enable in this deployment. - action: append include: - _certificate_source - _database_mode - _database_connection + - _profile_features From 07f769a20271b206788e303ea20368633142e919 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Thu, 13 Nov 2025 09:44:03 +0100 Subject: [PATCH 10/18] make pull-images pull proxy image if feature is enabled --- src/playbooks/pull-images/metadata.obsah.yaml | 1 + src/playbooks/pull-images/pull-images.yaml | 9 +++++++++ src/vars/images.yml | 3 +++ 3 files changed, 13 insertions(+) diff --git a/src/playbooks/pull-images/metadata.obsah.yaml b/src/playbooks/pull-images/metadata.obsah.yaml index f1c01fbd7..b2751f85c 100644 --- a/src/playbooks/pull-images/metadata.obsah.yaml +++ b/src/playbooks/pull-images/metadata.obsah.yaml @@ -4,3 +4,4 @@ help: | include: - _database_mode + - _profile_features diff --git a/src/playbooks/pull-images/pull-images.yaml b/src/playbooks/pull-images/pull-images.yaml index 59c93b4b5..aa3054173 100644 --- a/src/playbooks/pull-images/pull-images.yaml +++ b/src/playbooks/pull-images/pull-images.yaml @@ -4,7 +4,9 @@ - quadlet vars_files: - "../../vars/defaults.yml" + - "../../vars/profiles/{{ profile }}.yml" - "../../vars/images.yml" + - "../../vars/base.yaml" become: true tasks: - name: Install podman @@ -17,6 +19,13 @@ name: "{{ item }}" loop: "{{ images }}" + - name: Pull foreman_proxy images + containers.podman.podman_image: + name: "{{ item }}" + loop: "{{ foreman_proxy_images }}" + when: + - "'foreman-proxy' in enabled_features" + - name: Pull database images containers.podman.podman_image: name: "{{ item }}" diff --git a/src/vars/images.yml b/src/vars/images.yml index dc634981f..669d64fd7 100644 --- a/src/vars/images.yml +++ b/src/vars/images.yml @@ -21,3 +21,6 @@ images: database_images: - "{{ postgresql_container_image }}:{{ postgresql_container_tag }}" + +foreman_proxy_images: + - "{{ foreman_proxy_container_image }}:{{ foreman_proxy_container_tag }}" From d19a53baf8b7e23bb88e16415b7570d9930ad102 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Thu, 13 Nov 2025 09:53:10 +0100 Subject: [PATCH 11/18] add optional features after initial deployment --- .github/workflows/test.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4ca24b56d..02afdb0b1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -181,6 +181,12 @@ jobs: - name: Run deployment run: | ./foremanctl deploy --foreman-initial-admin-password=changeme + - name: Add optional feature - hammer + run: | + ./foremanctl deploy --feature hammer + - name: Add optional feature - foreman-proxy + run: | + ./foremanctl deploy --feature foreman-proxy - name: Stop services run: vagrant ssh quadlet -- sudo systemctl stop foreman.target @@ -193,12 +199,6 @@ jobs: - name: Run deployment run: | ./foremanctl deploy - - name: Add optional feature - hammer - run: | - ./foremanctl deploy --feature hammer - - name: Add optional feature - foreman-proxy - run: | - ./foremanctl deploy --feature foreman-proxy - name: Run tests run: | ./forge test From 4ab06d1d968e442fe80e3077ff5f73f1808d395f Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Fri, 14 Nov 2025 13:41:20 +0100 Subject: [PATCH 12/18] rename to --add-feature --- .github/workflows/test.yml | 8 ++++---- DEVELOPMENT.md | 2 +- src/playbooks/_profile_features/metadata.obsah.yaml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 02afdb0b1..375f0562d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -77,10 +77,10 @@ jobs: ./foremanctl deploy --certificate-source=${{ matrix.certificate_source }} --foreman-initial-admin-password=changeme - name: Add optional feature - hammer run: | - ./foremanctl deploy --feature hammer + ./foremanctl deploy --add-feature hammer - name: Add optional feature - foreman-proxy run: | - ./foremanctl deploy --feature foreman-proxy + ./foremanctl deploy --add-feature foreman-proxy - name: Run tests run: | ./forge test --pytest-args="--certificate-source=${{ matrix.certificate_source }}" @@ -183,10 +183,10 @@ jobs: ./foremanctl deploy --foreman-initial-admin-password=changeme - name: Add optional feature - hammer run: | - ./foremanctl deploy --feature hammer + ./foremanctl deploy --add-feature hammer - name: Add optional feature - foreman-proxy run: | - ./foremanctl deploy --feature foreman-proxy + ./foremanctl deploy --add-feature foreman-proxy - name: Stop services run: vagrant ssh quadlet -- sudo systemctl stop foreman.target diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 33cd8078e..469713510 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -34,7 +34,7 @@ source .venv/bin/activate ``` ./forge setup-repositories -./foremanctl deploy --feature hammer +./foremanctl deploy --add-feature hammer ``` To teardown the environment: diff --git a/src/playbooks/_profile_features/metadata.obsah.yaml b/src/playbooks/_profile_features/metadata.obsah.yaml index 28faeb727..2cf56509f 100644 --- a/src/playbooks/_profile_features/metadata.obsah.yaml +++ b/src/playbooks/_profile_features/metadata.obsah.yaml @@ -3,6 +3,6 @@ variables: profile: help: Base profile to use in this deployment. features: - parameter: --feature + parameter: --add-feature help: Additional features to enable in this deployment. action: append From 574536523507e5c25b32ee289350cdb6d55a333e Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Fri, 14 Nov 2025 13:53:47 +0100 Subject: [PATCH 13/18] document features and profiles --- docs/deployment.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/deployment.md b/docs/deployment.md index 55712cfd0..bcad37e26 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -23,6 +23,25 @@ For example, pre-pulling images to reduce the core deployment utility runtime. 6. Run deployment utility 7. Post deploy checks +### Features and Profiles + +To allow deployments with different sets of functionality enabled, the deployment utility supports features and profiles. + +- A feature is an abstract representation of "the deployed system can now do X", usually implemented by enabling a Foreman/Pulp/Hammer plugin (or a collection of these). +- A profile is a set of features that are enabled by default and can not be disabled. This is to allow common deployment types like "vanilla foreman", "katello", "satellite" and similar. + +Additionally to the functionality offered by plugins, we define the following "base" features: +- `foreman` to deploy the main Rails app and make the deployment a "Server" +- `foreman-proxy` to deploy the Foreman Proxy code +- `hammer` to deploy the base CLI + +These base features control which plugins are enabled when a feature is requested. +- `foreman` + `remote_execution` = `foreman_remote_execution` +- `foreman-proxy` + `remote_execution` = `smart_proxy_remote_execution_ssh` +- `hammer` + `remote_execution` = `hammer_cli_foreman_remote_execution` + +A deployment can have multiple base features enabled. + ### Authenticated Registry Handling In the non-default case where the image sources are supplied from an authenticated location users will need to inject a login step. From e18fb03404f366f0eb566ca57e19123e83880853 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Fri, 14 Nov 2025 14:17:57 +0100 Subject: [PATCH 14/18] use native obsah to add and remove features --- foremanctl.spec | 2 +- src/playbooks/_profile_features/metadata.obsah.yaml | 7 ++++++- src/requirements.txt | 2 +- src/vars/defaults.yml | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/foremanctl.spec b/foremanctl.spec index 58c8df469..8de4f0558 100644 --- a/foremanctl.spec +++ b/foremanctl.spec @@ -10,7 +10,7 @@ URL: https://github.com/theforeman/foremanctl Source: https://github.com/theforeman/foremanctl/releases/download/%{version}/%{name}-%{version}.tar.gz BuildArch: noarch -Requires: python3-obsah >= 1.4 +Requires: python3-obsah >= 1.6 # These are needed on the target host, which is usually localhost Recommends: podman diff --git a/src/playbooks/_profile_features/metadata.obsah.yaml b/src/playbooks/_profile_features/metadata.obsah.yaml index 2cf56509f..1ad168c58 100644 --- a/src/playbooks/_profile_features/metadata.obsah.yaml +++ b/src/playbooks/_profile_features/metadata.obsah.yaml @@ -5,4 +5,9 @@ variables: features: parameter: --add-feature help: Additional features to enable in this deployment. - action: append + action: append_unique + remove_features: + parameter: --remove-feature + help: Additional features to disable in this deployment. + action: remove + dest: features diff --git a/src/requirements.txt b/src/requirements.txt index 0ee29be64..f2532a3c2 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,2 +1,2 @@ -obsah >= 1.4 +obsah >= 1.6 requests diff --git a/src/vars/defaults.yml b/src/vars/defaults.yml index be0447e79..763918097 100644 --- a/src/vars/defaults.yml +++ b/src/vars/defaults.yml @@ -4,4 +4,4 @@ database_mode: internal tuning_profile: development profile: katello features: [] -enabled_features: "{{ (profile_features + features) | unique }}" +enabled_features: "{{ (profile_features + features) }}" From e015abd71c95ad223b17b9a3a3c3d0b67d071cdf Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Mon, 17 Nov 2025 10:09:19 +0100 Subject: [PATCH 15/18] use reject eq, not contains --- src/vars/base.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vars/base.yaml b/src/vars/base.yaml index bb0d369a0..58c760d07 100644 --- a/src/vars/base.yaml +++ b/src/vars/base.yaml @@ -20,7 +20,7 @@ foreman_client_key: "{{ client_key }}" foreman_client_certificate: "{{ client_certificate }}" foreman_oauth_consumer_key: abcdefghijklmnopqrstuvwxyz123456 foreman_oauth_consumer_secret: abcdefghijklmnopqrstuvwxyz123456 -foreman_plugins: "{{ enabled_features | reject('contains', 'content/') | reject('contains', 'hammer') | reject('contains', 'foreman-proxy') }}" +foreman_plugins: "{{ enabled_features | reject('contains', 'content/') | reject('eq', 'hammer') | reject('eq', 'foreman-proxy') }}" foreman_url: "https://{{ ansible_facts['fqdn'] }}" httpd_server_ca_certificate: "{{ server_ca_certificate }}" From b1ed7694ea0c9c2f0cd2908f496e43790fda4c90 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Mon, 17 Nov 2025 10:49:13 +0100 Subject: [PATCH 16/18] define (unused) foreman feature --- src/vars/base.yaml | 2 +- src/vars/profiles/katello.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vars/base.yaml b/src/vars/base.yaml index 58c760d07..23f898198 100644 --- a/src/vars/base.yaml +++ b/src/vars/base.yaml @@ -20,7 +20,7 @@ foreman_client_key: "{{ client_key }}" foreman_client_certificate: "{{ client_certificate }}" foreman_oauth_consumer_key: abcdefghijklmnopqrstuvwxyz123456 foreman_oauth_consumer_secret: abcdefghijklmnopqrstuvwxyz123456 -foreman_plugins: "{{ enabled_features | reject('contains', 'content/') | reject('eq', 'hammer') | reject('eq', 'foreman-proxy') }}" +foreman_plugins: "{{ enabled_features | reject('contains', 'content/') | reject('eq', 'hammer') | reject('eq', 'foreman-proxy') | reject('eq', 'foreman') }}" foreman_url: "https://{{ ansible_facts['fqdn'] }}" httpd_server_ca_certificate: "{{ server_ca_certificate }}" diff --git a/src/vars/profiles/katello.yml b/src/vars/profiles/katello.yml index a01edb9c2..d8a1e3c4c 100644 --- a/src/vars/profiles/katello.yml +++ b/src/vars/profiles/katello.yml @@ -1,5 +1,6 @@ --- profile_features: + - foreman - katello - content/container - content/rpm From 0be97b07bcb560a95787d74f111d44fac2873483 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Thu, 20 Nov 2025 12:22:23 +0100 Subject: [PATCH 17/18] rename profiles to flavors --- development/playbooks/deploy-dev/deploy-dev.yaml | 2 +- docs/deployment.md | 6 +++--- .../metadata.obsah.yaml | 4 ++-- src/playbooks/deploy/deploy.yaml | 2 +- src/playbooks/deploy/metadata.obsah.yaml | 2 +- src/playbooks/pull-images/metadata.obsah.yaml | 2 +- src/playbooks/pull-images/pull-images.yaml | 2 +- src/vars/defaults.yml | 4 ++-- src/vars/{profiles => flavors}/katello.yml | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) rename src/playbooks/{_profile_features => _flavor_features}/metadata.obsah.yaml (82%) rename src/vars/{profiles => flavors}/katello.yml (78%) diff --git a/development/playbooks/deploy-dev/deploy-dev.yaml b/development/playbooks/deploy-dev/deploy-dev.yaml index 32c41098d..738381cd4 100644 --- a/development/playbooks/deploy-dev/deploy-dev.yaml +++ b/development/playbooks/deploy-dev/deploy-dev.yaml @@ -4,7 +4,7 @@ become: true vars_files: - "../../../src/vars/defaults.yml" - - "../../../src/vars/profiles/{{ profile }}.yml" + - "../../../src/vars/flavors/{{ flavor }}.yml" - "../../../src/vars/{{ certificate_source }}_certificates.yml" - "../../../src/vars/images.yml" - "../../../src/vars/database.yml" diff --git a/docs/deployment.md b/docs/deployment.md index bcad37e26..2fd147904 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -23,12 +23,12 @@ For example, pre-pulling images to reduce the core deployment utility runtime. 6. Run deployment utility 7. Post deploy checks -### Features and Profiles +### Features and Flavors -To allow deployments with different sets of functionality enabled, the deployment utility supports features and profiles. +To allow deployments with different sets of functionality enabled, the deployment utility supports features and flavors. - A feature is an abstract representation of "the deployed system can now do X", usually implemented by enabling a Foreman/Pulp/Hammer plugin (or a collection of these). -- A profile is a set of features that are enabled by default and can not be disabled. This is to allow common deployment types like "vanilla foreman", "katello", "satellite" and similar. +- A flavor is a set of features that are enabled by default and can not be disabled. This is to allow common deployment types like "vanilla foreman", "katello", "satellite" and similar. Additionally to the functionality offered by plugins, we define the following "base" features: - `foreman` to deploy the main Rails app and make the deployment a "Server" diff --git a/src/playbooks/_profile_features/metadata.obsah.yaml b/src/playbooks/_flavor_features/metadata.obsah.yaml similarity index 82% rename from src/playbooks/_profile_features/metadata.obsah.yaml rename to src/playbooks/_flavor_features/metadata.obsah.yaml index 1ad168c58..d20ed4ee2 100644 --- a/src/playbooks/_profile_features/metadata.obsah.yaml +++ b/src/playbooks/_flavor_features/metadata.obsah.yaml @@ -1,7 +1,7 @@ --- variables: - profile: - help: Base profile to use in this deployment. + flavor: + help: Base flavor to use in this deployment. features: parameter: --add-feature help: Additional features to enable in this deployment. diff --git a/src/playbooks/deploy/deploy.yaml b/src/playbooks/deploy/deploy.yaml index 909a02288..6982ebb7c 100644 --- a/src/playbooks/deploy/deploy.yaml +++ b/src/playbooks/deploy/deploy.yaml @@ -5,7 +5,7 @@ become: true vars_files: - "../../vars/defaults.yml" - - "../../vars/profiles/{{ profile }}.yml" + - "../../vars/flavors/{{ flavor }}.yml" - "../../vars/{{ certificate_source }}_certificates.yml" - "../../vars/images.yml" - "../../vars/database.yml" diff --git a/src/playbooks/deploy/metadata.obsah.yaml b/src/playbooks/deploy/metadata.obsah.yaml index c249c3bb4..5a3fc199f 100644 --- a/src/playbooks/deploy/metadata.obsah.yaml +++ b/src/playbooks/deploy/metadata.obsah.yaml @@ -16,4 +16,4 @@ include: - _certificate_source - _database_mode - _database_connection - - _profile_features + - _flavor_features diff --git a/src/playbooks/pull-images/metadata.obsah.yaml b/src/playbooks/pull-images/metadata.obsah.yaml index b2751f85c..9f4f8ed05 100644 --- a/src/playbooks/pull-images/metadata.obsah.yaml +++ b/src/playbooks/pull-images/metadata.obsah.yaml @@ -4,4 +4,4 @@ help: | include: - _database_mode - - _profile_features + - _flavor_features diff --git a/src/playbooks/pull-images/pull-images.yaml b/src/playbooks/pull-images/pull-images.yaml index aa3054173..fff77f6e7 100644 --- a/src/playbooks/pull-images/pull-images.yaml +++ b/src/playbooks/pull-images/pull-images.yaml @@ -4,7 +4,7 @@ - quadlet vars_files: - "../../vars/defaults.yml" - - "../../vars/profiles/{{ profile }}.yml" + - "../../vars/flavors/{{ flavor }}.yml" - "../../vars/images.yml" - "../../vars/base.yaml" become: true diff --git a/src/vars/defaults.yml b/src/vars/defaults.yml index 763918097..5ea8bd4c1 100644 --- a/src/vars/defaults.yml +++ b/src/vars/defaults.yml @@ -2,6 +2,6 @@ certificate_source: default database_mode: internal tuning_profile: development -profile: katello +flavor: katello features: [] -enabled_features: "{{ (profile_features + features) }}" +enabled_features: "{{ (flavor_features + features) }}" diff --git a/src/vars/profiles/katello.yml b/src/vars/flavors/katello.yml similarity index 78% rename from src/vars/profiles/katello.yml rename to src/vars/flavors/katello.yml index d8a1e3c4c..465facc92 100644 --- a/src/vars/profiles/katello.yml +++ b/src/vars/flavors/katello.yml @@ -1,5 +1,5 @@ --- -profile_features: +flavor_features: - foreman - katello - content/container From 36eb38f9dfdfbf7a3e2c25af4d8547c0a6e4d547 Mon Sep 17 00:00:00 2001 From: Leos Stejskal Date: Wed, 26 Nov 2025 16:06:19 +0100 Subject: [PATCH 18/18] Compute resources & plugins --- .github/workflows/test.yml | 6 ++++++ src/requirements.yml | 1 + src/roles/hammer/tasks/main.yml | 7 +++++++ tests/foreman_compute_resources_test.py | 10 ++++++++++ 4 files changed, 24 insertions(+) create mode 100644 tests/foreman_compute_resources_test.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 375f0562d..0b0678a97 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -81,6 +81,12 @@ jobs: - name: Add optional feature - foreman-proxy run: | ./foremanctl deploy --add-feature foreman-proxy + - name: Add optional feature - foreman_azure_rm + run: | + ./foremanctl deploy --add-feature foreman_azure_rm + - name: Add optional feature - foreman_google + run: | + ./foremanctl deploy --add-feature foreman_google - name: Run tests run: | ./forge test --pytest-args="--certificate-source=${{ matrix.certificate_source }}" diff --git a/src/requirements.yml b/src/requirements.yml index 01a19ec61..02dc02168 100644 --- a/src/requirements.yml +++ b/src/requirements.yml @@ -5,3 +5,4 @@ collections: - name: containers.podman version: ">=1.16.4" - name: theforeman.foreman + - name: theforeman.operations diff --git a/src/roles/hammer/tasks/main.yml b/src/roles/hammer/tasks/main.yml index f2eee6dec..35196c88a 100644 --- a/src/roles/hammer/tasks/main.yml +++ b/src/roles/hammer/tasks/main.yml @@ -1,4 +1,11 @@ --- +- name: Setup Foreman repositories + ansible.builtin.include_role: + name: theforeman.operations.foreman_repositories + vars: + foreman_repositories_version: nightly + foreman_repositories_katello_version: nightly + - name: Install Hammer and plugins ansible.builtin.package: name: "{{ hammer_packages }}" diff --git a/tests/foreman_compute_resources_test.py b/tests/foreman_compute_resources_test.py new file mode 100644 index 000000000..bb2bbc0c9 --- /dev/null +++ b/tests/foreman_compute_resources_test.py @@ -0,0 +1,10 @@ +import pytest + +FOREMAN_HOST = 'localhost' +FOREMAN_PORT = 3000 + +@pytest.mark.parametrize("compute_resource", ['AzureRm', 'EC2', 'GCE', 'Libvirt', 'Openstack', 'Vmware']) +def test_foreman_compute_resources(server, compute_resource): + hammer = server.run("hammer compute-resource create --help | grep provider") + assert hammer.succeeded + assert compute_resource in hammer.stdout