diff --git a/.gitignore b/.gitignore index 48b2ab6..5bce807 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1,19 @@ -SOURCES/ansible-sshd-e1de59b3c54e9d48a010eeca73755df339c7e628.tar.gz -SOURCES/auto-maintenance-e5ed203b2d7224c0bf0c3fd55452456c8f468cad.tar.gz -SOURCES/certificate-50041ce55348fcce34aba4cbe3ea160c5d890ab3.tar.gz -SOURCES/crypto_policies-76b2d5b0460dba22c5d290c1af96e4fdb3434cb9.tar.gz -SOURCES/ha_cluster-779bb78559de58bb5a1f25a4b92039c373ef59a4.tar.gz -SOURCES/kdump-77596fdd976c6160d6152c200a5432c609725a14.tar.gz -SOURCES/kernel_settings-e5e5abb35fb695e22ccffa855c98ab882650480e.tar.gz -SOURCES/logging-4b07edf4e84882c9d0fb979092ba5953aac0b4d5.tar.gz -SOURCES/metrics-e81b2650108727f38b1c856699aad26af0f44a46.tar.gz -SOURCES/nbde_client-3af7452e4861ee2363b29b23bf78bf11e06be142.tar.gz -SOURCES/nbde_server-1.0.1.tar.gz -SOURCES/network-bda206d45c87ee8c1a5284de84f5acf5e629de97.tar.gz -SOURCES/postfix-0.1.tar.gz -SOURCES/selinux-1.1.1.tar.gz -SOURCES/ssh-effa0a0d993832dee726290f263a2182cf3eacda.tar.gz -SOURCES/storage-485de47b0dc0787aea077ba448ecb954f53e40c4.tar.gz -SOURCES/timesync-924650d0cd4117f73a7f0413ab745a8632bc5cec.tar.gz -SOURCES/tlog-1.1.0.tar.gz +SOURCES/ansible-sshd-1c5c48835e01adc176febf945e1fd36b7d9af7fd.tar.gz +SOURCES/auto-maintenance-2dd50c8a16af647e4c7a768c481335e97735958a.tar.gz +SOURCES/certificate-1.1.0.tar.gz +SOURCES/crypto_policies-1.2.0.tar.gz +SOURCES/ha_cluster-1.3.0.tar.gz +SOURCES/kdump-1.1.0.tar.gz +SOURCES/kernel_settings-1.1.0.tar.gz +SOURCES/logging-1.5.1.tar.gz +SOURCES/metrics-1.3.1.tar.gz +SOURCES/nbde_client-1.1.0.tar.gz +SOURCES/nbde_server-1.1.0.tar.gz +SOURCES/network-1.4.0.tar.gz +SOURCES/postfix-1.1.0.tar.gz +SOURCES/selinux-1.3.0.tar.gz +SOURCES/ssh-1.1.0.tar.gz +SOURCES/storage-1.6.1.tar.gz +SOURCES/timesync-1.6.0.tar.gz +SOURCES/tlog-1.2.0.tar.gz +SOURCES/vpn-1.2.0.tar.gz diff --git a/.rhel-system-roles.metadata b/.rhel-system-roles.metadata index dedf84c..0348be1 100644 --- a/.rhel-system-roles.metadata +++ b/.rhel-system-roles.metadata @@ -1,18 +1,19 @@ -77e952b62e634c69e36115845b4f24ee3bfe76b7 SOURCES/ansible-sshd-e1de59b3c54e9d48a010eeca73755df339c7e628.tar.gz -c354a1d24b522a356ef487cf8a3f357ab6213b41 SOURCES/auto-maintenance-e5ed203b2d7224c0bf0c3fd55452456c8f468cad.tar.gz -20590d1e4ed8df7578926b7aab79e8fa1344be73 SOURCES/certificate-50041ce55348fcce34aba4cbe3ea160c5d890ab3.tar.gz -513057251590e81b629a69a4ed704b0976b1bc44 SOURCES/crypto_policies-76b2d5b0460dba22c5d290c1af96e4fdb3434cb9.tar.gz -838ed06d8d092271fff04bd5e7c16db4661e8567 SOURCES/ha_cluster-779bb78559de58bb5a1f25a4b92039c373ef59a4.tar.gz -fa3d5daf6cf1ceeaa87f58c16e11153cf250e2fa SOURCES/kdump-77596fdd976c6160d6152c200a5432c609725a14.tar.gz -c81700b81d7acf48b9eadb1ed7a9bf04b994cdb1 SOURCES/kernel_settings-e5e5abb35fb695e22ccffa855c98ab882650480e.tar.gz -3c94b12780f01bbdb8b77fc3515ccef1200ec1f6 SOURCES/logging-4b07edf4e84882c9d0fb979092ba5953aac0b4d5.tar.gz -821d8ebef2d30a41f0fa65bdc5e550f09b375370 SOURCES/metrics-e81b2650108727f38b1c856699aad26af0f44a46.tar.gz -a59b3d28bf5da0abbb3e2e188b0b65b2a78cd500 SOURCES/nbde_client-3af7452e4861ee2363b29b23bf78bf11e06be142.tar.gz -c55d45d134042b00ece17f2a21bb945c571310b3 SOURCES/nbde_server-1.0.1.tar.gz -c2d1aaca43cbe787ee7b1e41e875a76b8f95831d SOURCES/network-bda206d45c87ee8c1a5284de84f5acf5e629de97.tar.gz -66c82331f4ac9598c506c3999965b4d07dbfe49d SOURCES/postfix-0.1.tar.gz -f2ad38bd93487962de511b1f4bc9dc6607a5ab36 SOURCES/selinux-1.1.1.tar.gz -b160fd539c99429a33c0d65c818ad0c98c5ca7a4 SOURCES/ssh-effa0a0d993832dee726290f263a2182cf3eacda.tar.gz -8b7d7c14e76aa1a872f22d5cd6d3c9a850868ed3 SOURCES/storage-485de47b0dc0787aea077ba448ecb954f53e40c4.tar.gz -ffd2a706e4e3007684aa9874c8457ad5c8920050 SOURCES/timesync-924650d0cd4117f73a7f0413ab745a8632bc5cec.tar.gz -486d7b845348755e7f189afd95f32bbe97c74661 SOURCES/tlog-1.1.0.tar.gz +81dc493a73559dc310a806c8dad6c310f2456512 SOURCES/ansible-sshd-1c5c48835e01adc176febf945e1fd36b7d9af7fd.tar.gz +88baab8db9cba232b8deb8c690dccf2d3ef77b31 SOURCES/auto-maintenance-2dd50c8a16af647e4c7a768c481335e97735958a.tar.gz +b677782b53c4ffe790528b4b2c12f31b07523b4c SOURCES/certificate-1.1.0.tar.gz +1dea114d52dd032bde01a2a64a9b8233daeaa8dc SOURCES/crypto_policies-1.2.0.tar.gz +d3c6ec22b1e60ad3b53b07009ac54e946355aa75 SOURCES/ha_cluster-1.3.0.tar.gz +3e3e61b4a8fecc8fb649ab32a3751bd3a3930281 SOURCES/kdump-1.1.0.tar.gz +90ea8d850a2c46988e4128df36c1254b787d2fb7 SOURCES/kernel_settings-1.1.0.tar.gz +61127d1b542bf7501ca16834c1716cb01883abfa SOURCES/logging-1.5.1.tar.gz +170825f78241811a16095f795a93cc9144c39a98 SOURCES/metrics-1.3.1.tar.gz +f3298859354c92921a3b68fa76f877d4596915d6 SOURCES/nbde_client-1.1.0.tar.gz +a2c85f6a850285c8afb8635de0cbbb7eb2b46530 SOURCES/nbde_server-1.1.0.tar.gz +73207015b9e48cd2bdf86fab68f8f34e2181a94b SOURCES/network-1.4.0.tar.gz +8f10d7be6d7ea3d855cf5d22f32b5ba7bb8302be SOURCES/postfix-1.1.0.tar.gz +0f6894033fc2110eac6b81b5e6b4ca9ca0af6632 SOURCES/selinux-1.3.0.tar.gz +b5e0786216e22508435c13b4da7b6fcce4ad82fe SOURCES/ssh-1.1.0.tar.gz +5820c668d774e9a267011376138cca5a64fb23dd SOURCES/storage-1.6.1.tar.gz +7bf364246b52dd8df3de6b6c9bf4553410983439 SOURCES/timesync-1.6.0.tar.gz +ad38181af7223caa21b602e91d0feeb9085451e0 SOURCES/tlog-1.2.0.tar.gz +9f91e40a6657e262893f85158706934954bcbcb2 SOURCES/vpn-1.2.0.tar.gz diff --git a/SOURCES/collection_readme.sh b/SOURCES/collection_readme.sh index a229311..94e8cae 100755 --- a/SOURCES/collection_readme.sh +++ b/SOURCES/collection_readme.sh @@ -5,8 +5,7 @@ set -euxo pipefail readme_md=${1:-"lsr_role2collection/collection_readme.md"} sed -i -e '/## Currently supported distributions/{:1;/## Dependencies/!{N;b 1};s|.*|## Dependencies|}' \ - -e 's/\(Linux System Roles is a set of roles for managing Linux system components.\)/\1\n\nThis collection is available as a Technology Preview./' \ - -e 's/Linux/RHEL/g' \ + -e 's/Linux/Red Hat Enterprise Linux/g' \ -e 's/Ansible Galaxy/Automation Hub/g' \ -e 's/fedora\(.\)linux_system_roles/redhat\1rhel_system_roles/g' \ -e 's/linux-system-roles/rhel-system-roles/g' \ diff --git a/SOURCES/kdump-fix-newline.diff b/SOURCES/kdump-fix-newline.diff deleted file mode 100644 index 52a1a7e..0000000 --- a/SOURCES/kdump-fix-newline.diff +++ /dev/null @@ -1,28 +0,0 @@ -commit cafd95d0b03360d12e86170eb10fc1fc3dcade06 -Author: Pavel Cahyna -Date: Thu Jan 14 11:42:48 2021 +0100 - - Get rid of the extra final newline in string - - Use the `-` chomping indicator to indicate that the trailing newline is - not intended as a part of the string. - https://yaml.org/spec/1.1/#chomping/ - - The trailing newline was causing an actual problem in the test. - - Also use the `>` folded style, which is more appropriate here than the - `|` literal style. - -diff --git a/tests/tests_ssh.yml b/tests/tests_ssh.yml -index 6d3699c..d3503f7 100644 ---- a/tests/tests_ssh.yml -+++ b/tests/tests_ssh.yml -@@ -27,7 +27,7 @@ - - include_role: - name: linux-system-roles.kdump - vars: -- kdump_ssh_user: | -+ kdump_ssh_user: >- - {{ hostvars[kdump_ssh_server_outside]['ansible_user_id'] }} - # This is the outside address. Ansible will connect to it to - # copy the ssh key. diff --git a/SOURCES/kdump-meta-el8.diff b/SOURCES/kdump-meta-el8.diff deleted file mode 100644 index d8f2764..0000000 --- a/SOURCES/kdump-meta-el8.diff +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/meta/main.yml b/meta/main.yml -index 2478fa6..ad8f4c6 100644 ---- a/meta/main.yml -+++ b/meta/main.yml -@@ -7,6 +7,6 @@ galaxy_info: - min_ansible_version: 2.4 - platforms: - - name: Fedora -- versions: [ 27, 28 ] -+ versions: [ 31, 32 ] - - name: EL -- versions: [ 6, 7 ] -+ versions: [ 6, 7, 8 ] diff --git a/SOURCES/kdump-tier1-tags.diff b/SOURCES/kdump-tier1-tags.diff deleted file mode 100644 index f80af83..0000000 --- a/SOURCES/kdump-tier1-tags.diff +++ /dev/null @@ -1,142 +0,0 @@ -diff --git a/tests/commonvars.yml b/tests/commonvars.yml -new file mode 100644 -index 0000000..2cd3566 ---- /dev/null -+++ b/tests/commonvars.yml -@@ -0,0 +1,2 @@ -+restore_services: -+ - kdump -diff --git a/tests/get_services_state.yml b/tests/get_services_state.yml -new file mode 100644 -index 0000000..4fe5d36 ---- /dev/null -+++ b/tests/get_services_state.yml -@@ -0,0 +1,4 @@ -+- name: Get initial state of services -+ tags: tests::cleanup -+ service_facts: -+ register: initial_state -diff --git a/tests/restore_services_state.yml b/tests/restore_services_state.yml -new file mode 100644 -index 0000000..2035dfc ---- /dev/null -+++ b/tests/restore_services_state.yml -@@ -0,0 +1,22 @@ -+- block: -+ - name: load common vars -+ include_vars: -+ file: commonvars.yml -+ -+ - name: Get final state of services -+ service_facts: -+ register: final_state -+ -+ - name: Restore state of services -+ service: -+ name: "{{ item }}" -+ state: "{{ 'started' if -+ initial_state.ansible_facts.services[sname]['state'] -+ == 'running' else 'stopped' }}" -+ when: -+ - sname in final_state.ansible_facts.services -+ - sname in initial_state.ansible_facts.services -+ vars: -+ sname: "{{ item + '.service' }}" -+ with_items: "{{ restore_services }}" -+ tags: tests::cleanup -diff --git a/tests/tests_default.yml b/tests/tests_default.yml -index af0b2a0..6ce5241 100644 ---- a/tests/tests_default.yml -+++ b/tests/tests_default.yml -@@ -3,3 +3,13 @@ - - roles: - - linux-system-roles.kdump -+ -+ pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ -+ post_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_default_wrapper.yml b/tests/tests_default_wrapper.yml -index eba31a0..857aab8 100644 ---- a/tests/tests_default_wrapper.yml -+++ b/tests/tests_default_wrapper.yml -@@ -1,6 +1,9 @@ - --- - - name: Create static inventory from hostvars - hosts: all -+ tags: -+# - 'tests::tier1' -+ - 'tests::slow' - tasks: - - name: create temporary file - tempfile: -@@ -17,10 +20,16 @@ - - - - name: Run tests_default.yml normally -+ tags: -+# - 'tests::tier1' -+ - 'tests::slow' - import_playbook: tests_default.yml - - - name: Run tests_default.yml in check_mode - hosts: all -+ tags: -+# - 'tests::tier1' -+ - 'tests::slow' - tasks: - - name: Run ansible-playbook with tests_default.yml in check mode - command: > -diff --git a/tests/tests_ssh.yml b/tests/tests_ssh.yml -index d12e884..6d3699c 100644 ---- a/tests/tests_ssh.yml -+++ b/tests/tests_ssh.yml -@@ -10,6 +10,13 @@ - # this is the address at which the ssh dump server can be reached - # from the managed host. Dumps will be uploaded there. - kdump_ssh_server_inside: "{{ kdump_ssh_source if kdump_ssh_source in hostvars[kdump_ssh_server_outside]['ansible_all_ipv4_addresses'] + hostvars[kdump_ssh_server_outside]['ansible_all_ipv6_addresses'] else hostvars[kdump_ssh_server_outside]['ansible_default_ipv4']['address'] }}" -+ tags: -+ # this test executes some tasks on localhost and relies on -+ # localhost being a different host than the managed host -+ # (localhost is being used as a second host in multihost -+ # scenario). This also means that localhost must be capable -+ # enough (not just a container - must be runnign a sshd). -+ - 'tests::multihost_localhost' - - tasks: - - name: gather facts from {{ kdump_ssh_server_outside }} -diff --git a/tests/tests_ssh_wrapper.yml b/tests/tests_ssh_wrapper.yml -index 2203f3f..96a764e 100644 ---- a/tests/tests_ssh_wrapper.yml -+++ b/tests/tests_ssh_wrapper.yml -@@ -1,6 +1,8 @@ - --- - - name: Create static inventory from hostvars - hosts: all -+ tags: -+ - 'tests::slow' - tasks: - - name: create temporary file - tempfile: -@@ -17,10 +19,15 @@ - - - - name: Run tests_ssh.yml normally -+ tags: -+ - 'tests::slow' - import_playbook: tests_ssh.yml - - - name: Run tests_ssh.yml in check_mode - hosts: all -+ tags: -+ - 'tests::slow' -+ - 'tests::multihost_localhost' - tasks: - - name: Run ansible-playbook with tests_ssh.yml in check mode - command: | diff --git a/SOURCES/metrics-mssql-x86.diff b/SOURCES/metrics-mssql-x86.diff deleted file mode 100644 index 80bb0e5..0000000 --- a/SOURCES/metrics-mssql-x86.diff +++ /dev/null @@ -1,24 +0,0 @@ -From 7ff86f2fa05998afcd8ae87d9cdd660ef5b6ee2c Mon Sep 17 00:00:00 2001 -From: Jan Kurik -Date: Thu, 18 Feb 2021 17:09:48 +1100 -Subject: [PATCH] Update mssql test to exclude non-x86_64 architectures - -pcp-pmda-mssql (and SQL Server itself) are x86_64-only. ---- - tests/tests_sanity_mssql.yml | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/tests/tests_sanity_mssql.yml b/tests/tests_sanity_mssql.yml -index 6f1e2cc..8602c36 100644 ---- a/tests/tests_sanity_mssql.yml -+++ b/tests/tests_sanity_mssql.yml -@@ -12,7 +12,8 @@ - - meta: end_host - when: (ansible_distribution in ['RedHat'] and - ( ansible_facts['distribution_version'] is version('8.4', '<'))) or -- ansible_distribution not in ['Fedora', 'RedHat'] -+ ansible_distribution not in ['Fedora', 'RedHat'] or -+ ansible_architecture not in ['x86_64'] - - - name: Save state of services - import_tasks: get_services_state.yml diff --git a/SOURCES/network-disable-bondtests.diff b/SOURCES/network-disable-bondtests.diff index 086edd4..81db978 100644 --- a/SOURCES/network-disable-bondtests.diff +++ b/SOURCES/network-disable-bondtests.diff @@ -1,48 +1,65 @@ +From d6c8319f52f3859b28044841063adf0013df878b Mon Sep 17 00:00:00 2001 +From: Rich Megginson +Date: Thu, 25 Mar 2021 13:57:45 -0600 +Subject: [PATCH 3/4] Patch53: network-disable-bondtests.diff + +--- + tests/playbooks/tests_bond.yml | 2 ++ + tests/playbooks/tests_bond_deprecated.yml | 2 ++ + tests/tests_bond_deprecated_initscripts.yml | 1 + + tests/tests_bond_initscripts.yml | 1 + + 4 files changed, 6 insertions(+) + diff --git a/tests/playbooks/tests_bond.yml b/tests/playbooks/tests_bond.yml -index d646a0b..8689d59 100644 +index 1e45788..d3005a6 100644 +--- a/tests/playbooks/tests_bond.yml ++++ b/tests/playbooks/tests_bond.yml +@@ -8,6 +8,8 @@ + dhcp_interface1: test1 + port2_profile: bond0.1 + dhcp_interface2: test2 ++ tags: ++ - "tests::expfail" + tasks: + - name: "INIT Prepare setup" + debug: +diff --git a/tests/playbooks/tests_bond_deprecated.yml b/tests/playbooks/tests_bond_deprecated.yml +index f37e19a..ae475c4 100644 --- a/tests/playbooks/tests_bond_deprecated.yml +++ b/tests/playbooks/tests_bond_deprecated.yml @@ -8,6 +8,8 @@ dhcp_interface1: test1 - slave2_profile: bond0.1 + port2_profile: bond0.1 dhcp_interface2: test2 + tags: + - "tests::expfail" tasks: - name: "INIT Prepare setup" debug: -diff --git a/tests/tests_bond_initscripts.yml b/tests/tests_bond_initscripts.yml -index 8fa74c5..6a231c4 100644 +diff --git a/tests/tests_bond_deprecated_initscripts.yml b/tests/tests_bond_deprecated_initscripts.yml +index 383b488..cdf3de0 100644 --- a/tests/tests_bond_deprecated_initscripts.yml +++ b/tests/tests_bond_deprecated_initscripts.yml -@@ -9,5 +9,6 @@ +@@ -10,6 +10,7 @@ network_provider: initscripts tags: - always + - "tests::expfail" - import_playbook: playbooks/tests_bond_deprecated.yml -diff --git a/tests/playbooks/tests_bond.yml b/tests/playbooks/tests_bond.yml -index d646a0b..8689d59 100644 ---- a/tests/playbooks/tests_bond.yml -+++ b/tests/playbooks/tests_bond.yml -@@ -13,6 +13,8 @@ - dhcp_interface1: test1 - port2_profile: bond0.1 - dhcp_interface2: test2 -+ tags: -+ - "tests::expfail" - tasks: - - name: "INIT Prepare setup" - debug: + when: (ansible_distribution in ['CentOS','RedHat'] and diff --git a/tests/tests_bond_initscripts.yml b/tests/tests_bond_initscripts.yml index 8fa74c5..6a231c4 100644 --- a/tests/tests_bond_initscripts.yml +++ b/tests/tests_bond_initscripts.yml -@@ -9,5 +9,6 @@ +@@ -10,6 +10,7 @@ network_provider: initscripts tags: - always + - "tests::expfail" - import_playbook: playbooks/tests_bond.yml + when: (ansible_distribution in ['CentOS','RedHat'] and +-- +2.30.2 + diff --git a/SOURCES/network-epel-minimal.diff b/SOURCES/network-epel-minimal.diff deleted file mode 100644 index af8b0ef..0000000 --- a/SOURCES/network-epel-minimal.diff +++ /dev/null @@ -1,401 +0,0 @@ -diff --git a/tests/playbooks/integration_pytest_python3.yml b/tests/playbooks/integration_pytest_python3.yml -index 075355b..5fc9dea 100644 ---- a/tests/playbooks/integration_pytest_python3.yml -+++ b/tests/playbooks/integration_pytest_python3.yml -@@ -9,6 +9,11 @@ - - rsync - - tasks: -+ - name: Install EPEL for RHEL and CentOS -+ # yamllint disable-line rule:line-length -+ command: "yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm" -+ when: ansible_distribution in ["CentOS", "RedHat"] -+ - - name: Install rpm dependencies - package: - state: present -diff --git a/tests/tasks/el_repo_setup.yml b/tests/tasks/el_repo_setup.yml -deleted file mode 100644 -index 0656e8c..0000000 ---- a/tests/tasks/el_repo_setup.yml -+++ /dev/null -@@ -1,26 +0,0 @@ --# SPDX-License-Identifier: BSD-3-Clause --- name: Fix CentOS6 Base repo -- copy: -- dest: /etc/yum.repos.d/CentOS-Base.repo -- content: | -- [base] -- name=CentOS-$releasever - Base -- baseurl=https://vault.centos.org/6.10/os/$basearch/ -- gpgcheck=1 -- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 -- -- [updates] -- name=CentOS-$releasever - Updates -- baseurl=https://vault.centos.org/6.10/updates/$basearch/ -- gpgcheck=1 -- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 -- -- [extras] -- name=CentOS-$releasever - Extras -- baseurl=https://vault.centos.org/6.10/extras/$basearch/ -- gpgcheck=1 -- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 -- when: -- - ansible_distribution == 'CentOS' -- - ansible_distribution_major_version == '6' --- include_tasks: enable_epel.yml -diff --git a/tests/tasks/setup_802_1x_server.yml b/tests/tasks/setup_802_1x_server.yml -index 49d1ce1..3bf16a9 100644 ---- a/tests/tasks/setup_802_1x_server.yml -+++ b/tests/tasks/setup_802_1x_server.yml -@@ -1,5 +1,7 @@ - # SPDX-License-Identifier: BSD-3-Clause - --- -+- include_tasks: enable_epel.yml -+ - - name: Install hostapd - package: - name: hostapd -diff --git a/tests/tasks/setup_mock_wifi.yml b/tests/tasks/setup_mock_wifi.yml -index 997b704..d7a1e22 100644 ---- a/tests/tasks/setup_mock_wifi.yml -+++ b/tests/tasks/setup_mock_wifi.yml -@@ -1,5 +1,7 @@ - # SPDX-License-Identifier: BSD-3-Clause - --- -+- include_tasks: enable_epel.yml -+ - - name: Install packages required to set up mock wifi network - package: - name: -diff --git a/tests/tests_802_1x_nm.yml b/tests/tests_802_1x_nm.yml -index a27d8ea..288cd5d 100644 ---- a/tests/tests_802_1x_nm.yml -+++ b/tests/tests_802_1x_nm.yml -@@ -5,7 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_802_1x.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_802_1x_updated_nm.yml b/tests/tests_802_1x_updated_nm.yml -index 5a25f5b..bd335e4 100644 ---- a/tests/tests_802_1x_updated_nm.yml -+++ b/tests/tests_802_1x_updated_nm.yml -@@ -5,7 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_802_1x_updated.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_bond_deprecated_initscripts.yml b/tests/tests_bond_deprecated_initscripts.yml -index 1e74bcc..383b488 100644 ---- a/tests/tests_bond_deprecated_initscripts.yml -+++ b/tests/tests_bond_deprecated_initscripts.yml -@@ -4,7 +4,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_bond_deprecated.yml' with initscripts - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Set network provider to 'initscripts' - set_fact: - network_provider: initscripts -diff --git a/tests/tests_bond_initscripts.yml b/tests/tests_bond_initscripts.yml -index 32fcc32..8fa74c5 100644 ---- a/tests/tests_bond_initscripts.yml -+++ b/tests/tests_bond_initscripts.yml -@@ -4,7 +4,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_bond.yml' with initscripts as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Set network provider to 'initscripts' - set_fact: - network_provider: initscripts -diff --git a/tests/tests_bond_nm.yml b/tests/tests_bond_nm.yml -index 7075d95..8ac6cbd 100644 ---- a/tests/tests_bond_nm.yml -+++ b/tests/tests_bond_nm.yml -@@ -5,7 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_bond.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_bridge_initscripts.yml b/tests/tests_bridge_initscripts.yml -index 8ce42e6..db5663c 100644 ---- a/tests/tests_bridge_initscripts.yml -+++ b/tests/tests_bridge_initscripts.yml -@@ -4,7 +4,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_bridge.yml' with initscripts as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Set network provider to 'initscripts' - set_fact: - network_provider: initscripts -diff --git a/tests/tests_bridge_nm.yml b/tests/tests_bridge_nm.yml -index 3d1b53a..c565952 100644 ---- a/tests/tests_bridge_nm.yml -+++ b/tests/tests_bridge_nm.yml -@@ -5,7 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_bridge.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_default.yml b/tests/tests_default.yml -index e196314..f6f7550 100644 ---- a/tests/tests_default.yml -+++ b/tests/tests_default.yml -@@ -5,7 +5,6 @@ - roles: - - linux-system-roles.network - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Test warning and info logs - assert: - that: -diff --git a/tests/tests_default_initscripts.yml b/tests/tests_default_initscripts.yml -index 006889c..cc8b875 100644 ---- a/tests/tests_default_initscripts.yml -+++ b/tests/tests_default_initscripts.yml -@@ -2,7 +2,6 @@ - --- - - hosts: all - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Set network provider to 'initscripts' - set_fact: - network_provider: initscripts -diff --git a/tests/tests_default_nm.yml b/tests/tests_default_nm.yml -index 54bc3e1..8138ca9 100644 ---- a/tests/tests_default_nm.yml -+++ b/tests/tests_default_nm.yml -@@ -2,7 +2,6 @@ - --- - - hosts: all - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_ethernet_initscripts.yml b/tests/tests_ethernet_initscripts.yml -index 366b052..62e75fe 100644 ---- a/tests/tests_ethernet_initscripts.yml -+++ b/tests/tests_ethernet_initscripts.yml -@@ -4,8 +4,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_ethernet.yml' with initscripts as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'initscripts' - set_fact: - network_provider: initscripts -diff --git a/tests/tests_ethernet_nm.yml b/tests/tests_ethernet_nm.yml -index 238172d..ecefa14 100644 ---- a/tests/tests_ethernet_nm.yml -+++ b/tests/tests_ethernet_nm.yml -@@ -5,8 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_ethernet.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_ethtool_features_initscripts.yml b/tests/tests_ethtool_features_initscripts.yml -index 5bac5d3..6aea73b 100644 ---- a/tests/tests_ethtool_features_initscripts.yml -+++ b/tests/tests_ethtool_features_initscripts.yml -@@ -2,7 +2,6 @@ - # set network provider and gather facts - - hosts: all - tasks: -- - include_tasks: tasks/el_repo_setup.yml - - name: Set network provider to 'initscripts' - set_fact: - network_provider: initscripts -diff --git a/tests/tests_ethtool_features_nm.yml b/tests/tests_ethtool_features_nm.yml -index 2027862..30c6faa 100644 ---- a/tests/tests_ethtool_features_nm.yml -+++ b/tests/tests_ethtool_features_nm.yml -@@ -5,8 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_ethtool_features.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_helpers_and_asserts.yml b/tests/tests_helpers_and_asserts.yml -index 64e2875..5514182 100644 ---- a/tests/tests_helpers_and_asserts.yml -+++ b/tests/tests_helpers_and_asserts.yml -@@ -3,8 +3,6 @@ - - name: Check that creating and removing test devices and assertions work - hosts: all - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: test veth interface management - include_tasks: tasks/create_and_remove_interface.yml - vars: -diff --git a/tests/tests_integration_pytest.yml b/tests/tests_integration_pytest.yml -index 9b80bd4..153214d 100644 ---- a/tests/tests_integration_pytest.yml -+++ b/tests/tests_integration_pytest.yml -@@ -1,8 +1,7 @@ - # SPDX-License-Identifier: BSD-3-Clause - --- --- hosts: all -- tasks: -- - include_tasks: tasks/el_repo_setup.yml -+- name: Empty play to gather facts -+ hosts: all - - - import_playbook: playbooks/integration_pytest_python3.yml - when: (ansible_distribution in ["CentOS", "RedHat"] and -diff --git a/tests/tests_provider_nm.yml b/tests/tests_provider_nm.yml -index 67fcffe..99306a1 100644 ---- a/tests/tests_provider_nm.yml -+++ b/tests/tests_provider_nm.yml -@@ -5,8 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_provider.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_reapply_nm.yml b/tests/tests_reapply_nm.yml -index eb48ddb..69fb208 100644 ---- a/tests/tests_reapply_nm.yml -+++ b/tests/tests_reapply_nm.yml -@@ -5,8 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_reapply.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_regression_nm.yml b/tests/tests_regression_nm.yml -index b2c46e9..9eb8084 100644 ---- a/tests/tests_regression_nm.yml -+++ b/tests/tests_regression_nm.yml -@@ -3,8 +3,6 @@ - # set network provider and gather facts - - hosts: all - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_states_initscripts.yml b/tests/tests_states_initscripts.yml -index fa94103..3e55a43 100644 ---- a/tests/tests_states_initscripts.yml -+++ b/tests/tests_states_initscripts.yml -@@ -4,8 +4,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_states.yml' with initscripts as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'initscripts' - set_fact: - network_provider: initscripts -diff --git a/tests/tests_states_nm.yml b/tests/tests_states_nm.yml -index 34c8a24..3164a3a 100644 ---- a/tests/tests_states_nm.yml -+++ b/tests/tests_states_nm.yml -@@ -5,8 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_states.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_team_nm.yml b/tests/tests_team_nm.yml -index 8048029..0516765 100644 ---- a/tests/tests_team_nm.yml -+++ b/tests/tests_team_nm.yml -@@ -5,8 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_team.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_unit.yml b/tests/tests_unit.yml -index 44dfaec..8c5388b 100644 ---- a/tests/tests_unit.yml -+++ b/tests/tests_unit.yml -@@ -3,7 +3,7 @@ - - hosts: all - name: Setup for test running - tasks: -- - include_tasks: tasks/el_repo_setup.yml -+ - include_tasks: tasks/enable_epel.yml - - - name: Install dependencies - package: -diff --git a/tests/tests_vlan_mtu_initscripts.yml b/tests/tests_vlan_mtu_initscripts.yml -index dcd5d74..37770a9 100644 ---- a/tests/tests_vlan_mtu_initscripts.yml -+++ b/tests/tests_vlan_mtu_initscripts.yml -@@ -4,8 +4,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_vlan_mtu.yml' with initscripts as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'initscripts' - set_fact: - network_provider: initscripts -diff --git a/tests/tests_vlan_mtu_nm.yml b/tests/tests_vlan_mtu_nm.yml -index c38263c..f201de3 100644 ---- a/tests/tests_vlan_mtu_nm.yml -+++ b/tests/tests_vlan_mtu_nm.yml -@@ -5,8 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_vlan_mtu.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'nm' - set_fact: - network_provider: nm -diff --git a/tests/tests_wireless_nm.yml b/tests/tests_wireless_nm.yml -index 03b5ad6..86baf67 100644 ---- a/tests/tests_wireless_nm.yml -+++ b/tests/tests_wireless_nm.yml -@@ -5,8 +5,6 @@ - - hosts: all - name: Run playbook 'playbooks/tests_wireless.yml' with nm as provider - tasks: -- - include_tasks: tasks/el_repo_setup.yml -- - - name: Set network provider to 'nm' - set_fact: - network_provider: nm diff --git a/SOURCES/network-permissions.diff b/SOURCES/network-permissions.diff deleted file mode 100644 index 05068ff..0000000 --- a/SOURCES/network-permissions.diff +++ /dev/null @@ -1,6 +0,0 @@ -diff --git a/library/network_connections.py b/library/network_connections.py -old mode 100755 -new mode 100644 -diff --git a/tests/unit/test_network_connections.py b/tests/unit/test_network_connections.py -old mode 100755 -new mode 100644 diff --git a/SOURCES/network-tier1-tags.diff b/SOURCES/network-tier1-tags.diff index 1c4cb67..9529a03 100644 --- a/SOURCES/network-tier1-tags.diff +++ b/SOURCES/network-tier1-tags.diff @@ -1,531 +1,54 @@ +From 4b1a8a87e7d297fd6669d653af7308dd9c1a513a Mon Sep 17 00:00:00 2001 +From: Rich Megginson +Date: Thu, 6 May 2021 13:52:38 -0600 +Subject: [PATCH] tag 802-1x test as expfail; make sure bridge test cleans up + properly + +The 802-1x test will fail on platforms where `hostapd` is not available, +so tag that test to make it skippable. + +The initscripts bridge test does not clean up properly, leaving the +device around which causes the nm test to fail. Explicitly remove +the device for cleanup. +--- + tests/playbooks/tests_802_1x.yml | 2 ++ + tests/playbooks/tests_bridge.yml | 10 ++++++++++ + 2 files changed, 12 insertions(+) + diff --git a/tests/playbooks/tests_802_1x.yml b/tests/playbooks/tests_802_1x.yml -index 9cce1ae..76d99e9 100644 +index 9cce1ae..4ceebb1 100644 --- a/tests/playbooks/tests_802_1x.yml +++ b/tests/playbooks/tests_802_1x.yml -@@ -1,5 +1,10 @@ - # SPDX-License-Identifier: BSD-3-Clause - --- -+- name: Save host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/save_state.yml -+ +@@ -3,6 +3,8 @@ - hosts: all vars: interface: 802-1x-test -@@ -122,3 +127,8 @@ - command: update-ca-trust - tags: - - "tests::cleanup" -+ -+- name: Restore host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/restore_state.yml -diff --git a/tests/playbooks/tests_bond.yml b/tests/playbooks/tests_bond.yml -index 69f07f8..1e45788 100644 ---- a/tests/playbooks/tests_bond.yml -+++ b/tests/playbooks/tests_bond.yml -@@ -1,5 +1,10 @@ - # SPDX-License-Identifier: BSD-3-Clause - --- -+- name: Save host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/save_state.yml -+ - - hosts: all - vars: - controller_profile: bond0 -@@ -95,3 +100,8 @@ - - import_tasks: tasks/remove_test_interfaces_with_dhcp.yml - tags: - - "tests::cleanup" -+ -+- name: Restore host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/restore_state.yml ++ tags: ++ - tests::expfail + tasks: + - name: "INIT: 802.1x tests" + debug: diff --git a/tests/playbooks/tests_bridge.yml b/tests/playbooks/tests_bridge.yml -index d79d6ad..c8cf3cd 100644 +index d79d6ad..14b1225 100644 --- a/tests/playbooks/tests_bridge.yml +++ b/tests/playbooks/tests_bridge.yml -@@ -1,5 +1,10 @@ - # SPDX-License-Identifier: BSD-3-Clause - --- -+- name: Save host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/save_state.yml -+ - - name: Test configuring bridges - hosts: all - vars: -@@ -14,6 +19,8 @@ - - - name: Add test bridge - hosts: all -+ tags: -+ - 'tests::net::bridge' - vars: - network_connections: - - name: "{{ interface }}" -@@ -36,11 +43,15 @@ - task: tasks/assert_profile_present.yml - - - import_playbook: down_profile.yml -+ tags: -+ - 'tests::net::bridge' - vars: - profile: "{{ interface }}" - # FIXME: assert profile/device down - - - import_playbook: remove_profile.yml -+ tags: -+ - 'tests::net::bridge' - vars: +@@ -49,6 +49,16 @@ profile: "{{ interface }}" + task: tasks/assert_profile_absent.yml -@@ -51,5 +62,19 @@ - - # FIXME: Devices might still be left when profile is absent - # - import_playbook: run_tasks.yml --# vars: -+# vars: - # task: tasks/assert_device_absent.yml -+ +- name: Remove test bridge + hosts: all + tags: -+ - 'tests::cleanup' -+ - 'tests::net::bridge::cleanup' ++ - tests::cleanup + tasks: -+ - command: 'ip link delete "{{ interface }}"' ++ - name: Remove the test interface ++ command: ip link delete {{ interface | quote }} + ignore_errors: yes ++ changed_when: false + -+- name: Restore host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/restore_state.yml -diff --git a/tests/playbooks/tests_checkpoint_cleanup.yml b/tests/playbooks/tests_checkpoint_cleanup.yml -index 18e3fd7..3b5a41a 100644 ---- a/tests/playbooks/tests_checkpoint_cleanup.yml -+++ b/tests/playbooks/tests_checkpoint_cleanup.yml -@@ -4,6 +4,11 @@ - # mark a device as unmanaged for NM and then tries to activiate it using NM. - # This failed without removing the checkpoint. - --- -+- name: Save host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/save_state.yml -+ - - hosts: all - vars: - interface: cptstbr -@@ -80,3 +85,8 @@ - ignore_errors: true - tags: - - "tests::cleanup" -+ -+- name: Restore host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/restore_state.yml -diff --git a/tests/playbooks/tests_ethernet.yml b/tests/playbooks/tests_ethernet.yml -index cd02579..adcffee 100644 ---- a/tests/playbooks/tests_ethernet.yml -+++ b/tests/playbooks/tests_ethernet.yml -@@ -1,5 +1,10 @@ - # SPDX-License-Identifier: BSD-3-Clause - --- -+- name: Save host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/save_state.yml -+ - - hosts: all - tasks: - - debug: -@@ -9,6 +14,8 @@ - - - name: Test configuring ethernet devices - hosts: all -+ tags: -+ - 'tests::net::veth' - vars: - type: veth - interface: lsr27 -@@ -26,6 +33,8 @@ - - - name: Test static interface up - hosts: all -+ tags: -+ - 'tests::net::reconf' - vars: - network_connections: - - name: "{{ interface }}" -@@ -48,17 +57,29 @@ - # FIXME: assert profile present - # FIXME: assert profile/device up + IP address - - import_playbook: down_profile.yml -+ tags: -+ - 'tests::cleanup' - vars: - profile: "{{ interface }}" - # FIXME: assert profile/device down - - import_playbook: remove_profile.yml -+ tags: -+ - 'tests::cleanup' - vars: - profile: "{{ interface }}" - # FIXME: assert profile away - - name: Remove interfaces - hosts: all -+ tags: -+ - 'tests::cleanup' -+ - 'tests::net::veth::cleanup' - tasks: - - include_tasks: tasks/manage_test_interface.yml - vars: - state: absent - - include_tasks: tasks/assert_device_absent.yml -+ -+- name: Restore host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/restore_state.yml -diff --git a/tests/playbooks/tests_ethtool_features.yml b/tests/playbooks/tests_ethtool_features.yml -index 43fddc3..d1a87fe 100644 ---- a/tests/playbooks/tests_ethtool_features.yml -+++ b/tests/playbooks/tests_ethtool_features.yml -@@ -1,5 +1,10 @@ - # SPDX-License-Identifier: BSD-3-Clause - --- -+- name: Save host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/save_state.yml -+ - - hosts: all - vars: - interface: testnic1 -@@ -198,3 +203,8 @@ - state: absent - tags: - - "tests::cleanup" -+ -+- name: Restore host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/restore_state.yml -diff --git a/tests/playbooks/tests_provider.yml b/tests/playbooks/tests_provider.yml -index 1db2d08..e097b4b 100644 ---- a/tests/playbooks/tests_provider.yml -+++ b/tests/playbooks/tests_provider.yml -@@ -1,5 +1,10 @@ - # SPDX-License-Identifier: BSD-3-Clause - --- -+- name: Save host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/save_state.yml -+ - - hosts: all - vars: - interface: testnic1 -@@ -33,3 +38,8 @@ - - tasks/cleanup_profile+device.yml - tags: - - tests::provider:initscripts_to_nm -+ -+- name: Restore host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/restore_state.yml -diff --git a/tests/playbooks/tests_reapply.yml b/tests/playbooks/tests_reapply.yml -index 4b1cb09..6995607 100644 ---- a/tests/playbooks/tests_reapply.yml -+++ b/tests/playbooks/tests_reapply.yml -@@ -4,6 +4,11 @@ - # of via Ansible. Until there is better test support for this, just check the - # log output for the respective log message. - --- -+- name: Save host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/save_state.yml -+ - - hosts: all - vars: - interface: rpltstbr -@@ -64,3 +69,8 @@ - ignore_errors: true - tags: - - "tests::cleanup" -+ -+- name: Restore host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/restore_state.yml -diff --git a/tests/playbooks/tests_states.yml b/tests/playbooks/tests_states.yml -index eec27c0..a8d0ecd 100644 ---- a/tests/playbooks/tests_states.yml -+++ b/tests/playbooks/tests_states.yml -@@ -135,3 +135,23 @@ - - tasks/cleanup_profile+device.yml - tags: - - tests::states:remove_down_twice -+ -+ pre_tasks: -+ - name: Save host state -+ import_tasks: tasks/save_state.yml -+ -+ post_tasks: -+ - name: Remove test profile -+ tags: -+ - 'tests::cleanup' -+ - 'tests::net::bridge::cleanup' -+ import_role: -+ name: linux-system-roles.network -+ vars: -+ network_connections: -+ - name: statebr -+ state: down -+ persistent_state: absent -+ -+ - name: Restore host state -+ import_tasks: tasks/restore_state.yml -diff --git a/tests/playbooks/tests_vlan_mtu.yml b/tests/playbooks/tests_vlan_mtu.yml -index 029b599..378d5fe 100644 ---- a/tests/playbooks/tests_vlan_mtu.yml -+++ b/tests/playbooks/tests_vlan_mtu.yml -@@ -10,6 +10,8 @@ - - include_tasks: tasks/manage_test_interface.yml - vars: - state: present -+ tags: -+ - 'tests::net::veth' - - include_tasks: tasks/assert_device_present.yml - - name: >- - TEST: I can configure the MTU for a vlan interface without autoconnect. -@@ -38,6 +40,8 @@ - ip: - dhcp4: false - auto6: false -+ tags: -+ - 'tests::net::reconf' - - include_tasks: tasks/assert_device_present.yml - vars: - interface: "{{ vlan_interface }}" -@@ -62,6 +66,20 @@ - persistent_state: absent - state: down - ignore_errors: true -+ tags: -+ - 'tests::cleanup' -+ - 'tests::net::veth::cleanup' - - include_tasks: tasks/manage_test_interface.yml - vars: - state: absent -+ tags: -+ - 'tests::cleanup' -+ - 'tests::net::veth::cleanup' -+ -+ pre_tasks: -+ - name: Save host state -+ import_tasks: tasks/save_state.yml -+ -+ post_tasks: -+ - name: Restore host state -+ import_tasks: tasks/restore_state.yml -diff --git a/tests/playbooks/tests_wireless.yml b/tests/playbooks/tests_wireless.yml -index 822a15e..52661bd 100644 ---- a/tests/playbooks/tests_wireless.yml -+++ b/tests/playbooks/tests_wireless.yml -@@ -1,5 +1,10 @@ - # SPDX-License-Identifier: BSD-3-Clause - --- -+- name: Save host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/save_state.yml -+ - - hosts: all - vars: - interface: wlan0 -@@ -86,3 +91,8 @@ - - include_tasks: tasks/cleanup_mock_wifi.yml - tags: - - "tests::cleanup" -+ -+- name: Restore host state -+ hosts: all -+ tasks: -+ - import_tasks: tasks/restore_state.yml -diff --git a/tests/tasks/commonvars.yml b/tests/tasks/commonvars.yml -new file mode 100644 -index 0000000..50452f7 ---- /dev/null -+++ b/tests/tasks/commonvars.yml -@@ -0,0 +1,2 @@ -+restore_services: -+ - NetworkManager -diff --git a/tests/tasks/get_services_state.yml b/tests/tasks/get_services_state.yml -new file mode 100644 -index 0000000..4fe5d36 ---- /dev/null -+++ b/tests/tasks/get_services_state.yml -@@ -0,0 +1,4 @@ -+- name: Get initial state of services -+ tags: tests::cleanup -+ service_facts: -+ register: initial_state -diff --git a/tests/tasks/restore_services_state.yml b/tests/tasks/restore_services_state.yml -new file mode 100644 -index 0000000..2035dfc ---- /dev/null -+++ b/tests/tasks/restore_services_state.yml -@@ -0,0 +1,22 @@ -+- block: -+ - name: load common vars -+ include_vars: -+ file: commonvars.yml -+ -+ - name: Get final state of services -+ service_facts: -+ register: final_state -+ -+ - name: Restore state of services -+ service: -+ name: "{{ item }}" -+ state: "{{ 'started' if -+ initial_state.ansible_facts.services[sname]['state'] -+ == 'running' else 'stopped' }}" -+ when: -+ - sname in final_state.ansible_facts.services -+ - sname in initial_state.ansible_facts.services -+ vars: -+ sname: "{{ item + '.service' }}" -+ with_items: "{{ restore_services }}" -+ tags: tests::cleanup -diff --git a/tests/tasks/restore_state.yml b/tests/tasks/restore_state.yml -new file mode 100644 -index 0000000..f4e3d5f ---- /dev/null -+++ b/tests/tasks/restore_state.yml -@@ -0,0 +1,24 @@ -+--- -+- name: Remove /etc/sysconfig/network if there was no one -+ tags: -+ - 'tests::cleanup' -+ file: -+ path: /etc/sysconfig/network -+ state: absent -+ when: -+ - etc_sysconfig_network_stat is defined -+ - not etc_sysconfig_network_stat.stat.exists -+ -+- name: Restore services -+ import_tasks: restore_services_state.yml -+ -+- name: reload NetworkManager -+ tags: -+ - 'tests::cleanup' -+ command: nmcli connection reload -+ when: -+ - sname in final_state.ansible_facts.services -+ - sname in initial_state.ansible_facts.services -+ - final_state.ansible_facts.services[sname]['state'] == 'running' -+ vars: -+ sname: NetworkManager.service -diff --git a/tests/tasks/save_state.yml b/tests/tasks/save_state.yml -new file mode 100644 -index 0000000..5690aed ---- /dev/null -+++ b/tests/tasks/save_state.yml -@@ -0,0 +1,11 @@ -+--- -+- name: Get services state -+ import_tasks: get_services_state.yml -+ -+- name: Investigate /etc/sysconfig/network presence -+ tags: -+ - 'tests::cleanup' -+ stat: -+ path: /etc/sysconfig/network -+ register: etc_sysconfig_network_stat -+ ignore_errors: yes -diff --git a/tests/tests_802_1x_nm.yml b/tests/tests_802_1x_nm.yml -index 288cd5d..840958d 100644 ---- a/tests/tests_802_1x_nm.yml -+++ b/tests/tests_802_1x_nm.yml -@@ -4,6 +4,8 @@ - # set network provider and gather facts - - hosts: all - name: Run playbook 'playbooks/tests_802_1x.yml' with nm as provider -+ tags: -+ - tests::expfail - tasks: - - name: Set network provider to 'nm' - set_fact: -@@ -17,3 +19,5 @@ - - import_playbook: playbooks/tests_802_1x.yml - when: - - ansible_distribution_major_version != '6' -+ tags: -+ - tests::expfail -diff --git a/tests/tests_802_1x_updated_nm.yml b/tests/tests_802_1x_updated_nm.yml -index bd335e4..4ebcaf9 100644 ---- a/tests/tests_802_1x_updated_nm.yml -+++ b/tests/tests_802_1x_updated_nm.yml -@@ -4,6 +4,8 @@ - # set network provider and gather facts - - hosts: all - name: Run playbook 'playbooks/tests_802_1x_updated.yml' with nm as provider -+ tags: -+ - tests::expfail - tasks: - - name: Set network provider to 'nm' - set_fact: -@@ -17,3 +19,5 @@ - - import_playbook: playbooks/tests_802_1x_updated.yml - when: - - ansible_distribution_major_version != '6' -+ tags: -+ - tests::expfail -diff --git a/tests/tests_default.yml b/tests/tests_default.yml -index f6f7550..98e3c7e 100644 ---- a/tests/tests_default.yml -+++ b/tests/tests_default.yml -@@ -10,3 +10,11 @@ - that: - - "'warnings' not in __network_connections_result" - msg: "There are warnings" -+ -+ pre_tasks: -+ - name: Save host state -+ import_tasks: tasks/save_state.yml -+ -+ post_tasks: -+ - name: Restore host state -+ import_tasks: tasks/restore_state.yml -diff --git a/tests/tests_helpers_and_asserts.yml b/tests/tests_helpers_and_asserts.yml -index 5514182..d9bfa11 100644 ---- a/tests/tests_helpers_and_asserts.yml -+++ b/tests/tests_helpers_and_asserts.yml -@@ -15,6 +15,14 @@ - type: dummy - interface: dummy1298 - -+ pre_tasks: -+ - name: Save host state -+ import_tasks: tasks/save_state.yml -+ -+ post_tasks: -+ - name: Restore host state -+ import_tasks: tasks/restore_state.yml -+ - # FIXME: when: does not seem to work with include_tasks, therefore this cannot - # be safely tested for now - # - name: test tap interfaces + # FIXME: Devices might still be left when profile is absent + # - import_playbook: run_tasks.yml + # vars: +-- +2.30.2 + diff --git a/SOURCES/postfix-meta-el8.diff b/SOURCES/postfix-meta-el8.diff deleted file mode 100644 index 41cb91b..0000000 --- a/SOURCES/postfix-meta-el8.diff +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/meta/main.yml b/meta/main.yml -index a0ef6f4..da22270 100644 ---- a/meta/main.yml -+++ b/meta/main.yml -@@ -7,8 +7,8 @@ galaxy_info: - min_ansible_version: 2.2 - platforms: - - name: Fedora -- versions: [ 24, 25 ] -+ versions: [ 31, 32 ] - - name: EL -- versions: [ 6, 7 ] -+ versions: [ 6, 7, 8 ] - - - diff --git a/SOURCES/rhel-system-roles-kdump-pr22.diff b/SOURCES/rhel-system-roles-kdump-pr22.diff deleted file mode 100644 index 342eddc..0000000 --- a/SOURCES/rhel-system-roles-kdump-pr22.diff +++ /dev/null @@ -1,80 +0,0 @@ -diff --git a/tasks/ssh.yml b/tasks/ssh.yml -index 1a4e858..b05d01a 100644 ---- a/tasks/ssh.yml -+++ b/tasks/ssh.yml -@@ -18,3 +18,15 @@ - key: "{{ keydata.content|b64decode }}" - state: present - delegate_to: "{{ kdump_ssh_server }}" -+ -+- name: Fetch the servers public key -+ slurp: -+ src: /etc/ssh/ssh_host_rsa_key.pub -+ register: serverpubkey -+ delegate_to: "{{ kdump_ssh_server }}" -+ -+- name: Add the servers public key to known_hosts on managed node -+ known_hosts: -+ key: "{{ kdump_ssh_server_location }} {{ serverpubkey.content | b64decode }}" -+ name: "{{ kdump_ssh_server_location }}" -+ path: /etc/ssh/ssh_known_hosts -diff --git a/templates/kdump.conf.j2 b/templates/kdump.conf.j2 -index bf24210..504ff34 100644 ---- a/templates/kdump.conf.j2 -+++ b/templates/kdump.conf.j2 -@@ -1,12 +1,17 @@ - # {{ ansible_managed }} - - {% if kdump_target %} --{{ kdump_target.type }} {{ kdump_target.location }} --{% endif %} -+{% if kdump_target.type == "ssh" %} -+ssh {{ kdump_target.location | d(kdump_ssh_user ~ '@' ~ kdump_ssh_server) }} - --{% if kdump_target and kdump_target.type == "ssh" and kdump_sshkey != '/root/.ssh/kdump_id_rsa' %} -+{% if kdump_sshkey != '/root/.ssh/kdump_id_rsa' %} - sshkey {{ kdump_sshkey }} - {% endif %} -+{% else %} -+{{ kdump_target.type }} {{ kdump_target.location }} -+ -+{% endif %} -+{% endif %} - - path {{ kdump_path }} - {% if kdump_core_collector %} -diff --git a/tests/tests_ssh.yml b/tests/tests_ssh.yml -index 1da99df..d12e884 100644 ---- a/tests/tests_ssh.yml -+++ b/tests/tests_ssh.yml -@@ -5,6 +5,11 @@ - # known and ansible is supposed to be configured to be able to - # connect to it (via inventory). - kdump_ssh_server_outside: localhost -+ kdump_ssh_source: "{{ ansible_env['SSH_CONNECTION'].split()[0] }}" -+ -+ # this is the address at which the ssh dump server can be reached -+ # from the managed host. Dumps will be uploaded there. -+ kdump_ssh_server_inside: "{{ kdump_ssh_source if kdump_ssh_source in hostvars[kdump_ssh_server_outside]['ansible_all_ipv4_addresses'] + hostvars[kdump_ssh_server_outside]['ansible_all_ipv6_addresses'] else hostvars[kdump_ssh_server_outside]['ansible_default_ipv4']['address'] }}" - - tasks: - - name: gather facts from {{ kdump_ssh_server_outside }} -@@ -25,8 +30,5 @@ - type: ssh - # This is the ssh dump server address visible from inside - # the machine being configured. Dumps are to be copied -- # there. We make here the assumption that this machine is -- # being run as a VM and the dump server is the VM host -- # (i.e. for ansible this is localhost). From the VM its -- # address is then identical to the default route. -- location: "{{ kdump_ssh_user }}@{{ ansible_default_ipv4.gateway }}" -+ # there. -+ location: "{{ kdump_ssh_user }}@{{ kdump_ssh_server_inside }}" -diff --git a/vars/main.yml b/vars/main.yml -new file mode 100644 -index 0000000..34d2d62 ---- /dev/null -+++ b/vars/main.yml -@@ -0,0 +1,2 @@ -+# determine the managed node facing ssh server address -+kdump_ssh_server_location: "{{ kdump_target.location | regex_replace('.*@(.*)$', '\\1') if kdump_target.location is defined else kdump_ssh_server }}" diff --git a/SOURCES/rhel-system-roles-postfix-pr5.diff b/SOURCES/rhel-system-roles-postfix-pr5.diff deleted file mode 100644 index 4da6f48..0000000 --- a/SOURCES/rhel-system-roles-postfix-pr5.diff +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/README.md b/README.md -index 5950215..df64284 100644 ---- a/README.md -+++ b/README.md -@@ -17,7 +17,7 @@ Example Playbook - - Install and enable postfix. Configure "relay_domains=$mydestination" and - --``` -+```yaml - --- - - hosts: all - vars: -@@ -31,7 +31,7 @@ Install and enable postfix. Configure "relay_domains=$mydestination" and - Install and enable postfix. Do not run 'postfix check' before restarting - postfix: - --``` -+```yaml - --- - - hosts: all - vars: -@@ -43,7 +43,7 @@ postfix: - Install and enable postfix. Do single backup of main.cf (older backup will be - rewritten) and configure "relay_host=example.com": - --``` -+```yaml - --- - - hosts: all - vars: -@@ -58,7 +58,7 @@ Install and enable postfix. Do timestamped backup of main.cf and - configure "relay_host=example.com" (if postfix_backup_multiple is - set to true postfix_backup is ignored): - --``` -+```yaml - --- - - hosts: all - vars: diff --git a/SOURCES/selinux-bz-1926947-no-variable-named-present.diff b/SOURCES/selinux-bz-1926947-no-variable-named-present.diff deleted file mode 100644 index f9bdf2e..0000000 --- a/SOURCES/selinux-bz-1926947-no-variable-named-present.diff +++ /dev/null @@ -1,34 +0,0 @@ -From 035a9b2db26af071a95e02a0af08bcbb73b69abf Mon Sep 17 00:00:00 2001 -From: Florian Bachmann -Date: Fri, 5 Feb 2021 11:48:53 +0100 -Subject: [PATCH] fix incorrect default value (there is no variable named - "present") - ---- - tasks/main.yml | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/tasks/main.yml b/tasks/main.yml -index afbe81f..702e369 100644 ---- a/tasks/main.yml -+++ b/tasks/main.yml -@@ -118,7 +118,7 @@ - ports: "{{ item.ports }}" - proto: "{{ item.proto | default('tcp') }}" - setype: "{{ item.setype }}" -- state: "{{ item.state | default(present) }}" -+ state: "{{ item.state | default('present') }}" - with_items: "{{ selinux_ports }}" - - - name: Set linux user to SELinux user mapping -@@ -126,6 +126,6 @@ - login: "{{ item.login }}" - seuser: "{{ item.seuser }}" - serange: "{{ item.serange | default('s0') }}" -- state: "{{ item.state | default(present) }}" -+ state: "{{ item.state | default('present') }}" - reload: "{{ item.reload | default(False) }}" - with_items: "{{ selinux_logins }}" --- -2.29.2 - diff --git a/SOURCES/selinux-tier1-tags.diff b/SOURCES/selinux-tier1-tags.diff deleted file mode 100644 index c2c4abd..0000000 --- a/SOURCES/selinux-tier1-tags.diff +++ /dev/null @@ -1,176 +0,0 @@ -diff --git a/tests/set_selinux_variables.yml b/tests/set_selinux_variables.yml -index f294101..7571066 100644 ---- a/tests/set_selinux_variables.yml -+++ b/tests/set_selinux_variables.yml -@@ -1,4 +1,12 @@ - --- -+- name: Install SELinux tool semanage on Fedora -+ package: -+ name: -+ - policycoreutils-python-utils -+ state: present -+ when: ansible_distribution == "Fedora" or -+ ( ansible_distribution_major_version > "7" and -+ ( ansible_distribution == "CentOS" or ansible_distribution == "RedHat" )) - - name: Get local modifications - boolean - command: /usr/sbin/semanage boolean -l -n -C - register: selinux_role_boolean -diff --git a/tests/tests_all_purge.yml b/tests/tests_all_purge.yml -index 03dfe05..6775847 100644 ---- a/tests/tests_all_purge.yml -+++ b/tests/tests_all_purge.yml -@@ -8,13 +8,17 @@ - fcontext -a -t user_home_dir_t /tmp/test_dir - login -a -s staff_u sar-user - -+ tags: -+ - 'tests::avc' - tasks: - - name: Install SELinux tool semanage on Fedora - package: - name: - - policycoreutils-python-utils - state: present -- when: ansible_distribution == "Fedora" -+ when: ansible_distribution == "Fedora" or -+ ( ansible_distribution_major_version > "7" and -+ ( ansible_distribution == "CentOS" or ansible_distribution == "RedHat" )) - - - name: Add a Linux System Roles SELinux User - user: -diff --git a/tests/tests_all_transitions.yml b/tests/tests_all_transitions.yml -index f608a42..d0d209b 100644 ---- a/tests/tests_all_transitions.yml -+++ b/tests/tests_all_transitions.yml -@@ -1,6 +1,8 @@ - - name: Test all the possible selinux_state transitions - hosts: all - become: true -+ tags: -+ - 'tests::reboot' - vars: - states: - - permissive -diff --git a/tests/tests_boolean.yml b/tests/tests_boolean.yml -index 47eafc0..2aa0025 100644 ---- a/tests/tests_boolean.yml -+++ b/tests/tests_boolean.yml -@@ -1,4 +1,5 @@ - - name: Check if selinux role sets SELinux booleans -+ tags: tests::expfail - hosts: all - become: true - -@@ -12,7 +13,7 @@ - selinux_booleans: - - { name: 'samba_enable_home_dirs', state: 'on', persistent: 'yes' } - -- - include: set_selinux_variables.yml -+ - import_tasks: set_selinux_variables.yml - - name: save state after initial changes and before other changes - set_fact: - boolean_before: "{{ selinux_role_boolean.stdout_lines }}" -diff --git a/tests/tests_fcontext.yml b/tests/tests_fcontext.yml -index 0a411fb..f6f1bf4 100644 ---- a/tests/tests_fcontext.yml -+++ b/tests/tests_fcontext.yml -@@ -13,7 +13,7 @@ - selinux_fcontexts: - - { target: '/tmp/test_dir1(/.*)?', setype: 'user_home_dir_t', ftype: 'd' } - -- - include: set_selinux_variables.yml -+ - import_tasks: set_selinux_variables.yml - - name: save state after initial changes and before other changes - set_fact: - fcontext_before: "{{ selinux_role_fcontext.stdout }}" -diff --git a/tests/tests_login.yml b/tests/tests_login.yml -index efa826d..c7ce462 100644 ---- a/tests/tests_login.yml -+++ b/tests/tests_login.yml -@@ -18,6 +18,6 @@ - - { login: 'sar-user', seuser: 'staff_u', serange: 's0-s0:c0.c1023', state: 'present' } - -- - include: set_selinux_variables.yml -+ - import_tasks: set_selinux_variables.yml - - name: save state after initial changes and before other changes - set_fact: - login_before: "{{ selinux_role_login.stdout }}" -diff --git a/tests/tests_port.yml b/tests/tests_port.yml -index 446f79d..7bb112e 100644 ---- a/tests/tests_port.yml -+++ b/tests/tests_port.yml -@@ -29,7 +29,7 @@ - selinux_ports: - - { ports: '22022', proto: 'tcp', setype: 'ssh_port_t', state: 'present' } - -- - include: set_selinux_variables.yml -+ - import_tasks: set_selinux_variables.yml - - name: save state after other changes - set_fact: - port_after: "{{ selinux_role_port.stdout }}" -diff --git a/tests/tests_selinux_disabled.yml b/tests/tests_selinux_disabled.yml -index afd23e4..883dc6d 100644 ---- a/tests/tests_selinux_disabled.yml -+++ b/tests/tests_selinux_disabled.yml -@@ -12,13 +12,17 @@ - fcontext -a -t user_home_dir_t /tmp/test_dir - login -a -s staff_u sar-user - -+ tags: -+ - 'tests::avc' - tasks: - - name: Install SELinux tool semanage on Fedora - package: - name: - - policycoreutils-python-utils - state: present -- when: ansible_distribution == "Fedora" -+ when: ansible_distribution == "Fedora" or -+ ( ansible_distribution_major_version > "7" and -+ ( ansible_distribution == "CentOS" or ansible_distribution == "RedHat" )) - - - name: Add a Linux System Roles SELinux User - user: -@@ -67,17 +69,28 @@ - assert: - that: "{{ ansible_selinux.config_mode == 'enforcing' }}" - msg: "SELinux config mode should be enforcing instead of {{ ansible_selinux.config_mode }}" -- - name: Restore original /etc/selinux/config -- copy: -- remote_src: true -- dest: /etc/selinux/config -- src: /etc/selinux/config.test_selinux_disabled -- - name: Remove /etc/selinux/config backup -- file: -- path: /etc/selinux/config.test_selinux_disabled -- state: absent -- - name: Remove Linux System Roles SELinux User -- user: -- name: sar-user -- remove: yes -- state: absent -+ -+ - name: Cleanup -+ tags: [ 'tests::cleanup' ] -+ block: -+ - name: Restore original /etc/selinux/config -+ copy: -+ remote_src: true -+ dest: /etc/selinux/config -+ src: /etc/selinux/config.test_selinux_disabled -+ -+ - name: Remove /etc/selinux/config backup -+ file: -+ path: /etc/selinux/config.test_selinux_disabled -+ state: absent -+ -+ - name: Remove Linux System Roles SELinux User -+ user: -+ name: sar-user -+ remove: yes -+ state: absent -+ -+ - import_role: -+ name: linux-system-roles.selinux -+ vars: -+ selinux_all_purge: true diff --git a/SOURCES/sshd-example.diff b/SOURCES/sshd-example.diff deleted file mode 100644 index 48243e3..0000000 --- a/SOURCES/sshd-example.diff +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/README.md b/README.md -index 676ad72..dc06d85 100644 ---- a/README.md -+++ b/README.md -@@ -190,7 +190,7 @@ defaults. This is useful if the role is used in deployment stage to make sure - the service is able to start on the first attempt. To disable this check, set - this to empty list. - --* `sshd_hostkey_owner`, `sshd_hostkey_group`, `sshd_hostkey_group` -+* `sshd_hostkey_owner`, `sshd_hostkey_group`, `sshd_hostkey_mode` - - Use these variables to set the ownership and permissions for the host keys from - the above list. -@@ -273,6 +273,8 @@ for example: - X11Forwarding: yes - ``` - -+More example playbooks can be found in [`examples/`](examples/) directory. -+ - Template Generation - ------------------- - -diff --git a/examples/example-root-login.yml b/examples/example-root-login.yml -new file mode 100644 -index 0000000..156e629 ---- /dev/null -+++ b/examples/example-root-login.yml -@@ -0,0 +1,15 @@ -+--- -+- hosts: all -+ tasks: -+ - name: Configure sshd to prevent root and password login except from particular subnet -+ include_role: -+ name: ansible-sshd -+ vars: -+ sshd: -+ # root login and password login is enabled only from a particular subnet -+ PermitRootLogin: no -+ PasswordAuthentication: no -+ Match: -+ - Condition: "Address 192.0.2.0/24" -+ PermitRootLogin: yes -+ PasswordAuthentication: yes diff --git a/SOURCES/sshd-work-on-ansible28-jinja27.diff b/SOURCES/sshd-work-on-ansible28-jinja27.diff deleted file mode 100644 index 268d31f..0000000 --- a/SOURCES/sshd-work-on-ansible28-jinja27.diff +++ /dev/null @@ -1,25 +0,0 @@ -From bb612fb6c5f76a40fce368acb43d2847e699213d Mon Sep 17 00:00:00 2001 -From: Rich Megginson -Date: Thu, 28 Jan 2021 15:56:14 -0700 -Subject: [PATCH] use state: absent instead of state: missing - ---- - tests/tests_hostkeys_missing.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/tests_hostkeys_missing.yml b/tests/tests_hostkeys_missing.yml -index 9dfe77b..5790684 100644 ---- a/tests/tests_hostkeys_missing.yml -+++ b/tests/tests_hostkeys_missing.yml -@@ -40,7 +40,7 @@ - - name: Make sure the key was not created - file: - path: /tmp/missing_ssh_host_rsa_key -- state: missing -+ state: absent - register: key - failed_when: key.changed - tags: tests::verify --- -2.29.2 - diff --git a/SOURCES/storage-no-disks-existing.diff b/SOURCES/storage-no-disks-existing.diff deleted file mode 100644 index 68b1e8d..0000000 --- a/SOURCES/storage-no-disks-existing.diff +++ /dev/null @@ -1,142 +0,0 @@ -diff --git a/library/blivet.py b/library/blivet.py -index eb8bb11..e927121 100644 ---- a/library/blivet.py -+++ b/library/blivet.py -@@ -104,6 +104,7 @@ try: - from blivet3.formats import get_format - from blivet3.partitioning import do_partitioning - from blivet3.size import Size -+ from blivet3.udev import trigger - from blivet3.util import set_up_logging - BLIVET_PACKAGE = 'blivet3' - except ImportError: -@@ -116,6 +117,7 @@ except ImportError: - from blivet.formats import get_format - from blivet.partitioning import do_partitioning - from blivet.size import Size -+ from blivet.udev import trigger - from blivet.util import set_up_logging - BLIVET_PACKAGE = 'blivet' - except ImportError: -@@ -821,7 +823,10 @@ class BlivetPool(BlivetBase): - - def _look_up_disks(self): - """ Look up the pool's disks in blivet's device tree. """ -- if not self._pool['disks']: -+ if self._disks: -+ return -+ -+ if not self._device and not self._pool['disks']: - raise BlivetAnsibleError("no disks specified for pool '%s'" % self._pool['name']) - elif not isinstance(self._pool['disks'], list): - raise BlivetAnsibleError("pool disks must be specified as a list") -@@ -832,7 +837,7 @@ class BlivetPool(BlivetBase): - if device is not None: # XXX fail if any disk isn't resolved? - disks.append(device) - -- if self._pool['disks'] and not disks: -+ if self._pool['disks'] and not self._device and not disks: - raise BlivetAnsibleError("unable to resolve any disks specified for pool '%s' (%s)" % (self._pool['name'], self._pool['disks'])) - - self._disks = disks -@@ -974,9 +979,9 @@ class BlivetPool(BlivetBase): - """ Schedule actions to configure this pool according to the yaml input. """ - global safe_mode - # look up the device -- self._look_up_disks() - self._look_up_device() - self._apply_defaults() -+ self._look_up_disks() - - # schedule destroy if appropriate, including member type change - if not self.ultimately_present: -@@ -999,6 +1004,7 @@ class BlivetPartitionPool(BlivetPool): - return self._device.partitionable - - def _look_up_device(self): -+ self._look_up_disks() - self._device = self._disks[0] - - def _create(self): -@@ -1354,6 +1360,13 @@ def run_module(): - - actions.append(action) - -+ def ensure_udev_update(action): -+ if action.is_create: -+ sys_path = action.device.path -+ if os.path.islink(sys_path): -+ sys_path = os.readlink(action.device.path) -+ trigger(action='change', subsystem='block', name=os.path.basename(sys_path)) -+ - def action_dict(action): - return dict(action=action.type_desc_str, - fs_type=action.format.type if action.is_format else None, -@@ -1395,6 +1408,7 @@ def run_module(): - if scheduled: - # execute the scheduled actions, committing changes to disk - callbacks.action_executed.add(record_action) -+ callbacks.action_executed.add(ensure_udev_update) - try: - b.devicetree.actions.process(devices=b.devicetree.devices, dry_run=module.check_mode) - except Exception as e: -diff --git a/tests/tests_existing_lvm_pool.yml b/tests/tests_existing_lvm_pool.yml -new file mode 100644 -index 0000000..854ac0d ---- /dev/null -+++ b/tests/tests_existing_lvm_pool.yml -@@ -0,0 +1,54 @@ -+--- -+- hosts: all -+ become: true -+ vars: -+ mount_location: '/opt/test1' -+ volume_group_size: '5g' -+ volume_size: '4g' -+ pool_name: foo -+ -+ tasks: -+ - include_role: -+ name: linux-system-roles.storage -+ -+ - include_tasks: get_unused_disk.yml -+ vars: -+ min_size: "{{ volume_group_size }}" -+ max_return: 1 -+ -+ - name: Create one LVM logical volume under one volume group -+ include_role: -+ name: linux-system-roles.storage -+ vars: -+ storage_pools: -+ - name: "{{ pool_name }}" -+ disks: "{{ unused_disks }}" -+ volumes: -+ - name: test1 -+ size: "{{ volume_size }}" -+ -+ - include_tasks: verify-role-results.yml -+ -+ - name: Create another volume in the existing pool, identified only by name. -+ include_role: -+ name: linux-system-roles.storage -+ vars: -+ storage_pools: -+ - name: "{{ pool_name }}" -+ volumes: -+ - name: newvol -+ size: '2 GiB' -+ fs_type: ext4 -+ fs_label: newvol -+ -+ - include_tasks: verify-role-results.yml -+ -+ - name: Clean up. -+ include_role: -+ name: linux-system-roles.storage -+ vars: -+ storage_pools: -+ - name: "{{ pool_name }}" -+ state: absent -+ -+ - include_tasks: verify-role-results.yml diff --git a/SOURCES/storage-partition-name.diff b/SOURCES/storage-partition-name.diff deleted file mode 100644 index c206dc0..0000000 --- a/SOURCES/storage-partition-name.diff +++ /dev/null @@ -1,30 +0,0 @@ -commit effb7faf20301ddcee8ee36a1b156a0b9f006bb0 -Author: David Lehman -Date: Tue Aug 4 16:00:33 2020 -0400 - - Be smarter in choosing expected partition name. - - BlivetVolume._get_device_id is only used to look up pre-existing - volumes, so we don't have to try too hard to guess it by name. - We can just see if the disk has a single partition and, if so, - return the name of that partition. - - Fixes: #141 - -diff --git a/library/blivet.py b/library/blivet.py -index eb8bb11..0f7ce98 100644 ---- a/library/blivet.py -+++ b/library/blivet.py -@@ -554,7 +554,11 @@ class BlivetPartitionVolume(BlivetVolume): - return self._device.raw_device.type == 'partition' - - def _get_device_id(self): -- return self._blivet_pool._disks[0].name + '1' -+ device_id = None -+ if self._blivet_pool._disks[0].partitioned and len(self._blivet_pool._disks[0].children) == 1: -+ device_id = self._blivet_pool._disks[0].children[0].name -+ -+ return device_id - - def _resize(self): - pass diff --git a/SOURCES/storage-trim-volume-size.diff b/SOURCES/storage-trim-volume-size.diff deleted file mode 100644 index ef947c7..0000000 --- a/SOURCES/storage-trim-volume-size.diff +++ /dev/null @@ -1,326 +0,0 @@ -diff --git a/library/blivet.py b/library/blivet.py -index e927121..f59f821 100644 ---- a/library/blivet.py -+++ b/library/blivet.py -@@ -130,6 +130,9 @@ if BLIVET_PACKAGE: - set_up_logging() - log = logging.getLogger(BLIVET_PACKAGE + ".ansible") - -+ -+MAX_TRIM_PERCENT = 2 -+ - use_partitions = None # create partitions on pool backing device disks? - disklabel_type = None # user-specified disklabel type - safe_mode = None # do not remove any existing devices or formatting -@@ -445,8 +448,16 @@ class BlivetVolume(BlivetBase): - if not self._device.resizable: - return - -- if self._device.format.resizable: -- self._device.format.update_size_info() -+ trim_percent = (1.0 - float(self._device.max_size / size))*100 -+ log.debug("resize: size=%s->%s ; trim=%s", self._device.size, size, trim_percent) -+ if size > self._device.max_size and trim_percent <= MAX_TRIM_PERCENT: -+ log.info("adjusting %s resize target from %s to %s to fit in free space", -+ self._volume['name'], -+ size, -+ self._device.max_size) -+ size = self._device.max_size -+ if size == self._device.size: -+ return - - if not self._device.min_size <= size <= self._device.max_size: - raise BlivetAnsibleError("volume '%s' cannot be resized to '%s'" % (self._volume['name'], size)) -@@ -610,10 +621,18 @@ class BlivetLVMVolume(BlivetVolume): - raise BlivetAnsibleError("invalid size '%s' specified for volume '%s'" % (self._volume['size'], self._volume['name'])) - - fmt = self._get_format() -+ trim_percent = (1.0 - float(parent.free_space / size))*100 -+ log.debug("size: %s ; %s", size, trim_percent) - if size > parent.free_space: -- raise BlivetAnsibleError("specified size for volume '%s' exceeds available space in pool '%s' (%s)" % (size, -- parent.name, -- parent.free_space)) -+ if trim_percent > MAX_TRIM_PERCENT: -+ raise BlivetAnsibleError("specified size for volume '%s' exceeds available space in pool '%s' (%s)" -+ % (size, parent.name, parent.free_space)) -+ else: -+ log.info("adjusting %s size from %s to %s to fit in %s free space", self._volume['name'], -+ size, -+ parent.free_space, -+ parent.name) -+ size = parent.free_space - - try: - device = self._blivet.new_lv(name=self._volume['name'], -diff --git a/tests/tests_create_lv_size_equal_to_vg.yml b/tests/tests_create_lv_size_equal_to_vg.yml -new file mode 100644 -index 0000000..21a5788 ---- /dev/null -+++ b/tests/tests_create_lv_size_equal_to_vg.yml -@@ -0,0 +1,48 @@ -+--- -+- hosts: all -+ become: true -+ vars: -+ storage_safe_mode: false -+ mount_location: '/opt/test1' -+ volume_group_size: '10g' -+ lv_size: '10g' -+ unused_disk_subfact: '{{ ansible_devices[unused_disks[0]] }}' -+ disk_size: '{{ unused_disk_subfact.sectors|int * -+ unused_disk_subfact.sectorsize|int }}' -+ -+ tasks: -+ - include_role: -+ name: linux-system-roles.storage -+ -+ - include_tasks: get_unused_disk.yml -+ vars: -+ min_size: "{{ volume_group_size }}" -+ max_return: 1 -+ -+ - name: Create one lv which size is equal to vg size -+ include_role: -+ name: linux-system-roles.storage -+ vars: -+ storage_pools: -+ - name: foo -+ disks: "{{ unused_disks }}" -+ volumes: -+ - name: test1 -+ size: "{{ lv_size }}" -+ mount_point: "{{ mount_location }}" -+ -+ - include_tasks: verify-role-results.yml -+ -+ - name: Clean up -+ include_role: -+ name: linux-system-roles.storage -+ vars: -+ storage_pools: -+ - name: foo -+ disks: "{{ unused_disks }}" -+ state: "absent" -+ volumes: -+ - name: test1 -+ mount_point: "{{ mount_location }}" -+ -+ - include_tasks: verify-role-results.yml -diff --git a/tests/tests_lvm_auto_size_cap.yml b/tests/tests_lvm_auto_size_cap.yml -new file mode 100644 -index 0000000..fb17c23 ---- /dev/null -+++ b/tests/tests_lvm_auto_size_cap.yml -@@ -0,0 +1,89 @@ -+--- -+- hosts: all -+ become: true -+ -+ tasks: -+ - include_role: -+ name: linux-system-roles.storage -+ -+ - include_tasks: get_unused_disk.yml -+ vars: -+ min_size: 10g -+ max_return: 1 -+ -+ - command: lsblk -b -l --noheadings -o NAME,SIZE -+ register: storage_test_lsblk -+ -+ - set_fact: -+ test_disk_size: "{{ storage_test_lsblk.stdout_lines|map('regex_search', '^' + unused_disks[0] + '\\s+\\d+$')|select('string')|first|regex_replace('^\\w+\\s+', '') }}" -+ -+ - package: -+ name: bc -+ state: installed -+ -+ - command: -+ cmd: bc -+ stdin: "{{ test_disk_size }} *2" -+ register: doubled_size -+ -+ - name: Test handling of too-large LVM volume size -+ block: -+ - name: Try to create a pool containing one volume twice the size of the backing disk -+ include_role: -+ name: linux-system-roles.storage -+ vars: -+ storage_pools: -+ - name: foo -+ type: lvm -+ disks: "{{ unused_disks }}" -+ volumes: -+ - name: test1 -+ size: "{{ doubled_size.stdout|trim }}" -+ - name: unreachable task -+ fail: -+ msg: UNREACH -+ rescue: -+ - name: Check that we failed in the role -+ assert: -+ that: -+ - ansible_failed_result.msg != 'UNREACH' -+ - blivet_output.failed and -+ blivet_output.msg|regex_search('specified size for volume.+exceeds available') -+ msg: "Role has not failed when it should have" -+ -+ - name: Create a pool containing one volume the same size as the backing disk -+ include_role: -+ name: linux-system-roles.storage -+ vars: -+ storage_pools: -+ - name: foo -+ disks: "{{ unused_disks }}" -+ volumes: -+ - name: test1 -+ size: "{{ test_disk_size }}" -+ -+ - include_tasks: verify-role-results.yml -+ -+ - name: Repeat the previous invocation to verify idempotence -+ include_role: -+ name: linux-system-roles.storage -+ vars: -+ storage_pools: -+ - name: foo -+ type: lvm -+ disks: "{{ unused_disks }}" -+ volumes: -+ - name: test1 -+ size: "{{ test_disk_size }}" -+ -+ - include_tasks: verify-role-results.yml -+ -+ - name: Clean up -+ include_role: -+ name: linux-system-roles.storage -+ vars: -+ storage_pools: -+ - name: foo -+ disks: "{{ unused_disks }}" -+ state: absent -+ volumes: [] -diff --git a/tests/tests_lvm_errors.yml b/tests/tests_lvm_errors.yml -index 37d41dc..e8dc4f4 100644 ---- a/tests/tests_lvm_errors.yml -+++ b/tests/tests_lvm_errors.yml -@@ -11,8 +11,6 @@ - - '/non/existent/disk' - invalid_size: 'xyz GiB' - unused_disk_subfact: '{{ ansible_devices[unused_disks[0]] }}' -- too_large_size: '{{ (unused_disk_subfact.sectors|int + 1) * -- unused_disk_subfact.sectorsize|int }}' - - tasks: - - include_role: -@@ -86,39 +84,6 @@ - - ansible_failed_result.msg != 'UNREACH' - msg: "Role has not failed when it should have" - -- # the following does not work properly -- # - name: Verify the output -- # assert: -- # that: "{{ blivet_output.failed and -- # blivet_output.msg|regex_search('invalid size.+for volume') and -- # not blivet_output.changed }}" -- # msg: "Unexpected behavior w/ invalid volume size" -- -- - name: Test for correct handling of too-large volume size. -- block: -- - name: Try to create LVM with a too-large volume size. -- include_role: -- name: linux-system-roles.storage -- vars: -- storage_pools: -- - name: foo -- disks: "{{ unused_disks }}" -- volumes: -- - name: test1 -- size: "{{ too_large_size }}" -- mount_point: "{{ mount_location1 }}" -- -- - name: unreachable task -- fail: -- msg: UNREACH -- -- rescue: -- - name: Check that we failed in the role -- assert: -- that: -- - ansible_failed_result.msg != 'UNREACH' -- msg: "Role has not failed when it should have" -- - # the following does not work properly - # - name: Verify the output - # assert: -@@ -138,7 +103,7 @@ - disks: "{{ unused_disks[0] }}" - volumes: - - name: test1 -- size: "{{ too_large_size }}" -+ size: "{{ volume_size }}" - mount_point: "{{ mount_location1 }}" - - - name: unreachable task -@@ -171,7 +136,7 @@ - disks: [] - volumes: - - name: test1 -- size: "{{ too_large_size }}" -+ size: "{{ volume1_size }}" - mount_point: "{{ mount_location1 }}" - - - name: unreachable task -diff --git a/tests/tests_misc.yml b/tests/tests_misc.yml -index a69ee98..3139bc7 100644 ---- a/tests/tests_misc.yml -+++ b/tests/tests_misc.yml -@@ -7,7 +7,7 @@ - volume_group_size: '5g' - volume1_size: '4g' - unused_disk_subfact: '{{ ansible_devices[unused_disks[0]] }}' -- too_large_size: '{{ (unused_disk_subfact.sectors|int + 1) * -+ too_large_size: '{{ (unused_disk_subfact.sectors|int * 1.2) * - unused_disk_subfact.sectorsize|int }}' - - tasks: -diff --git a/tests/tests_resize.yml b/tests/tests_resize.yml -index 9eeb2b9..209d129 100644 ---- a/tests/tests_resize.yml -+++ b/tests/tests_resize.yml -@@ -9,7 +9,7 @@ - invalid_size1: 'xyz GiB' - invalid_size2: 'none' - unused_disk_subfact: '{{ ansible_devices[unused_disks[0]] }}' -- too_large_size: '{{ (unused_disk_subfact.sectors|int + 1) * -+ too_large_size: '{{ unused_disk_subfact.sectors|int * 1.2 * - unused_disk_subfact.sectorsize|int }}' - disk_size: '{{ unused_disk_subfact.sectors|int * - unused_disk_subfact.sectorsize|int }}' -@@ -122,23 +122,7 @@ - size: "{{ disk_size }}" - mount_point: "{{ mount_location }}" - -- - name: Unreachable task -- fail: -- msg: UNREACH -- -- rescue: -- - name: Check that we failed in the role -- assert: -- that: -- - ansible_failed_result.msg != 'UNREACH' -- msg: "Role has not failed when it should have" -- -- - name: Verify the output -- assert: -- that: "blivet_output.failed and -- blivet_output.msg|regex_search('volume.+cannot be resized to.+') and -- not blivet_output.changed" -- msg: "Unexpected behavior w/ invalid volume size" -+ - include_tasks: verify-role-results.yml - - - name: Test for correct handling of invalid size specification - block: diff --git a/SOURCES/timesync-tier1-tags.diff b/SOURCES/timesync-tier1-tags.diff deleted file mode 100644 index 3abd22d..0000000 --- a/SOURCES/timesync-tier1-tags.diff +++ /dev/null @@ -1,335 +0,0 @@ -diff --git a/tests/get_services_state.yml b/tests/get_services_state.yml -new file mode 100644 -index 0000000..4fe5d36 ---- /dev/null -+++ b/tests/get_services_state.yml -@@ -0,0 +1,4 @@ -+- name: Get initial state of services -+ tags: tests::cleanup -+ service_facts: -+ register: initial_state -diff --git a/tests/restore_services_state.yml b/tests/restore_services_state.yml -new file mode 100644 -index 0000000..3d48975 ---- /dev/null -+++ b/tests/restore_services_state.yml -@@ -0,0 +1,19 @@ -+- name: Get final state of services -+ tags: tests::cleanup -+ service_facts: -+ register: final_state -+ -+- name: Restore state of services -+ tags: tests::cleanup -+ service: -+ name: "{{ item }}" -+ state: "{{ 'started' if initial_state.ansible_facts.services[item + '.service']['state'] == 'running' else 'stopped' }}" -+ when: -+ - item + '.service' in final_state.ansible_facts.services -+ - item + '.service' in initial_state.ansible_facts.services -+ with_items: -+ - chronyd -+ - ntpd -+ - ptp4l -+ - phc2sys -+ - timemaster -diff --git a/tests/tests_default.yml b/tests/tests_default.yml -index 856ebe5..fb298c9 100644 ---- a/tests/tests_default.yml -+++ b/tests/tests_default.yml -@@ -3,4 +4,14 @@ - hosts: all - - roles: - - linux-system-roles.timesync -+ -+ pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ -+ post_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_default_wrapper.yml b/tests/tests_default_wrapper.yml -index a768f4c..b0c0ab3 100644 ---- a/tests/tests_default_wrapper.yml -+++ b/tests/tests_default_wrapper.yml -@@ -1,5 +1,8 @@ - --- - - name: Create static inventory from hostvars -+ tags: -+# - 'tests::tier1' -+ - 'tests::slow' - hosts: all - tasks: - - name: create temporary file -@@ -17,9 +20,15 @@ - - - - name: Run tests_default.yml normally -+ tags: -+# - 'tests::tier1' -+ - 'tests::slow' - import_playbook: tests_default.yml - - - name: Run tests_default.yml in check_mode -+ tags: -+# - 'tests::tier1' -+ - 'tests::slow' - hosts: all - tasks: - - name: Run ansible-playbook with tests_default.yml in check mode -diff --git a/tests/tests_ntp.yml b/tests/tests_ntp.yml -index e4b1b5e..446f1dc 100644 ---- a/tests/tests_ntp.yml -+++ b/tests/tests_ntp.yml -@@ -18,6 +19,11 @@ - roles: - - linux-system-roles.timesync - -+ pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ - tasks: - - meta: flush_handlers - -@@ -35,3 +41,8 @@ - - "'172.16.123.1' in sources.stdout" - - "'172.16.123.2' in sources.stdout" - - "'172.16.123.3' in sources.stdout" -+ -+ post_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_ntp_provider1.yml b/tests/tests_ntp_provider1.yml -index 08ecab9..9fe0db3 100644 ---- a/tests/tests_ntp_provider1.yml -+++ b/tests/tests_ntp_provider1.yml -@@ -8,6 +9,10 @@ - - linux-system-roles.timesync - - pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ - - name: Remove NTP providers - package: name={{ item }} state=absent - with_items: -@@ -27,3 +32,7 @@ - assert: - that: - - "'172.16.123.1' in sources.stdout" -+ -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_ntp_provider2.yml b/tests/tests_ntp_provider2.yml -index 5476ae4..e0d5c96 100644 ---- a/tests/tests_ntp_provider2.yml -+++ b/tests/tests_ntp_provider2.yml -@@ -8,6 +9,10 @@ - - linux-system-roles.timesync - - pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ - - name: Remove ntp - package: name=ntp state=absent - -@@ -29,3 +34,7 @@ - - - name: Check chronyd service - shell: chronyc -n tracking -+ -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_ntp_provider3.yml b/tests/tests_ntp_provider3.yml -index 44ca101..d440a64 100644 ---- a/tests/tests_ntp_provider3.yml -+++ b/tests/tests_ntp_provider3.yml -@@ -8,6 +9,10 @@ - - linux-system-roles.timesync - - pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ - - name: Remove chrony - package: name=chrony state=absent - -@@ -29,3 +34,7 @@ - - - name: Check ntpd service - shell: ntpq -c rv | grep 'associd=0' -+ -+ - name: Import tasks -+ tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_ntp_provider4.yml b/tests/tests_ntp_provider4.yml -index 8b452b8..8bccba0 100644 ---- a/tests/tests_ntp_provider4.yml -+++ b/tests/tests_ntp_provider4.yml -@@ -9,6 +10,10 @@ - - linux-system-roles.timesync - - pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ - - name: Install chrony - package: name=chrony state=present - register: package_install -@@ -27,3 +32,7 @@ - - - name: Check chronyd service - shell: chronyc -n tracking -+ -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_ntp_provider5.yml b/tests/tests_ntp_provider5.yml -index 1740164..98a054f 100644 ---- a/tests/tests_ntp_provider5.yml -+++ b/tests/tests_ntp_provider5.yml -@@ -9,6 +10,10 @@ - - linux-system-roles.timesync - - pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ - - name: Install ntp - package: name=ntp state=present - register: package_install -@@ -27,3 +32,7 @@ - - - name: Check ntpd service - shell: ntpq -c rv | grep 'associd=0' -+ -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_ntp_provider6.yml b/tests/tests_ntp_provider6.yml -index 21a2039..fb41824 100644 ---- a/tests/tests_ntp_provider6.yml -+++ b/tests/tests_ntp_provider6.yml -@@ -6,6 +7,10 @@ - both_avail: true - - tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ - - name: Check for availability of both NTP providers - package: name={{ item }} state=present - register: package_install -@@ -71,3 +76,7 @@ - shell: chronyc -n tracking - when: - - not is_ntp_default -+ -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_ntp_ptp.yml b/tests/tests_ntp_ptp.yml -index cab706f..7f4cdfc 100644 ---- a/tests/tests_ntp_ptp.yml -+++ b/tests/tests_ntp_ptp.yml -@@ -22,6 +23,11 @@ - roles: - - linux-system-roles.timesync - -+ pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ - tasks: - - meta: flush_handlers - -@@ -48,3 +54,8 @@ - - "'PTP1' in sources.stdout" - - when: "'SOF_TIMESTAMPING_TX_' in ethtool.stdout" -+ -+ post_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_ptp_multi.yml b/tests/tests_ptp_multi.yml -index d52d439..936e467 100644 ---- a/tests/tests_ptp_multi.yml -+++ b/tests/tests_ptp_multi.yml -@@ -1,5 +1,6 @@ - - - name: Configure time synchronization with multiple PTP domains -+ tags: tests::expfail - hosts: all - vars: - timesync_ptp_domains: -@@ -16,6 +17,11 @@ - roles: - - linux-system-roles.timesync - -+ pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ - tasks: - - meta: flush_handlers - -@@ -58,3 +64,8 @@ - - "'domainNumber 1' in pmc.stdout" - - when: "'SOF_TIMESTAMPING_TX_' in ethtool.stdout" -+ -+ post_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml -diff --git a/tests/tests_ptp_single.yml b/tests/tests_ptp_single.yml -index 74da310..36d141e 100644 ---- a/tests/tests_ptp_single.yml -+++ b/tests/tests_ptp_single.yml -@@ -1,5 +1,6 @@ - - - name: Configure time synchronization with single PTP domain -+ tags: tests::expfail - hosts: all - vars: - timesync_ptp_domains: -@@ -8,6 +9,11 @@ - roles: - - linux-system-roles.timesync - -+ pre_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: get_services_state.yml -+ - tasks: - - meta: flush_handlers - -@@ -31,3 +37,8 @@ - - "'domainNumber 3' in pmc.stdout" - - when: "'SOF_TIMESTAMPING_TX_' in ethtool.stdout" -+ -+ post_tasks: -+ - name: Import tasks -+# tags: tests::tier1::cleanup -+ import_tasks: restore_services_state.yml diff --git a/SPECS/rhel-system-roles.spec b/SPECS/rhel-system-roles.spec index f0b2a24..e0d9256 100644 --- a/SPECS/rhel-system-roles.spec +++ b/SPECS/rhel-system-roles.spec @@ -4,15 +4,25 @@ %bcond_without ansible %endif +%bcond_with collection_artifact + +%if 0%{?fedora} || 0%{?rhel} >= 8 +%bcond_without html +%else +# pandoc is not supported in rhel 7 and older, +# which is needed for converting .md to .html. +%bcond_with html +%endif + %if 0%{?rhel} Name: rhel-system-roles %else Name: linux-system-roles %endif -Url: https://github.com/linux-system-roles/ +Url: https://github.com/linux-system-roles Summary: Set of interfaces for unified system management -Version: 1.0.0 -Release: 31%{?dist} +Version: 1.7.3 +Release: 2%{?dist} #Group: Development/Libraries License: GPLv3+ and MIT and BSD @@ -45,28 +55,26 @@ License: GPLv3+ and MIT and BSD # Not used (yet). Could be made to point to AH in RHEL - but what about CentOS Stream? #%%{!?ansible_collection_url:%%define ansible_collection_url() https://galaxy.ansible.com/%%{collection_namespace}/%%{collection_name}} +%if 0%{?fedora} || 0%{?rhel} >= 8 %{!?ansible_collection_files:%define ansible_collection_files %{_datadir}/ansible/collections/ansible_collections/%{collection_namespace}/} +%else +# Define undefined macro using "!?ansible_collection_files:..." does not work for rhel-7 +%if %{?ansible_collection_files:0}%{!?ansible_collection_files:1} +%define ansible_collection_files %{_datadir}/ansible/collections/ansible_collections/%{collection_namespace}/ +%endif +%endif + %if %{with ansible} BuildRequires: ansible >= 2.9.10 %endif -%if %{undefined ansible_collection_build} -%if %{without ansible} -# Empty command. We don't have ansible-galaxy. -%define ansible_collection_build() : -%else -%define ansible_collection_build() ansible-galaxy collection build -%endif -%endif - -%if %{undefined ansible_collection_install} %if %{without ansible} +# We don't have ansible-galaxy. # Simply copy everything instead of galaxy-installing the built artifact. -%define ansible_collection_install() mkdir -p %{buildroot}%{ansible_collection_files}; cp -a . %{buildroot}%{ansible_collection_files}/%{collection_name}/ +%define ansible_collection_build_install() tar -cf %{_tmppath}/%{collection_namespace}-%{collection_name}-%{version}.tar.gz .; mkdir -p %{buildroot}%{ansible_collection_files}%{collection_name}; (cd %{buildroot}%{ansible_collection_files}%{collection_name}; tar -xf %{_tmppath}/%{collection_namespace}-%{collection_name}-%{version}.tar.gz) %else -%define ansible_collection_install() ansible-galaxy collection install -n -p %{buildroot}%{_datadir}/ansible/collections %{collection_namespace}-%{collection_name}-%{version}.tar.gz -%endif +%define ansible_collection_build_install() ansible-galaxy collection build; ansible-galaxy collection install -n -p %{buildroot}%{_datadir}/ansible/collections %{collection_namespace}-%{collection_name}-%{version}.tar.gz %endif # For each role, call either defcommit() or deftag(). The other macros @@ -84,7 +92,7 @@ BuildRequires: ansible >= 2.9.10 %%global shortcommit%{1} %%(c=%%{ref%{1}}; echo ${c:0:7}) %%global extractdir%{1} %%{expand:%%getarchivedir %{1}} %%{!?repo%{1}:%%global repo%{1} %%{rolename%{1}}} -%%global archiveurl%{1} %%{?forgeorg%{1}}%%{!?forgeorg%{1}:%%{url}}%%{repo%{1}}/archive/%%{ref%{1}}/%%{repo%{1}}-%%{ref%{1}}.tar.gz +%%global archiveurl%{1} %%{?forgeorg%{1}}%%{!?forgeorg%{1}:%%{url}}/%%{repo%{1}}/archive/%%{ref%{1}}/%%{repo%{1}}-%%{ref%{1}}.tar.gz %%global rolenames %%{?rolenames} %%{rolename%{1}} %%global roletodir%{1} [%{rolename%{1}}]="%{extractdir%{1}}" %%global rolestodir %%{?rolestodir} %{roletodir%{1}} @@ -93,80 +101,88 @@ BuildRequires: ansible >= 2.9.10 %define deftag() %{expand:%%global ref%{1} %{2} %%global extractdir%{1} %%{expand:%%getarchivedir %{1}} %%{!?repo%{1}:%%global repo%{1} %%{rolename%{1}}} -%%global archiveurl%{1} %%{?forgeorg%{1}}%%{!?forgeorg%{1}:%%{url}}%%{repo%{1}}/archive/%%{ref%{1}}/%%{repo%{1}}-%%{ref%{1}}.tar.gz +%%global archiveurl%{1} %%{?forgeorg%{1}}%%{!?forgeorg%{1}:%%{url}}/%%{repo%{1}}/archive/%%{ref%{1}}/%%{repo%{1}}-%%{ref%{1}}.tar.gz %%global rolenames %%{?rolenames} %%{rolename%{1}} %%global roletodir%{1} [%{rolename%{1}}]="%{extractdir%{1}}" %%global rolestodir %%{?rolestodir} %%{roletodir%{1}} } -#%%defcommit 1 43eec5668425d295dce3801216c19b1916df1f9b +#%%defcommit 1 14314822b529520ac12964e0d2938c4bb18ab895 %global rolename1 postfix -%deftag 1 0.1 +%deftag 1 1.1.0 -#%%defcommit 2 6cd1ec8fdebdb92a789b14e5a44fe77f0a3d8ecd +#%%defcommit 2 9fe6eb36772e83b53dcfb8ceb73608fd4f72eeda %global rolename2 selinux -%deftag 2 1.1.1 +%deftag 2 1.3.0 -%defcommit 3 924650d0cd4117f73a7f0413ab745a8632bc5cec +#%%defcommit 3 8db8f9ed9088432bac7abf68f1b284475a3baa38 %global rolename3 timesync -#%%deftag 3 1.0.0 +%deftag 3 1.6.0 -%defcommit 4 77596fdd976c6160d6152c200a5432c609725a14 +#%%defcommit 4 02fc72b482e165472624b2f68eecd2ddce1d93b1 %global rolename4 kdump -#%%deftag 4 1.0.0 +%deftag 4 1.1.0 -%defcommit 5 bda206d45c87ee8c1a5284de84f5acf5e629de97 +#%%defcommit 5 b08a0b3748ee87aa3bdbcf1f0b7e41ef4971bbee %global rolename5 network -#%%deftag 5 1.0.0 +%deftag 5 1.4.0 -%defcommit 6 485de47b0dc0787aea077ba448ecb954f53e40c4 +#%%defcommit 6 b3b456183edb7b8aa6ceff7ce667d8e22009ef6a %global rolename6 storage -#%%deftag 6 1.2.2 +%deftag 6 1.6.1 -%defcommit 7 e81b2650108727f38b1c856699aad26af0f44a46 +#%%defcommit 7 0673d842fb32c437501e2aada2e38921da98e115 %global rolename7 metrics -#%%deftag 7 0.1.0 +%deftag 7 1.3.1 -#%%defcommit 8 cfa70b6b5910b3198aba2679f8fc36aad45ca45a +#%%defcommit 8 2b9e53233ee3a68bdb532e62f289733e436a6106 %global rolename8 tlog -%deftag 8 1.1.0 +%deftag 8 1.2.0 -%defcommit 9 e5e5abb35fb695e22ccffa855c98ab882650480e +#%%defcommit 9 9373303b98e09ef38df7afc8d06e5e55812096c7 %global rolename9 kernel_settings -#%%deftag 9 1.0.1 +%deftag 9 1.1.0 -%defcommit 10 4b07edf4e84882c9d0fb979092ba5953aac0b4d5 +#%%defcommit 10 20dd3e5520ca06dcccaa9b3f1fb428d055e0c23f %global rolename10 logging -#%%deftag 10 0.2.0 +%deftag 10 1.5.1 -#%%defcommit 11 4b6cfca4dd24e53a4bc4e07635601d7c104346c1 +#%%defcommit 11 c57d0b1f3384c525738fa26ba4bdca485e162567 %global rolename11 nbde_server -%deftag 11 1.0.1 +%deftag 11 1.1.0 -%defcommit 12 3af7452e4861ee2363b29b23bf78bf11e06be142 +#%%defcommit 12 bef2fad5e365712d1f40e53662490ba2550a253f %global rolename12 nbde_client -#%%deftag 12 1.0.1 +%deftag 12 1.1.0 -%defcommit 13 50041ce55348fcce34aba4cbe3ea160c5d890ab3 +#%%defcommit 13 310fc53db04e8d3134524afb7a89b0477a2ffb83 %global rolename13 certificate -#%%deftag 13 1.0.1 +%deftag 13 1.1.0 -%defcommit 14 76b2d5b0460dba22c5d290c1af96e4fdb3434cb9 +#%%defcommit 14 b2a9857ac661fa32e66666e444b73bfdb34cdf95 %global rolename14 crypto_policies +%deftag 14 1.2.0 -%global forgeorg15 https://github.com/willshersystems/ +%global forgeorg15 https://github.com/willshersystems %global repo15 ansible-sshd %global rolename15 sshd -%defcommit 15 e1de59b3c54e9d48a010eeca73755df339c7e628 +%defcommit 15 1c5c48835e01adc176febf945e1fd36b7d9af7fd +#%%deftag 15 v0.13.1 -%defcommit 16 effa0a0d993832dee726290f263a2182cf3eacda +#%%defcommit 16 59b9fd7b25607d8bd33bdb082748955f2652846a %global rolename16 ssh +%deftag 16 1.1.0 -%defcommit 17 779bb78559de58bb5a1f25a4b92039c373ef59a4 +#%%defcommit 17 f901239cb91878719c9e7461760ef8d4789d626d %global rolename17 ha_cluster +%deftag 17 1.3.0 + +#%%defcommit 18 5f6cb73e6753fbdbb219b7d3079f0378b2d3bdb3 +%global rolename18 vpn +%deftag 18 1.2.0 -%global mainid e5ed203b2d7224c0bf0c3fd55452456c8f468cad -Source: %{url}auto-maintenance/archive/%{mainid}/auto-maintenance-%{mainid}.tar.gz +%global mainid 2dd50c8a16af647e4c7a768c481335e97735958a +Source: %{url}/auto-maintenance/archive/%{mainid}/auto-maintenance-%{mainid}.tar.gz Source1: %{archiveurl1} Source2: %{archiveurl2} Source3: %{archiveurl3} @@ -184,50 +200,41 @@ Source14: %{archiveurl14} Source15: %{archiveurl15} Source16: %{archiveurl16} Source17: %{archiveurl17} +Source18: %{archiveurl18} # Script to convert the collection README to Automation Hub. # Not used on Fedora. Source998: collection_readme.sh -Patch11: rhel-system-roles-postfix-pr5.diff -Patch12: postfix-meta-el8.diff - -Patch21: selinux-tier1-tags.diff -Patch22: selinux-bz-1926947-no-variable-named-present.diff - -Patch31: timesync-tier1-tags.diff - -Patch41: rhel-system-roles-kdump-pr22.diff -Patch42: kdump-tier1-tags.diff -Patch43: kdump-meta-el8.diff -Patch44: kdump-fix-newline.diff - -Patch51: network-epel-minimal.diff -# Not suitable for upstream, since the files need to be executable there -Patch52: network-permissions.diff -Patch53: network-tier1-tags.diff -Patch55: network-disable-bondtests.diff - -Patch62: storage-partition-name.diff -Patch63: storage-no-disks-existing.diff -Patch64: storage-trim-volume-size.diff - -Patch71: metrics-mssql-x86.diff - -Patch151: sshd-example.diff -Patch152: sshd-work-on-ansible28-jinja27.diff +Patch51: network-tier1-tags.diff +Patch52: network-disable-bondtests.diff BuildArch: noarch -# These are needed for md2html.sh to build the documentation -BuildRequires: asciidoc +%if %{with html} +# Requirements for md2html.sh to build the documentation +%if 0%{?fedora} || 0%{?rhel} >= 9 +BuildRequires: rubygem-kramdown-parser-gfm +%else BuildRequires: pandoc +BuildRequires: asciidoc BuildRequires: highlight +%endif +%endif + +# Requirements for galaxy_transform.py BuildRequires: python3 -BuildRequires: python3-six +%if 0%{?fedora} || 0%{?rhel} >= 8 BuildRequires: python3dist(ruamel.yaml) Requires: python3-jmespath +Requires: python3-netaddr +%else +BuildRequires: python3-ruamel-yaml + +Requires: python-jmespath +Requires: python-netaddr +%endif Obsoletes: rhel-system-roles-techpreview < 1.0-3 @@ -251,49 +258,47 @@ consistent configuration interface for managing multiple versions of Fedora, Red Hat Enterprise Linux & CentOS. %endif +%if %{with collection_artifact} +%package collection-artifact +Summary: Collection artifact to import to Automation Hub / Ansible Galaxy + +%description collection-artifact +Collection artifact for %{name}. This package contains %{collection_namespace}-%{collection_name}-%{version}.tar.gz +%endif + %prep -%setup -q -a1 -a2 -a3 -a4 -a5 -a6 -a7 -a8 -a9 -a10 -a11 -a12 -a13 -a14 -a15 -a16 -a17 -n %{getarchivedir 0} +%setup -q -a1 -a2 -a3 -a4 -a5 -a6 -a7 -a8 -a9 -a10 -a11 -a12 -a13 -a14 -a15 -a16 -a17 -a18 -n %{getarchivedir 0} declare -A ROLESTODIR=(%{rolestodir}) for rolename in %{rolenames}; do - mv "${ROLESTODIR[${rolename}]}" ${rolename} + dir_from_archive="${ROLESTODIR[${rolename}]}" + if [ ! -d "$dir_from_archive" ]; then + # ansible-sshd uses tags like vX.Y.Z + # using the github archive/ link with a tag like this strips + # the leading v from the tag used to construct the directory + # name in the archive + if [[ "$dir_from_archive" =~ %{repo15}-v([0-9]+[.][0-9]+.*) ]]; then + dir_from_archive="%{repo15}-${BASH_REMATCH[1]}" + fi + fi + mv "$dir_from_archive" ${rolename} done -cd %{rolename1} -%patch11 -p1 -%patch12 -p1 -cd .. -cd %{rolename2} -%patch21 -p1 -%patch22 -p1 -cd .. -cd %{rolename3} -%patch31 -p1 -cd .. -cd %{rolename4} -%patch41 -p1 -%patch42 -p1 -%patch43 -p1 -%patch44 -p1 -cd .. +cd %{rolename2}/tests +# this test causes avcs we want to ignore +sed -r -i -e '/hosts: all/a\ + tags:\ + - tests::avc' tests_selinux_disabled.yml +cd ../.. + cd %{rolename5} %patch51 -p1 %patch52 -p1 -%patch53 -p1 -%patch55 -p1 -cd .. -cd %{rolename6} -%patch62 -p1 -%patch63 -p1 -%patch64 -p1 -cd .. -cd %{rolename7} -%patch71 -p1 cd .. cd %{rolename15} -%patch151 -p1 -%patch152 -p1 -sed -r -i -e "s/ansible-sshd/linux-system-roles.sshd/" tests/*.yml examples/*.yml README.md +sed -r -i -e "s/ansible-sshd/linux-system-roles.sshd/" tests/*.yml examples/*.yml +sed -r -i -e "s/ willshersystems.sshd/ linux-system-roles.sshd/" tests/*.yml examples/*.yml README.md +sed -r -i -e "s/min_ansible_version: 2.8/min_ansible_version: 2.9/" meta/main.yml cd .. # Replacing "linux-system-roles.rolename" with "rhel-system-roles.rolename" in each role @@ -316,202 +321,139 @@ done rm %{rolename5}/tests/modules rm %{rolename5}/tests/module_utils rm %{rolename5}/tests/playbooks/roles +# Drop network/{scripts/print_all_options.py,tests/ensure_provider_tests.py} +# from rpm. These 2 files fail in brp-python-bytecompile due to f-strings +# when python2 is default python. +rm %{rolename5}/scripts/print_all_options.py +rm %{rolename5}/tests/ensure_provider_tests.py +# Drop storage tests/scripts +rm -rf %{rolename6}/tests/scripts # transform ambiguous #!/usr/bin/env python shebangs to python3 to stop brp-mangle-shebangs complaining find -type f -executable -name '*.py' -exec \ sed -i -r -e '1s@^(#! */usr/bin/env python)(\s|$)@#\13\2@' '{}' + %build -sh md2html.sh \ -%{rolename1}/README.md \ -%{rolename2}/README.md \ -%{rolename3}/README.md \ -%{rolename4}/README.md \ -%{rolename5}/README.md \ -%{rolename6}/README.md \ -%{rolename7}/README.md \ -%{rolename8}/README.md \ -%{rolename9}/README.md \ -%{rolename10}/README.md \ -%{rolename11}/README.md \ -%{rolename12}/README.md \ -%{rolename13}/README.md \ -%{rolename14}/README.md \ -%{rolename15}/README.md \ -%{rolename16}/README.md \ -%{rolename17}/README.md +%if %{with html} +readmes="" +for role in %{rolenames}; do + readmes="${readmes} $role/README.md" +done +sh md2html.sh $readmes +%endif mkdir .collections %if 0%{?rhel} # Convert the upstream collection readme to the downstream one %{SOURCE998} lsr_role2collection/collection_readme.md %endif -./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" > galaxy.yml.tmp +./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" "Red Hat Enterprise Linux System Roles Ansible Collection" > galaxy.yml.tmp mv galaxy.yml.tmp galaxy.yml -for role in %{rolename1} %{rolename2} %{rolename3} \ - %{rolename4} %{rolename5} %{rolename6} \ - %{rolename7} %{rolename8} %{rolename9} \ - %{rolename10} %{rolename11} %{rolename12} \ - %{rolename13} %{rolename14} %{rolename15} \ - %{rolename16} %{rolename17}; do +for role in %{rolenames}; do python3 lsr_role2collection.py --role "$role" --src-path "$role" \ --src-owner %{name} --subrole-prefix %{subrole_prefix} --dest-path .collections \ --readme lsr_role2collection/collection_readme.md \ --namespace %{collection_namespace} --collection %{collection_name} done +# copy requirements.txt and bindep.txt from auto-maintenance/lsr_role2collection +if [ -f lsr_role2collection/collection_requirements.txt ]; then + cp lsr_role2collection/collection_requirements.txt \ + .collections/ansible_collections/%{collection_namespace}/%{collection_name}/requirements.txt +fi +if [ -f lsr_role2collection/collection_bindep.txt ]; then + cp lsr_role2collection/collection_bindep.txt \ + .collections/ansible_collections/%{collection_namespace}/%{collection_name}/bindep.txt +fi + +rm -f .collections/ansible_collections/%{collection_namespace}/%{collection_name}/tests/sanity/ignore-2.9.txt +# Merge .sanity-ansible-ignore-2.9-ROLENAME.txt into tests/sanity/ignore-2.9.txt +mkdir -p .collections/ansible_collections/%{collection_namespace}/%{collection_name}/tests/sanity +for role in %{rolenames}; do + if [ -f .collections/ansible_collections/%{collection_namespace}/%{collection_name}/.sanity-ansible-ignore-2.9-"$role".txt ]; + then + cat .collections/ansible_collections/%{collection_namespace}/%{collection_name}/.sanity-ansible-ignore-2.9-"$role".txt \ + >> .collections/ansible_collections/%{collection_namespace}/%{collection_name}/tests/sanity/ignore-2.9.txt + rm -f .collections/ansible_collections/%{collection_namespace}/%{collection_name}/.sanity-ansible-ignore-*-"$role".txt + fi +done + +# removing dot files/dirs +rm -r .collections/ansible_collections/%{collection_namespace}/%{collection_name}/.[A-Za-z]* + cp -p galaxy.yml lsr_role2collection/.ansible-lint \ .collections/ansible_collections/%{collection_namespace}/%{collection_name} -mkdir -p .collections/ansible_collections/%{collection_namespace}/%{collection_name}/tests/sanity -cp -p lsr_role2collection/ignore-2.9.txt \ - .collections/ansible_collections/%{collection_namespace}/%{collection_name}/tests/sanity -cd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ -%ansible_collection_build +# Remove table of contents from logging README.md +# It is not needed for html and AH/Galaxy +sed -i -e 's/^\(## Table of Contents\)/## Background\n\1/' \ + .collections/ansible_collections/%{collection_namespace}/%{collection_name}/roles/logging/README.md +sed -i -e '/^## Table of Contents/,/^## Background/d' \ + .collections/ansible_collections/%{collection_namespace}/%{collection_name}/roles/logging/README.md + +# Remove internal links from readme files +# They are not rendered properly on AH. +for role in %{rolenames}; do + sed -r -i -e 's/\[([^[]+)\]\(#[^)]+\)/\1/g' \ + .collections/ansible_collections/%{collection_namespace}/%{collection_name}/roles/$role/README.md +done %install mkdir -p $RPM_BUILD_ROOT%{installbase} mkdir -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles -cp -pR %{rolename1} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename1} -cp -pR %{rolename2} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename2} -cp -pR %{rolename3} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename3} -cp -pR %{rolename4} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename4} -cp -pR %{rolename5} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename5} -cp -pR %{rolename6} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename6} -cp -pR %{rolename7} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename7} -cp -pR %{rolename8} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename8} -cp -pR %{rolename9} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename9} -cp -pR %{rolename10} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename10} -cp -pR %{rolename11} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename11} -cp -pR %{rolename12} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename12} -cp -pR %{rolename13} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename13} -cp -pR %{rolename14} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename14} -cp -pR %{rolename15} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename15} -cp -pR %{rolename16} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename16} -cp -pR %{rolename17} $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}%{rolename17} +for role in %{rolenames}; do + cp -pR "$role" "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role" +done %if 0%{?rolealtprefix:1} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename1} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename1} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename2} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename2} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename3} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename3} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename4} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename4} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename5} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename5} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename6} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename6} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename7} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename7} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename8} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename8} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename9} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename9} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename10} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename10} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename11} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename11} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename12} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename12} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename13} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename13} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename14} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename14} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename15} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename15} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename16} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename16} -ln -s %{rolealtrelpath}%{roleinstprefix}%{rolename17} $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}%{rolename17} +for role in %{rolenames}; do + ln -s "%{rolealtrelpath}%{roleinstprefix}$role" "$RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{rolealtprefix}$role" +done %endif -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/kdump -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/postfix -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/selinux -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/timesync -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/network -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/storage -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/metrics -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/tlog -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/kernel_settings -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/logging -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/nbde_server -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/nbde_client -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/certificate -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/crypto_policies -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/sshd -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/ssh -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/ha_cluster mkdir -p $RPM_BUILD_ROOT%{_pkglicensedir} - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}kdump/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}kdump/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/kdump -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}kdump/COPYING \ - $RPM_BUILD_ROOT%{_pkglicensedir}/kdump.COPYING - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}postfix/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}postfix/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/postfix -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}postfix/COPYING \ - $RPM_BUILD_ROOT%{_pkglicensedir}/postfix.COPYING - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}selinux/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}selinux/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/selinux -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}selinux/COPYING \ - $RPM_BUILD_ROOT%{_pkglicensedir}/selinux.COPYING -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}selinux/selinux-playbook.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/selinux/example-selinux-playbook.yml - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}timesync/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}timesync/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/timesync -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}timesync/COPYING \ - $RPM_BUILD_ROOT%{_pkglicensedir}/timesync.COPYING -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}timesync/examples/multiple-ntp-servers.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/timesync/example-timesync-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}timesync/examples/single-pool.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/timesync/example-timesync-pool-playbook.yml - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/network.LICENSE -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/bond_with_vlan.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-bond_with_vlan-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/bridge_with_vlan.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-bridge_with_vlan-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/eth_simple_auto.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-eth_simple_auto-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/eth_with_vlan.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-eth_with_vlan-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/infiniband.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-infiniband-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/macvlan.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-macvlan-playbook.yml -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/remove_profile.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-remove_profile-playbook.yml -rm $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/remove_profile.yml -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/down_profile.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-down_profile-playbook.yml -rm $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/down_profile.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/inventory \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-inventory -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/ethtool_features.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-ethtool_features-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/ethtool_features_default.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-ethtool_features_default-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/bond_simple.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-bond_simple-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/eth_with_802_1x.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-eth_with_802_1x-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/wireless_wpa_psk.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-wireless_wpa_psk-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/remove+down_profile.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-remove+down_profile-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/dummy_simple.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-dummy_simple-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/ethtool_coalesce.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-ethtool_coalesce-playbook.yml -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/team_simple.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-team_simple-playbook.yml -mv $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{roleprefix}network/examples/eth_dns_support.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/network/example-eth_dns_support-playbook.yml - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}storage/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}storage/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/storage -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}storage/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/storage.LICENSE +rm $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/roles +for role in %{rolenames}; do + mkdir -p "$RPM_BUILD_ROOT%{_pkgdocdir}/$role" + cp -p "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/README.md" \ + "$RPM_BUILD_ROOT%{_pkgdocdir}/$role" +%if %{with html} + cp -p "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/README.html" \ + "$RPM_BUILD_ROOT%{_pkgdocdir}/$role" +%endif + if [ -f "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/COPYING" ]; then + cp -p "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/COPYING" \ + "$RPM_BUILD_ROOT%{_pkglicensedir}/$role.COPYING" + fi + if [ -f "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/LICENSE" ]; then + cp -p "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/LICENSE" \ + "$RPM_BUILD_ROOT%{_pkglicensedir}/$role.LICENSE" + fi + if [ -d "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/examples" ]; then + for file in "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/examples/"*.yml ; do + basename=$(basename "$file" .yml) + newname="$basename" + if [[ "$newname" != example-* ]]; then + newname="example-$newname" + fi + if [[ "$newname" != *-playbook ]]; then + newname="${newname}-playbook" + fi + cp "$file" "$RPM_BUILD_ROOT%{_pkgdocdir}/$role/${newname}.yml" + rm "$file" + done + if [ -f "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/examples/inventory" ]; then + cp "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/examples/inventory" \ + "$RPM_BUILD_ROOT%{_pkgdocdir}/$role/example-inventory" + rm "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/examples/inventory" + fi + # special case for network + # this will error if the directory is unexpectedly empty + rmdir "$RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}$role/examples" + fi +done rm $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}*/semaphore rm -r $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}*/molecule @@ -519,197 +461,452 @@ rm -r $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}*/molecule rm -r $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}*/.[A-Za-z]* rm $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}*/tests/.git* -rm $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples/roles -rmdir $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}network/examples - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}metrics/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}metrics/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/metrics -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}metrics/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/metrics.LICENSE - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}tlog/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}tlog/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/tlog -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}tlog/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/tlog.LICENSE - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}kernel_settings/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}kernel_settings/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/kernel_settings -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}kernel_settings/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/kernel_settings.LICENSE -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}kernel_settings/COPYING \ - $RPM_BUILD_ROOT%{_pkglicensedir}/kernel_settings.COPYING - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}logging/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}logging/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/logging -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}logging/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/logging.LICENSE -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}logging/COPYING \ - $RPM_BUILD_ROOT%{_pkglicensedir}/logging.COPYING - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}nbde_server/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}nbde_server/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/nbde_server -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}nbde_server/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/nbde_server.LICENSE - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}nbde_client/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}nbde_client/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/nbde_client -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}nbde_client/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/nbde_client.LICENSE - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}certificate/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}certificate/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/certificate -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}certificate/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/certificate.LICENSE - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}crypto_policies/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}crypto_policies/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/crypto_policies -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}crypto_policies/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/crypto_policies.LICENSE - -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}sshd/README.md \ - $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}sshd/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/sshd -cp -p $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}sshd/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/sshd.LICENSE +# NOTE: sshd/examples/example-root-login.yml is # referenced in the configuring-openssh-servers-using-the-sshd-system-role documentation module # must be updated if changing the file path -mv $RPM_BUILD_ROOT%{installbase}/%{roleinstprefix}sshd/examples/example-root-login.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/sshd/example-root-login-playbook.yml -rmdir $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{roleprefix}sshd/examples - -cp -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{roleprefix}ssh/README.md \ - $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{roleprefix}ssh/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/ssh -cp -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{roleprefix}ssh/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/ssh.LICENSE - -cp -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{roleprefix}ha_cluster/README.md \ - $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{roleprefix}ha_cluster/README.html \ - $RPM_BUILD_ROOT%{_pkgdocdir}/ha_cluster -cp -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{roleprefix}ha_cluster/LICENSE \ - $RPM_BUILD_ROOT%{_pkglicensedir}/ha_cluster.LICENSE -mv $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{roleprefix}ha_cluster/examples/simple.yml \ - $RPM_BUILD_ROOT%{_pkgdocdir}/ha_cluster/example-simple-playbook.yml -rmdir $RPM_BUILD_ROOT%{_datadir}/ansible/roles/%{roleprefix}ha_cluster/examples - -cd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ -%ansible_collection_install - - -%files + +pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ +%ansible_collection_build_install +popd + +mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection +mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles + +cp -p %{buildroot}%{ansible_collection_files}%{collection_name}/README.md \ + $RPM_BUILD_ROOT%{_pkgdocdir}/collection + +for rolename in %{rolenames}; do + if [ -f %{buildroot}%{ansible_collection_files}%{collection_name}/roles/${rolename}/README.md ]; then + mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles/${rolename} + cp -p %{buildroot}%{ansible_collection_files}%{collection_name}/roles/${rolename}/README.md \ + $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles/${rolename} + fi +done + +%if %{with html} +# converting README.md to README.html for collection in $RPM_BUILD_ROOT%{_pkgdocdir}/collection +readmes="$RPM_BUILD_ROOT%{_pkgdocdir}/collection/README.md" +for role in %{rolenames}; do + readmes="${readmes} $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles/${role}/README.md" +done +sh md2html.sh $readmes +%endif + +%if %{with collection_artifact} +# Copy collection artifact to /usr/share/ansible/collections/ for collection-artifact +pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ +if [ -f %{collection_namespace}-%{collection_name}-%{version}.tar.gz ]; then + mv %{collection_namespace}-%{collection_name}-%{version}.tar.gz \ + $RPM_BUILD_ROOT%{_datadir}/ansible/collections/ +fi +popd +%endif + +# generate the %files section in the file files_section.txt +format_item_for_files() { + # $1 is directory or file name in buildroot + # $2 - if true, and item is a directory, use %dir + local item + local files_item + item="$1" + files_item=${item##"%{buildroot}"} + if [ -L "$item" ]; then + echo "$files_item" + elif [ -d "$item" ]; then + if [[ "$item" == */doc* ]]; then + echo "%doc $files_item" + elif [ "${2:-false}" = true ]; then + echo "%dir $files_item" + else + echo "$files_item" + fi + elif [[ "$item" == */README.md ]] || [[ "$item" == */README.html ]]; then + if [[ "$item" == */private_* ]]; then + # mark as regular file, not %doc + echo "$files_item" + else + echo "%doc $files_item" + fi + elif [[ "$item" != */COPYING* ]] && [[ "$item" != */LICENSE* ]]; then + # Avoid dynamically using the license macro since the license macro + # is replaced with the value of License directive in the older rpmbuild. + echo "$files_item" + fi +} + +files_section=files_section.txt +rm -f $files_section +touch $files_section %if %{without ansible} -%dir %{_datadir}/ansible -%dir %{_datadir}/ansible/roles +echo '%dir %{_datadir}/ansible' >> $files_section +echo '%dir %{_datadir}/ansible/roles' >> $files_section %endif %if "%{installbase}" != "%{_datadir}/ansible/roles" -%dir %{installbase} +echo '%dir %{installbase}' >> $files_section %endif -%if 0%{?rolealtprefix:1} -%{_datadir}/ansible/roles/%{rolealtprefix}kdump -%{_datadir}/ansible/roles/%{rolealtprefix}postfix -%{_datadir}/ansible/roles/%{rolealtprefix}selinux -%{_datadir}/ansible/roles/%{rolealtprefix}timesync -%{_datadir}/ansible/roles/%{rolealtprefix}network -%{_datadir}/ansible/roles/%{rolealtprefix}storage -%{_datadir}/ansible/roles/%{rolealtprefix}metrics -%{_datadir}/ansible/roles/%{rolealtprefix}tlog -%{_datadir}/ansible/roles/%{rolealtprefix}kernel_settings -%{_datadir}/ansible/roles/%{rolealtprefix}logging -%{_datadir}/ansible/roles/%{rolealtprefix}nbde_server -%{_datadir}/ansible/roles/%{rolealtprefix}nbde_client -%{_datadir}/ansible/roles/%{rolealtprefix}certificate -%{_datadir}/ansible/roles/%{rolealtprefix}crypto_policies -%{_datadir}/ansible/roles/%{rolealtprefix}sshd -%{_datadir}/ansible/roles/%{rolealtprefix}ssh -%{_datadir}/ansible/roles/%{rolealtprefix}ha_cluster -%endif -%{installbase}/%{roleinstprefix}kdump -%{installbase}/%{roleinstprefix}postfix -%{installbase}/%{roleinstprefix}selinux -%{installbase}/%{roleinstprefix}timesync -%{installbase}/%{roleinstprefix}network -%{installbase}/%{roleinstprefix}storage -%{installbase}/%{roleinstprefix}metrics -%{installbase}/%{roleinstprefix}tlog -%{installbase}/%{roleinstprefix}kernel_settings -%{installbase}/%{roleinstprefix}logging -%{installbase}/%{roleinstprefix}nbde_server -%{installbase}/%{roleinstprefix}nbde_client -%{installbase}/%{roleinstprefix}certificate -%{installbase}/%{roleinstprefix}crypto_policies -%{installbase}/%{roleinstprefix}sshd -%{installbase}/%{roleinstprefix}ssh -%{installbase}/%{roleinstprefix}ha_cluster -%{_pkgdocdir}/*/example-*-playbook.yml -%{_pkgdocdir}/network/example-inventory +echo '%dir %{ansible_collection_files}' >> $files_section +echo '%dir %{ansible_collection_files}%{collection_name}' >> $files_section +find %{buildroot}%{ansible_collection_files}%{collection_name} -mindepth 1 -maxdepth 1 | \ + while read item; do + if [[ "$item" == */roles ]]; then + format_item_for_files "$item" true >> $files_section + find "$item" -mindepth 1 -maxdepth 1 | while read roles_dir; do + format_item_for_files "$roles_dir" true >> $files_section + find "$roles_dir" -mindepth 1 -maxdepth 1 | while read roles_item; do + format_item_for_files "$roles_item" >> $files_section + done + done + else + format_item_for_files "$item" >> $files_section + fi + done + +find %{buildroot}%{installbase} -mindepth 1 -maxdepth 1 | \ + while read item; do + if [ -d "$item" ]; then + format_item_for_files "$item" true >> $files_section + find "$item" -mindepth 1 -maxdepth 1 | while read roles_item; do + format_item_for_files "$roles_item" >> $files_section + done + else + format_item_for_files "$item" >> $files_section + fi + done +if [ "%{installbase}" != "%{_datadir}/ansible/roles" ]; then + find %{buildroot}%{_datadir}/ansible/roles -mindepth 1 -maxdepth 1 | \ + while read item; do + if [ -d "$item" ]; then + format_item_for_files "$item" true >> $files_section + find "$item" -mindepth 1 -maxdepth 1 | while read roles_item; do + format_item_for_files "$roles_item" >> $files_section + done + else + format_item_for_files "$item" >> $files_section + fi + done +fi +# cat files_section.txt +# done with files_section.txt generation + + +%files -f files_section.txt %{_pkgdocdir}/*/README.md +%if %{with html} %{_pkgdocdir}/*/README.html -%doc %{installbase}/%{roleinstprefix}kdump/README.md -%doc %{installbase}/%{roleinstprefix}postfix/README.md -%doc %{installbase}/%{roleinstprefix}selinux/README.md -%doc %{installbase}/%{roleinstprefix}timesync/README.md -%doc %{installbase}/%{roleinstprefix}network/README.md -%doc %{installbase}/%{roleinstprefix}storage/README.md -%doc %{installbase}/%{roleinstprefix}metrics/README.md -%doc %{installbase}/%{roleinstprefix}tlog/README.md -%doc %{installbase}/%{roleinstprefix}kernel_settings/README.md -%doc %{installbase}/%{roleinstprefix}logging/README.md -%doc %{installbase}/%{roleinstprefix}nbde_server/README.md -%doc %{installbase}/%{roleinstprefix}nbde_client/README.md -%doc %{installbase}/%{roleinstprefix}certificate/README.md -%doc %{installbase}/%{roleinstprefix}crypto_policies/README.md -%doc %{installbase}/%{roleinstprefix}sshd/README.md -%doc %{installbase}/%{roleinstprefix}ssh/README.md -%doc %{installbase}/%{roleinstprefix}kdump/README.html -%doc %{installbase}/%{roleinstprefix}postfix/README.html -%doc %{installbase}/%{roleinstprefix}selinux/README.html -%doc %{installbase}/%{roleinstprefix}timesync/README.html -%doc %{installbase}/%{roleinstprefix}network/README.html -%doc %{installbase}/%{roleinstprefix}storage/README.html -%doc %{installbase}/%{roleinstprefix}metrics/README.html -%doc %{installbase}/%{roleinstprefix}tlog/README.html -%doc %{installbase}/%{roleinstprefix}kernel_settings/README.html -%doc %{installbase}/%{roleinstprefix}logging/README.html -%doc %{installbase}/%{roleinstprefix}nbde_server/README.html -%doc %{installbase}/%{roleinstprefix}nbde_client/README.html -%doc %{installbase}/%{roleinstprefix}certificate/README.html -%doc %{installbase}/%{roleinstprefix}crypto_policies/README.html -%doc %{installbase}/%{roleinstprefix}sshd/README.html -%doc %{installbase}/%{roleinstprefix}ssh/README.html -%doc %{installbase}/%{roleinstprefix}ha_cluster/README.html - +%endif +%{_pkgdocdir}/*/example-* +%{_pkgdocdir}/collection/roles/*/README.md +%if %{with html} +%{_pkgdocdir}/collection/roles/*/README.html +%endif %license %{_pkglicensedir}/* -%license %{installbase}/%{roleinstprefix}kdump/COPYING -%license %{installbase}/%{roleinstprefix}postfix/COPYING -%license %{installbase}/%{roleinstprefix}selinux/COPYING -%license %{installbase}/%{roleinstprefix}timesync/COPYING -%license %{installbase}/%{roleinstprefix}network/LICENSE -%license %{installbase}/%{roleinstprefix}storage/LICENSE -%license %{installbase}/%{roleinstprefix}metrics/LICENSE -%license %{installbase}/%{roleinstprefix}tlog/LICENSE -%license %{installbase}/%{roleinstprefix}kernel_settings/LICENSE -%license %{installbase}/%{roleinstprefix}kernel_settings/COPYING -%license %{installbase}/%{roleinstprefix}logging/LICENSE -%license %{installbase}/%{roleinstprefix}logging/COPYING -%license %{installbase}/%{roleinstprefix}nbde_server/LICENSE -%license %{installbase}/%{roleinstprefix}nbde_client/LICENSE -%license %{installbase}/%{roleinstprefix}certificate/LICENSE -%license %{installbase}/%{roleinstprefix}crypto_policies/LICENSE -%license %{installbase}/%{roleinstprefix}sshd/LICENSE -%license %{installbase}/%{roleinstprefix}ssh/LICENSE -%license %{installbase}/%{roleinstprefix}ha_cluster/LICENSE - -%{ansible_collection_files} +%license %{installbase}/*/COPYING* +%license %{installbase}/*/LICENSE* +%license %{ansible_collection_files}/%{collection_name}/COPYING* +%license %{ansible_collection_files}/%{collection_name}/LICENSE* +%if 0%{?rhel} < 8 +# Needs to list excluded files in this hardcoded style since when +# format_item_for_files is executed, brp-python-bytecompile is not +# executed yet. +%exclude %{installbase}/*/*.py? +%exclude %{installbase}/*/*/*.py? +%exclude %{installbase}/*/*/*/*.py? +%exclude %{installbase}/*/*/*/*/*.py? +%exclude %{ansible_collection_files}/%{collection_name}/*/*/*.py? +%exclude %{ansible_collection_files}/%{collection_name}/*/*/*/*.py? +%exclude %{ansible_collection_files}/%{collection_name}/*/*/*/*/*.py? +%endif + +%if %{with collection_artifact} +%files collection-artifact +%{_datadir}/ansible/collections/%{collection_namespace}-%{collection_name}-%{version}.tar.gz +%endif %changelog +* Thu Aug 26 2021 Rich Megginson - 1.7.3-2 +- selinux - tag tests_selinux_disabled.yml with tests::avc + Resolves rhbz#1996315 (EL9) + Resolves rhbz#1996317 (EL8) + +* Thu Aug 26 2021 Rich Megginson - 1.7.3-1 +- storage - revert the dm-vdo workaround fix for vdo testing + Resolves rhbz#1978488 (EL9) + Resolves rhbz#1991141 (EL8) + +* Tue Aug 24 2021 Rich Megginson - 1.7.2-1 +- logging - Update the certificates copy tasks + Resolves rhbz#1996777 (EL9) + Resolves rhbz#1994580 (EL8) + +* Mon Aug 16 2021 Rich Megginson - 1.7.1-1 +- metrics - the bpftrace role does not properly configure bpftrace agent + Resolves rhbz#1994180 (EL9) + Resolves rhbz#1993240 (EL8) + +* Thu Aug 12 2021 Rich Megginson - 1.7.0-1 +- drop support for Ansible 2.8 - min_ansible_version is now 2.9 + Resolves rhbz#1989197 (EL9) + Resolves rhbz#1989199 (EL8) +- sshd - fix rhel6 support - failed to validate: error:Missing Match criteria for all Bad Match condition + Resolves rhbz#1991598 (EL9) + Resolves rhbz#1990947 (EL8) + +* Fri Aug 06 2021 Rich Megginson - 1.6.7-1 +- storage - tests_create_lvmvdo_then_remove fails - Module dm-vdo not found + Resolves rhbz#1991141 (EL8) + Resolves rhbz#1991062 (EL9) +- storage - Get syntax errors in tests_lvm_errors.yml + Resolves rhbz#1990793 (EL8) + Resolves rhbz#1991142 (EL9) + +* Fri Aug 06 2021 Rich Megginson - 1.6.6-1 +- logging, certificate - Instead of the archive module, use "tar" command for backup. + Resolves rhbz#1984182 (EL9) + Resolves rhbz#1987096 (EL8) +- logging - Add a support for list value to server_host in the elasticsearch output + Resolves rhbz#1986460 (EL9) + Resolves rhbz#1986463 (EL8) +- logging - tests_relp.yml; Can't detect any of the required Python libraries cryptography (>= 1.2.3) or PyOpenSSL (>= 0.6) + Resolves rhbz#1989962 (EL9) + Resolves rhbz#1990142 (EL8) + +* Fri Aug 06 2021 Rich Megginson - 1.6.5-1 +- kernel_settings - Disable bootloader testing on EL9 + Resolves rhbz#1991017 + +* Tue Aug 03 2021 Rich Megginson - 1.6.4-1 +- sshd - support for rhel9 managed hosts + Resolves rhbz#1989221 (EL9) + Resolves rhbz#1989638 (EL8) + +* Tue Aug 03 2021 Rich Megginson - 1.6.3-1 +- storage - tag tests that use NVME and SCSI + Resolves rhbz#1989211 (EL9) + Resolves rhbz#1989638 (EL8) + +* Fri Jul 30 2021 Rich Megginson - 1.6.2-1 +- metrics - Grafana dashboard not working after metrics role run unless services manually restarted + Resolves rhbz#1984150 (EL9) + Resolves rhbz#1978357 (EL8) + +* Thu Jul 29 2021 Rich Megginson - 1.6.1-1 +- network - tests_provider_nm.yml fails with an error: Failure in test 'I can manage a veth interface with NM after I managed it with initscripts. + Resolves rhbz#1935919 +- network - _initscripts tests fail because "No package network-scripts available." + Resolves rhbz#1935916 +- network - Test tests_bond_initscripts.yml failed to create interface + Resolves rhbz#1980870 +- storage - covscan error - DEADCODE - vdopool if create_vdo else parent + Resolves rhbz#1985571 (EL9) + Resolves rhbz#1985572 (EL8) +- network - network: tests_bond_initscripts.yml leaves behind unusable resolv.conf in CI + Resolves rhbz#1915017 + +* Wed Jul 28 2021 Rich Megginson - 1.6.0-1 +- network - Skip tests on RHEL9 that use hostapd + Resolves rhbz#1945348 +- network - Fix the bond test on DHCP + Resolves rhbz#1918252 +- storage - Add support for percentage-based volume sizes + Resolves rhbz#1984583 (EL9) + Resolves rhbz#1894642 (EL8) +- storage -storage_test_actual_size != storage_test_requested_size observed with tests_lvm_auto_size_cap.yml + Resolves rhbz#1986284 (EL8) + +* Fri Jul 23 2021 Fedora Release Engineering - 1.5.1-1 +- Error: device becoming unmanaged and pytest not reproducible in tests_integration_pytest.yl + Resolves rhbz#1985382 (EL9) + Resolves rhbz#1932699 (EL8) +- EPEL yum repository configuration for tests + Rebasing to latest picks up this fix - see rhel7 bz1980439 +- connections: workaround DeprecationWarning for NM.SettingEthtool.set_feature() + Rebasing to latest picks up this fix + +* Thu Jul 15 2021 Rich Megginson - 1.5.0-1 +- ha_cluster - add pacemaker cluster properties configuration + Resolves rhbz#1982913 (EL8) + Resolves rhbz#1982906 (EL9) + +* Thu Jul 15 2021 Rich Megginson - 1.4.3-1 +- crypto_policies - rename 'policy modules' to 'subpolicies' + Resolves rhbz#1982896 (EL9) + Resolves rhbz#1982897 (EL8) + +* Thu Jul 15 2021 Rich Megginson - 1.4.2-1 +- storage - relabel doesn't support - Fixed volume relabeling + Resolves rhbz#1876315 (EL8) + Resolves rhbz#1982841 (EL9) + +* Fri Jul 9 2021 Rich Megginson - 1.4.1-1 +- network - Re-running the network system role results in "changed: true" when nothing has actually changed + Resolves rhbz#1943384 +- network - Test tests_bond_initscripts.yml failed to create interface + Resolves rhbz#1918210 + +* Thu Jul 8 2021 Rich Megginson - 1.4.0-1 +- storage - LVMVDO support + Resolves rhbz#1882475 + Resolves rhbz#1978488 + +* Wed Jun 23 2021 Rich Megginson - 1.3.0-1 +- ha_cluster - add pacemaker resources configuration + Resolves rhbz#1963283 +- ha_cluster - code cleanup + Resolves rhbz#1970666 +- Postfix RHEL system role README.md missing variables under the "Role Variables" section + Resolves rhbz#1961858 +- logging README.html examples are rendered incorrectly + Resolves rhbz#1962374 +- make postfix role idempotent - round 2 + Resolves rhbz#1960375 +- selinux task for semanage says Fedora in name but also runs on RHEL/CentOS 8 + Resolves rhbz#1966681 +- metrics role task to enable logging for targeted hosts not working + Resolves rhbz#1967335 +- network - Add 'auto_gateway' option + Resolves rhbz#1897565 +- network - Only show stderr_lines by default + Resolves rhbz#1970666 +- storage - LVMVDO support + Resolves rhbz#1882475 +- storage - fix several linter issues + Resolves rhbz#1970666 +- ssh - Fix variable precedence when invoked through roles + Resolves rhbz#1966711 +- ssh - Update configuration options list for OpenSSH 8.6 + Resolves rhbz#1970666 +- sshd - Fix variable precedence when invoked through roles + Resolves rhbz#1966711 +- sshd - Update configuration options list for OpenSSH 8.6 + Resolves rhbz#1970666 +- sshd - support for appending a snippet to configuration file + Resolves rhbz#1970642 +- timesync - add NTS support + Resolves rhbz#1970664 +- timesync - rebase to latest + Resolves rhbz#1970666 +- nbde_client - rebase to latest + Resolves rhbz#1970666 + +* Thu Jun 17 2021 Sergei Petrosian - 1.2.3-3 +- Make the ansible_collection_files macro defined in Fedora automatically and + in RHEL manually consistent - having slash at the end to clean double-slashes + +* Wed Jun 16 2021 Sergei Petrosian - 1.2.3-2 +- Remove slash (/) from the end of URLs to improve code readability + +* Wed Jun 16 2021 Noriko Hosoi - 1.2.3-1 +- Add EL 9 support for timesync and network + Resolves rhbz#1952887 + +* Tue Jun 15 2021 Rich Megginson - 1.2.2-3 +- Fix HTML rendering of internal links when using pandoc/asciidoc +- Uses pandoc gfm instead of markdown_github + Resolves rhbz#1962976 + +* Fri Jun 11 2021 Noriko Hosoi - 1.2.2-2 +- Make spec file available for older versions of OSes. +- Drop python3-six dependency which was used by lsr_role2collection.py. +- Drop html files from rpm if the version has no markdown parser. +- Drop unnecessary python scripts which include python3 only code, e.g., + f-strings. +- auto_maintenance - ability to convert "- ROLENAME" to "- FQCN" in the doc files such as README +- auto_maintenance - lsr_role2collection.py - Adding encoding="utf-8" to open. + Resolves rhbz#1957876 + +* Wed Jun 9 2021 Rich Megginson - 1.2.2-1 +- fix kdump tests_ssh for basic smoke test + Resolves rhbz#1957876 +- ha_cluster - cannot read preshared key in binary format + Resolves rhbz#1952620 +- Add hybrid_e2e option to PTP domain + Resolves rhbz#1957849 + +* Fri May 21 2021 Noriko Hosoi - 1.2.1-1 +- fix logging README.html examples' rendering problems + Resolves rhbz#1962374 +- fix broken internal links in README.md files + Resolves rhbz#1962976 + +* Mon May 17 2021 Sergei Petrosian - 1.2.0-2 +- Add BuildRequires: rubygem-kramdown for Fedora and RHEL >= 9 + +* Fri May 14 2021 Rich Megginson - 1.2.0-1 +- rebase roles to latest upstream + Resolves rhbz#1957876 +- use FQRN in postfix README + Resolves rhbz#1958963 +- use relayhost in postfix README + Resolves rhbz#1866544 +- network - Add support for ETHTOOL Ring option + Resolves rhbz#1959649 +- storage: calltrace observed when set type: partition for storage_pools + Resolves rhbz#1854187 + +* Thu May 13 2021 Noriko Hosoi - 1.1.0-2 +- Dependencies in the collection packaging + Resolves rhbz#1954747 + +* Wed Apr 14 2021 Rich Megginson - 1.1.0-1 +- rebase timesync role to latest upstream + Resolves rhbz#1937938 +- timesync - add timesync_chrony_custom_settings variable for free-form + local configs + Resolves rhbz#1938023 +- do not use ignore_errors in timesync role + Resolves rhbz#1938014 +- support for timesync_max_distance to configure maxdistance/maxdist parameter + Resolves rhbz#1938016 +- support for ntp xleave, filter, and hw timestamping + Resolves rhbz#1938020 +- rebase selinux role to latest upstream + Resolves rhbz#1937938 +- should not reload the SELinux policy if its not changed + Resolves rhbz#1757869 +- Ability to install custom SELinux module via Ansible + Resolves rhbz#1848683 +- rebase storage role to latest upstream + Resolves rhbz#1937938 +- rebase network role to latest upstream + Resolves rhbz#1937938 +- support for ipv6_disabled to disable ipv6 for address + Resolves rhbz#1939711 +- rebase postfix role to latest upstream + Resolves rhbz#1937938 +- rebase metrics role to latest upstream + Resolves rhbz#1937938 +- rebase sshd role to latest upstream + Resolves rhbz#1937938 +- rebase remaining roles to latest upstream + Resolves rhbz#1937938 +- Generate %%files dynamically +- add vpn role + Resolves rhbz#1943679 + +* Tue Apr 13 2021 Noriko Hosoi - 1.0.1-2 +- Adding the -collection-artifact subpackage, enabled using + "--with collection_artifact". It is used for importing to + ansible galaxy/automation hub. +- README.html files (main README for the collection and README + for each role) are not located in /usr/share/ansible/collections, + but just put in /usr/share/doc/linux-system-roles/collection in rpm. +- The README.html files are not included in the collection artifact. +- Fixing "sshd role README.md examples use incorrect role name". + +* Wed Mar 17 2021 Noriko Hosoi - 1.0.1-1 +- Fix description field in galaxy.yml +- Remove "Technology Preview" from Collection README +- Merging individual ignore file and add it to the package +- Add a note to each module Doc to indicate it is private +- Add patches for network and storage role ansible-test fixes + Resolves rhbz#1935451 +- Simplify doc tags in %%files, corrects a forgotten doc tag for ha_cluster +- Suppress one ansible-lint warning in ha_cluster + +* Tue Feb 23 2021 Fernando Fernandez Mancera - 1.0.0-32 +- Add patch for the inclusive language leftover on network-role README.md, + Resolves rhbz#1931931 + * Mon Feb 22 2021 Pavel Cahyna - 1.0.0-31 - Rebase certificate role to pick up a test fix, Resolves rhbz#1931568 - Rebase logging role to fix default private key path,