i9c-beta
changed/i9c-beta/rhel-system-roles-1.23.0-2.21.el9
parent
fabd2613cb
commit
dd0c0cd0a4
@ -1,31 +1,34 @@
|
||||
SOURCES/ad_integration-1.1.3.tar.gz
|
||||
SOURCES/ad_integration-1.4.2.tar.gz
|
||||
SOURCES/ansible-posix-1.5.4.tar.gz
|
||||
SOURCES/ansible-sshd-v0.19.0.tar.gz
|
||||
SOURCES/auto-maintenance-e010c878833e363195dd707d1334ff48a254b092.tar.gz
|
||||
SOURCES/certificate-1.2.1.tar.gz
|
||||
SOURCES/cockpit-1.4.7.tar.gz
|
||||
SOURCES/community-general-7.3.0.tar.gz
|
||||
SOURCES/containers-podman-1.10.3.tar.gz
|
||||
SOURCES/crypto_policies-1.2.11.tar.gz
|
||||
SOURCES/firewall-1.6.3.tar.gz
|
||||
SOURCES/ha_cluster-1.10.0.tar.gz
|
||||
SOURCES/journald-1.0.5.tar.gz
|
||||
SOURCES/kdump-1.3.6.tar.gz
|
||||
SOURCES/kernel_settings-1.1.17.tar.gz
|
||||
SOURCES/keylime_server-1.0.0.tar.gz
|
||||
SOURCES/logging-1.11.9.tar.gz
|
||||
SOURCES/metrics-1.8.6.tar.gz
|
||||
SOURCES/nbde_client-1.2.14.tar.gz
|
||||
SOURCES/nbde_server-1.3.8.tar.gz
|
||||
SOURCES/network-1.13.1.tar.gz
|
||||
SOURCES/podman-1.3.2.tar.gz
|
||||
SOURCES/postfix-1.3.8.tar.gz
|
||||
SOURCES/postgresql-1.1.0.tar.gz
|
||||
SOURCES/rhc-1.2.4.tar.gz
|
||||
SOURCES/selinux-1.6.1.tar.gz
|
||||
SOURCES/ssh-1.2.1.tar.gz
|
||||
SOURCES/storage-1.12.3.tar.gz
|
||||
SOURCES/systemd-1.0.1.tar.gz
|
||||
SOURCES/timesync-1.7.6.tar.gz
|
||||
SOURCES/tlog-1.2.16.tar.gz
|
||||
SOURCES/vpn-1.5.8.tar.gz
|
||||
SOURCES/ansible-sshd-v0.23.2.tar.gz
|
||||
SOURCES/auto-maintenance-11ad785c9bb72611244e7909450ca4247e12db4d.tar.gz
|
||||
SOURCES/bootloader-1.0.3.tar.gz
|
||||
SOURCES/certificate-1.3.3.tar.gz
|
||||
SOURCES/cockpit-1.5.5.tar.gz
|
||||
SOURCES/community-general-8.3.0.tar.gz
|
||||
SOURCES/containers-podman-1.12.0.tar.gz
|
||||
SOURCES/crypto_policies-1.3.2.tar.gz
|
||||
SOURCES/fapolicyd-1.1.1.tar.gz
|
||||
SOURCES/firewall-1.7.4.tar.gz
|
||||
SOURCES/ha_cluster-1.14.0.tar.gz
|
||||
SOURCES/journald-1.2.3.tar.gz
|
||||
SOURCES/kdump-1.4.4.tar.gz
|
||||
SOURCES/kernel_settings-1.2.2.tar.gz
|
||||
SOURCES/keylime_server-1.1.2.tar.gz
|
||||
SOURCES/logging-1.12.4.tar.gz
|
||||
SOURCES/metrics-1.10.1.tar.gz
|
||||
SOURCES/nbde_client-1.2.17.tar.gz
|
||||
SOURCES/nbde_server-1.4.3.tar.gz
|
||||
SOURCES/network-1.15.1.tar.gz
|
||||
SOURCES/podman-1.4.7.tar.gz
|
||||
SOURCES/postfix-1.4.3.tar.gz
|
||||
SOURCES/postgresql-1.3.5.tar.gz
|
||||
SOURCES/rhc-1.6.0.tar.gz
|
||||
SOURCES/selinux-1.7.4.tar.gz
|
||||
SOURCES/snapshot-1.3.1.tar.gz
|
||||
SOURCES/ssh-1.3.2.tar.gz
|
||||
SOURCES/storage-1.16.2.tar.gz
|
||||
SOURCES/systemd-1.1.2.tar.gz
|
||||
SOURCES/timesync-1.8.2.tar.gz
|
||||
SOURCES/tlog-1.3.3.tar.gz
|
||||
SOURCES/vpn-1.6.3.tar.gz
|
||||
|
@ -1,31 +1,34 @@
|
||||
4ed72d2549af3a2bf5232944dcd84c4203ec1f49 SOURCES/ad_integration-1.1.3.tar.gz
|
||||
5141bc9c1084d08fc347e017bb1c91963bcbe441 SOURCES/ad_integration-1.4.2.tar.gz
|
||||
da646eb9ba655f1693cc950ecb5c24af39ee1af6 SOURCES/ansible-posix-1.5.4.tar.gz
|
||||
edcfa5243b2e74c50ab8fd17f514bbc9df693c06 SOURCES/ansible-sshd-v0.19.0.tar.gz
|
||||
7b34305ca31a8df71f3ecec3410c7c4d262201bd SOURCES/auto-maintenance-e010c878833e363195dd707d1334ff48a254b092.tar.gz
|
||||
4483962040f0c29fa9c80950dc403ce7e9f17ed7 SOURCES/certificate-1.2.1.tar.gz
|
||||
4ed2794a781e7976ff2a0b4c6abbf008859ef982 SOURCES/cockpit-1.4.7.tar.gz
|
||||
ee7868c57b3d1ce170b61a1d42c840ba1428aeac SOURCES/community-general-7.3.0.tar.gz
|
||||
711423c6503c1e137d7c38b6a0718e5768f40d21 SOURCES/containers-podman-1.10.3.tar.gz
|
||||
aee5eb307f5a40a8a222a0dd7713b230bc3324a7 SOURCES/crypto_policies-1.2.11.tar.gz
|
||||
81ac41f0c7d06dbb92d70b8d9a0a0b0a6474411c SOURCES/firewall-1.6.3.tar.gz
|
||||
aa11011e00fe8a86999688149d60f5d0a4ed5cbf SOURCES/ha_cluster-1.10.0.tar.gz
|
||||
88e721b5d804f00e7b044310d47b2dd40ac83f8f SOURCES/journald-1.0.5.tar.gz
|
||||
64680ec0f3ea03fc5c0a5792ceeaa193d6154fdd SOURCES/kdump-1.3.6.tar.gz
|
||||
43338d3ffdc79961564504822a84462cefa8ff5a SOURCES/kernel_settings-1.1.17.tar.gz
|
||||
81b0e4e1f71f01a008181494eefc542506cd3823 SOURCES/keylime_server-1.0.0.tar.gz
|
||||
0963ecef1330048c25bb9a778b5ac15c24e77df2 SOURCES/logging-1.11.9.tar.gz
|
||||
af61299d39b4a7d5e37507a898ddba55e3f053d6 SOURCES/metrics-1.8.6.tar.gz
|
||||
b8c7ff7dadbd84aeb13e94c4be3be0f8ee9549cd SOURCES/nbde_client-1.2.14.tar.gz
|
||||
a5d2a5afd45447edb17f6a9615eabb80501e61f3 SOURCES/nbde_server-1.3.8.tar.gz
|
||||
fe9426eaf3e7a5a31ebe5707e4a17770bca7a6b6 SOURCES/network-1.13.1.tar.gz
|
||||
8b49515b4c5d8b1f5e06be6c7fdeff7ab622c495 SOURCES/podman-1.3.2.tar.gz
|
||||
b91070ba6fa7b4a9072aa2d1a2ef4b169aab0f00 SOURCES/postfix-1.3.8.tar.gz
|
||||
504cde6540ff1b5527b2ddf9aa90a95e29d7ffc3 SOURCES/postgresql-1.1.0.tar.gz
|
||||
a6097168bd1b54a46be8b5f4adfdab9b5ec8ddb5 SOURCES/rhc-1.2.4.tar.gz
|
||||
bb2a5e711233e527d0a11914bd566f47a2cfe9e6 SOURCES/selinux-1.6.1.tar.gz
|
||||
c03dbda563ec7d3c2ae2c7bfd6aab88c6c19fbac SOURCES/ssh-1.2.1.tar.gz
|
||||
84085e0f750181aee340e02258fd5888d563698e SOURCES/storage-1.12.3.tar.gz
|
||||
1c7ac80df7288f7d3469e376316305eadd2dc2dc SOURCES/systemd-1.0.1.tar.gz
|
||||
e4fe253906ffd7ce2ecca71a63a0e96e5f562e0c SOURCES/timesync-1.7.6.tar.gz
|
||||
544d0591a0ae73b73c1ab5bc280cdc8d5598f322 SOURCES/tlog-1.2.16.tar.gz
|
||||
1d959b0b5f6bd261d392b0740fd86915c7b35c17 SOURCES/vpn-1.5.8.tar.gz
|
||||
ae49d8b3f623a4bf132644f0f2256a92bd4c41ae SOURCES/ansible-sshd-v0.23.2.tar.gz
|
||||
e4df3548cf129b61c40b2d013917e07be2f3ba4e SOURCES/auto-maintenance-11ad785c9bb72611244e7909450ca4247e12db4d.tar.gz
|
||||
b84e7d8110638848b22a22c7ed8e94cf865a13d8 SOURCES/bootloader-1.0.3.tar.gz
|
||||
9eaac83b306b2fb8dd8e82bc4b03b30285d2024f SOURCES/certificate-1.3.3.tar.gz
|
||||
dd3d8b4b12aeeeab4cf78bfdad911a194027fc8e SOURCES/cockpit-1.5.5.tar.gz
|
||||
15fd2f2c08ae17cc47efb76bd14fb9ab6f33bc26 SOURCES/community-general-8.3.0.tar.gz
|
||||
ff961816d6e01326a413552b4f3c290ccdb9dc20 SOURCES/containers-podman-1.12.0.tar.gz
|
||||
6705818b1fdf3cc82083937265f7942e3d3ccc2d SOURCES/crypto_policies-1.3.2.tar.gz
|
||||
29505121f6798f527045c5f66656fd5c19bed5fe SOURCES/fapolicyd-1.1.1.tar.gz
|
||||
1a7a875cebbd3e146f6ca554269ee20845cf877b SOURCES/firewall-1.7.4.tar.gz
|
||||
53e8991ca7e0c5c97ab010e843bc1a7c4a98eb96 SOURCES/ha_cluster-1.14.0.tar.gz
|
||||
e96ba9f5b3ae08a12dbf072f118e316036553b94 SOURCES/journald-1.2.3.tar.gz
|
||||
de6c6103b7023aa21782906696e712b428600a92 SOURCES/kdump-1.4.4.tar.gz
|
||||
0f28a0919874f650ef0149409116bae12d2363e0 SOURCES/kernel_settings-1.2.2.tar.gz
|
||||
85c14c7e260b247eb7947c8706af82ff5aac07d2 SOURCES/keylime_server-1.1.2.tar.gz
|
||||
15e86d6989a25cd50edb58f5fb479e0d1ae3b755 SOURCES/logging-1.12.4.tar.gz
|
||||
e795238995d2dfb2cbdb5cc9bf4923f7410ac49a SOURCES/metrics-1.10.1.tar.gz
|
||||
8218c40eb96540e2f5d9f5be95deea9e2110ddd8 SOURCES/nbde_client-1.2.17.tar.gz
|
||||
dce6435ca145b3143c1326a8e413e8173e5655ef SOURCES/nbde_server-1.4.3.tar.gz
|
||||
e89a4d6974a089f035b1f3fc79a1f9cacfa1f933 SOURCES/network-1.15.1.tar.gz
|
||||
fc242b6f776088720ef04e5891c75fd33e6e1e96 SOURCES/podman-1.4.7.tar.gz
|
||||
ddb7e2a575e4b96666ce13dbdbaea97cc2f83954 SOURCES/postfix-1.4.3.tar.gz
|
||||
bf0f12e78bfc2120d85c5458aa7d53b15738e73c SOURCES/postgresql-1.3.5.tar.gz
|
||||
b519a4e35b55e97bf954916d77f1f1f82ec2615b SOURCES/rhc-1.6.0.tar.gz
|
||||
458b076a73a1c3597485b60bc734b225f3079a86 SOURCES/selinux-1.7.4.tar.gz
|
||||
8fdcd362f021d41165c4a959ba79136491389343 SOURCES/snapshot-1.3.1.tar.gz
|
||||
d2c153993e51ce949db861db2aa15e8ec90b45af SOURCES/ssh-1.3.2.tar.gz
|
||||
e08c1df6c6842f6ad37fff34d2e9d96e9cdddd70 SOURCES/storage-1.16.2.tar.gz
|
||||
df8f2896ad761da73872d17a0f0cd8cfd34e0671 SOURCES/systemd-1.1.2.tar.gz
|
||||
47be5d4b967970eefecf72a79a1d8d9bc7c72f18 SOURCES/timesync-1.8.2.tar.gz
|
||||
6d559dc44f44bc7e505602b36b51b4d1b60f2754 SOURCES/tlog-1.3.3.tar.gz
|
||||
27395883fa555658257e70287e709f8ccc1d8392 SOURCES/vpn-1.6.3.tar.gz
|
||||
|
@ -1,127 +0,0 @@
|
||||
From 1931ebccaa146bd6ee8365c664ab62d294adaa31 Mon Sep 17 00:00:00 2001
|
||||
From: Rich Megginson <rmeggins@redhat.com>
|
||||
Date: Fri, 18 Aug 2023 12:35:44 -0600
|
||||
Subject: [PATCH] fix: use command stdin for password, and do not log password
|
||||
|
||||
Cause: The code was constructing the realm join command to be passed
|
||||
via the shell module, including piping the password into the command,
|
||||
and was showing the command, including the password, when using
|
||||
check mode.
|
||||
|
||||
Consequence: The clear text password was available in the logs when
|
||||
using check mode.
|
||||
|
||||
Fix: Use command with stdin for the password instead of shell. The
|
||||
password is not part of the command. command with stdin is more
|
||||
secure than using shell. The debug output has been changed to
|
||||
show the command with the `ad_integration_join_parameters` removed,
|
||||
because we cannot know if those parameters contain data which should
|
||||
not be logged. Those parameters will still be passed to the actual
|
||||
realm join command.
|
||||
|
||||
Result: The password is not logged. The role is more secure.
|
||||
|
||||
Signed-off-by: Rich Megginson <rmeggins@redhat.com>
|
||||
---
|
||||
tasks/main.yml | 57 ++++++++++++++++++++++++++++----------------------
|
||||
1 file changed, 32 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/tasks/main.yml b/tasks/main.yml
|
||||
index fe2602e..265c6fe 100644
|
||||
--- a/tasks/main.yml
|
||||
+++ b/tasks/main.yml
|
||||
@@ -3,8 +3,7 @@
|
||||
- name: Ensure that mandatory variable ad_integration_realm is available
|
||||
fail:
|
||||
msg: Variable ad_integration_realm must be provided!
|
||||
- when:
|
||||
- - not ad_integration_realm
|
||||
+ when: not ad_integration_realm
|
||||
|
||||
- name: Assume managing timesync if timesource is set
|
||||
set_fact:
|
||||
@@ -26,8 +25,7 @@
|
||||
- name: Assume managing crypto policies if allow_rc4_crypto is set
|
||||
set_fact:
|
||||
ad_integration_manage_crypto_policies: true
|
||||
- when:
|
||||
- - ad_integration_allow_rc4_crypto | bool
|
||||
+ when: ad_integration_allow_rc4_crypto | bool
|
||||
|
||||
- name: Ensure manage_crypt_policies is set with crypto_allow_rc4
|
||||
fail:
|
||||
@@ -141,41 +139,50 @@
|
||||
|
||||
- name: Build Command - Join to a specific Domain Controller
|
||||
set_fact:
|
||||
- __ad_integration_join_command: |
|
||||
- set -euo pipefail
|
||||
- echo {{ ad_integration_password | quote }} | realm join -U \
|
||||
- {{ ad_integration_user | quote }} --membership-software \
|
||||
- {{ ad_integration_membership_software | quote }} \
|
||||
- {{ ad_integration_join_parameters }} \
|
||||
- {{ ad_integration_join_to_dc | quote }}
|
||||
+ __ad_integration_join_command: >-
|
||||
+ realm join -U {{ ad_integration_user | quote }} --membership-software
|
||||
+ {{ ad_integration_membership_software | quote }}
|
||||
+ {{ ad_integration_join_parameters }}
|
||||
+ {{ ad_integration_join_to_dc | quote }}
|
||||
+ __ad_integration_debug_command: >-
|
||||
+ realm join -U {{ ad_integration_user | quote }} --membership-software
|
||||
+ {{ ad_integration_membership_software | quote }}
|
||||
+ {{ ad_integration_join_to_dc | quote }}
|
||||
no_log: true
|
||||
- when:
|
||||
- - ad_integration_join_to_dc is not none
|
||||
+ when: ad_integration_join_to_dc is not none
|
||||
|
||||
- name: Build Join Command - Perform discovery-based realm join operation
|
||||
set_fact:
|
||||
- __ad_integration_join_command: |
|
||||
- set -euo pipefail
|
||||
- echo {{ ad_integration_password | quote }} | realm join -U \
|
||||
- {{ ad_integration_user | quote }} --membership-software \
|
||||
- {{ ad_integration_membership_software | quote }} \
|
||||
- {{ ad_integration_join_parameters }} \
|
||||
- {{ ad_integration_realm | quote }}
|
||||
+ __ad_integration_join_command: >-
|
||||
+ realm join -U {{ ad_integration_user | quote }} --membership-software
|
||||
+ {{ ad_integration_membership_software | quote }}
|
||||
+ {{ ad_integration_join_parameters }}
|
||||
+ {{ ad_integration_realm | quote }}
|
||||
+ __ad_integration_debug_command: >-
|
||||
+ realm join -U {{ ad_integration_user | quote }} --membership-software
|
||||
+ {{ ad_integration_membership_software | quote }}
|
||||
+ {{ ad_integration_realm | quote }}
|
||||
no_log: true
|
||||
- when:
|
||||
- - ad_integration_join_to_dc is none
|
||||
+ when: ad_integration_join_to_dc is none
|
||||
|
||||
- name: Show the join command for debug
|
||||
debug:
|
||||
- msg: "Would run: '{{ __ad_integration_join_command }}'"
|
||||
+ msg:
|
||||
+ - >-
|
||||
+ Would run the following command. Note that
|
||||
+ ad_integration_join_parameters have been removed for security purposes,
|
||||
+ the role will pass them to the actual realm join command when running
|
||||
+ without check mode.
|
||||
+ - "{{ __ad_integration_debug_command }}"
|
||||
when:
|
||||
- ad_integration_join_to_dc == __ad_integration_sample_dc
|
||||
or ad_integration_realm == __ad_integration_sample_realm
|
||||
or ansible_check_mode
|
||||
|
||||
- name: Run realm join command
|
||||
- # noqa command-instead-of-shell
|
||||
- shell: "{{ __ad_integration_join_command }}"
|
||||
+ command: "{{ __ad_integration_join_command }}"
|
||||
+ args:
|
||||
+ stdin: "{{ ad_integration_password }}"
|
||||
no_log: true
|
||||
when:
|
||||
- ad_integration_join_to_dc != __ad_integration_sample_dc
|
||||
--
|
||||
2.41.0
|
||||
|
@ -1,10 +1,10 @@
|
||||
Source801: https://galaxy.ansible.com/download/ansible-posix-1.5.4.tar.gz
|
||||
Source901: https://galaxy.ansible.com/download/community-general-7.3.0.tar.gz
|
||||
Source902: https://galaxy.ansible.com/download/containers-podman-1.10.3.tar.gz
|
||||
Source901: https://galaxy.ansible.com/download/community-general-8.3.0.tar.gz
|
||||
Source902: https://galaxy.ansible.com/download/containers-podman-1.12.0.tar.gz
|
||||
|
||||
Provides: bundled(ansible-collection(ansible.posix)) = 1.5.4
|
||||
Provides: bundled(ansible-collection(community.general)) = 7.3.0
|
||||
Provides: bundled(ansible-collection(containers.podman)) = 1.10.3
|
||||
Provides: bundled(ansible-collection(community.general)) = 8.3.0
|
||||
Provides: bundled(ansible-collection(containers.podman)) = 1.12.0
|
||||
|
||||
Source996: CHANGELOG.rst
|
||||
Source998: collection_readme.sh
|
||||
|
@ -1,104 +1,102 @@
|
||||
# Unpack tar.gz to retrieve to be vendored modules and place them in the roles library.
|
||||
# ansible.posix:
|
||||
# - library:
|
||||
# - Module selinux and seboolean for the selinux role
|
||||
# - Module mount for the storage role
|
||||
declare -A module_map=( ["selinux.py"]="selinux" ["seboolean.py"]="selinux" ["mount.py"]="storage" )
|
||||
for module in "${!module_map[@]}"; do
|
||||
role="${module_map[${module}]}"
|
||||
if [ ! -d $role/library ]; then
|
||||
mkdir $role/library
|
||||
fi
|
||||
cp -pL .external/ansible/posix/plugins/modules/$module $role/library/$module
|
||||
sed -i -e ':a;N;$!ba;s/description:\n\( *\)/description:\n\1- WARNING: Do not use this module directly! It is only for role internal use.\n\1/' -e "s/ansible_collections.ansible.posix.plugins.module_utils/ansible.module_utils.${role}_lsr/" $role/library/$module
|
||||
done
|
||||
# maps the source file to the roles that use that file
|
||||
# value can be string or space delimited list of strings
|
||||
# role name `__collection` means - do not vendor into
|
||||
# role, just vendor directly into the collection
|
||||
declare -A plugin_map=(
|
||||
[ansible/posix/plugins/modules/selinux.py]=selinux
|
||||
[ansible/posix/plugins/modules/seboolean.py]=selinux
|
||||
[ansible/posix/plugins/modules/mount.py]=storage
|
||||
[ansible/posix/plugins/modules/rhel_facts.py]=__collection
|
||||
[ansible/posix/plugins/modules/rhel_rpm_ostree.py]=__collection
|
||||
[ansible/posix/plugins/module_utils/mount.py]=storage
|
||||
[community/general/plugins/modules/ini_file.py]="tlog ad_integration"
|
||||
[community/general/plugins/modules/modprobe.py]=ha_cluster
|
||||
[community/general/plugins/modules/redhat_subscription.py]=rhc
|
||||
[community/general/plugins/modules/rhsm_release.py]=rhc
|
||||
[community/general/plugins/modules/rhsm_repository.py]=rhc
|
||||
[community/general/plugins/modules/seport.py]=selinux
|
||||
[community/general/plugins/modules/sefcontext.py]=selinux
|
||||
[community/general/plugins/modules/selogin.py]=selinux
|
||||
[containers/podman/plugins/modules/podman_container_info.py]=podman
|
||||
[containers/podman/plugins/modules/podman_image.py]=podman
|
||||
[containers/podman/plugins/modules/podman_play.py]=podman
|
||||
[containers/podman/plugins/modules/podman_secret.py]=podman
|
||||
[containers/podman/plugins/module_utils/podman/common.py]=podman
|
||||
)
|
||||
|
||||
# ansible.posix:
|
||||
# - module_utils:
|
||||
# - Module_util mount for the storage role
|
||||
module_map=( ["mount.py"]="storage" )
|
||||
for module in "${!module_map[@]}"; do
|
||||
role="${module_map[${module}]}"
|
||||
if [ ! -d $role/module_utils/${role}_lsr ]; then
|
||||
mkdir -p $role/module_utils/${role}_lsr
|
||||
fi
|
||||
cp -pL .external/ansible/posix/plugins/module_utils/$module $role/module_utils/${role}_lsr/$module
|
||||
done
|
||||
|
||||
# community.general:
|
||||
# - library:
|
||||
# - Module seport, sefcontext and selogin for the selinux role rolename2
|
||||
# - Module ini_file for role tlog
|
||||
# - rhc modules
|
||||
# - ha_cluster uses modprobe
|
||||
module_map=( ["seport.py"]="selinux" ["sefcontext.py"]="selinux" ["selogin.py"]="selinux" ["ini_file.py"]="tlog"
|
||||
["redhat_subscription.py"]="rhc" ["rhsm_release.py"]="rhc" ["rhsm_repository.py"]="rhc"
|
||||
["modprobe.py"]="ha_cluster" )
|
||||
for module in "${!module_map[@]}"; do
|
||||
role="${module_map[${module}]}"
|
||||
if [ ! -d $role/library ]; then
|
||||
mkdir $role/library
|
||||
fi
|
||||
# version 5.x seems to be broken?
|
||||
moduledir=.external/community/general/plugins/modules
|
||||
if [ ! -f $moduledir/$module ]; then
|
||||
moduledir=.external/community/general/plugins/modules/system
|
||||
fi
|
||||
if [ ! -f $moduledir/$module ]; then
|
||||
moduledir=.external/community/general/plugins/modules/files
|
||||
declare -a modules mod_utils collection_plugins
|
||||
declare -A dests
|
||||
# vendor in plugin files - fix documentation, fragments
|
||||
for src in "${!plugin_map[@]}"; do
|
||||
roles="${plugin_map["$src"]}"
|
||||
if [ "$roles" = __collection ]; then
|
||||
collection_plugins+=("$src")
|
||||
else
|
||||
case "$src" in
|
||||
*/plugins/modules/*) srcdir=plugins/modules; subdir=library; modules+=("$src") ;;
|
||||
*/plugins/module_utils/*) srcdir=plugins/module_utils; mod_utils+=("$src") ;;
|
||||
*/plugins/action/*) srcdir=plugins/action ;;
|
||||
esac
|
||||
fi
|
||||
cp -pL $moduledir/$module $role/library/$module
|
||||
ls -alrtF $role/library/$module
|
||||
sed -i -e ':a;N;$!ba;s/description:\n\( *\)/description:\n\1- WARNING: Do not use this module directly! It is only for role internal use.\n\1/' $role/library/$module
|
||||
|
||||
# Remove doc_fragments
|
||||
sed -i '/^extends_documentation_fragment:/,/^[^ -]/{/^extends/d;/^[ -]/d}' $role/library/$module
|
||||
done
|
||||
|
||||
# containers.podman:
|
||||
# - library:
|
||||
# - Module podman_container_info, podman_image and podman_play for the podman role
|
||||
module_map=( ["podman_container_info.py"]="podman" ["podman_image.py"]="podman" ["podman_play.py"]="podman"
|
||||
["podman_secret.py"]="podman" )
|
||||
for module in "${!module_map[@]}"; do
|
||||
role="${module_map[${module}]}"
|
||||
if [ ! -d $role/library ]; then
|
||||
mkdir $role/library
|
||||
for role in $roles; do
|
||||
if [ "$role" = __collection ]; then
|
||||
dest="%{collection_build_path}/plugins${src/#*plugins/}"
|
||||
dests["$dest"]=__collection
|
||||
else
|
||||
case "$src" in
|
||||
*/plugins/module_utils/*) subdir="module_utils/${role}_lsr" ;;
|
||||
esac
|
||||
dest="$role/${src/#*${srcdir}/${subdir}}"
|
||||
dests["$dest"]="$role"
|
||||
fi
|
||||
moduledir=.external/containers/podman/plugins/modules
|
||||
cp -pL $moduledir/$module $role/library/$module
|
||||
ls -alrtF $role/library/$module
|
||||
sed -i -e ':a;N;$!ba;s/description:\n\( *\)/description:\n\1- WARNING: Do not use this module directly! It is only for role internal use.\n\1/' \
|
||||
-e "s/ansible_collections.containers.podman.plugins.module_utils.podman/ansible.module_utils.${role}_lsr/" \
|
||||
$role/library/$module
|
||||
done
|
||||
|
||||
# containers.podman:
|
||||
# - module_utils:
|
||||
# - Module_util common for the podman role
|
||||
module_map=( ["common.py"]="podman" )
|
||||
for module in "${!module_map[@]}"; do
|
||||
role="${module_map[${module}]}"
|
||||
if [ ! -d $role/module_utils/${role}_lsr ]; then
|
||||
mkdir -p $role/module_utils/${role}_lsr
|
||||
destdir="$(dirname "$dest")"
|
||||
if [ ! -d "$destdir" ]; then
|
||||
mkdir -p "$destdir"
|
||||
fi
|
||||
cp -pL .external/containers/podman/plugins/module_utils/podman/$module $role/module_utils/${role}_lsr/$module
|
||||
cp -pL ".external/$src" "$dest"
|
||||
sed -e ':a;N;$!ba;s/description:\n\( *\)/description:\n\1- WARNING: Do not use this plugin directly! It is only for role internal use.\n\1/' \
|
||||
-e '/^extends_documentation_fragment:/,/^[^ -]/{/^extends/d;/^[ -]/d}' \
|
||||
-i "$dest"
|
||||
done
|
||||
done
|
||||
|
||||
# remove the temporary .external directory after vendoring
|
||||
rm -rf .external
|
||||
|
||||
# fix python imports to point from the old name to the new name
|
||||
for dest in "${!dests[@]}"; do
|
||||
role="${dests["$dest"]}"
|
||||
for module in "${modules[@]}"; do
|
||||
python_name="$(dirname "$module")"
|
||||
python_name="${python_name////[.]}"
|
||||
sed -e "s/ansible_collections[.]${python_name}[.]/ansible.modules./" -i "$dest"
|
||||
done
|
||||
for mod_util in "${mod_utils[@]}"; do
|
||||
# some mod_utils have subdirs, some do not
|
||||
split=(${mod_util//// })
|
||||
python_name="ansible_collections[.]${split[0]}[.]${split[1]}[.]plugins[.]module_utils[.]"
|
||||
sed -e "s/${python_name}/ansible.module_utils.${role}_lsr./" -i "$dest"
|
||||
done
|
||||
for plugin in "${collection_plugins[@]}"; do
|
||||
python_name="$(dirname "$plugin")"
|
||||
dest_python_name="%{collection_namespace}/%{collection_name}/plugins${python_name/#*plugins/}"
|
||||
src_python_name="ansible_collections.${python_name////[.]}"
|
||||
dest_python_name="ansible_collections.${dest_python_name////.}"
|
||||
sed -e "s/${src_python_name}/${dest_python_name}/" -i "$dest"
|
||||
done
|
||||
done
|
||||
|
||||
# Replacing "linux-system-roles.rolename" with "rhel-system-roles.rolename" in each role
|
||||
# Replacing "fedora.linux_system_roles." with "redhat.rhel_system_roles" in each role
|
||||
# This is for the "roles calling other roles" case
|
||||
# for podman, change the FQCN - using a non-FQCN module name doesn't seem to work,
|
||||
# even for the legacy role format
|
||||
# replace community.general for rhc
|
||||
for rolename in %{rolenames}; do
|
||||
find $rolename -type f -exec \
|
||||
find "$rolename" -type f -exec \
|
||||
sed -e "s/linux-system-roles[.]${rolename}\\>/%{roleinstprefix}${rolename}/g" \
|
||||
-e "s/fedora[.]linux_system_roles[.]/%{collection_namespace}.%{collection_name}./g" \
|
||||
-e "s/containers[.]podman[.]/%{collection_namespace}.%{collection_name}./g" \
|
||||
-e "s/community[.]general[.]/%{collection_namespace}.%{collection_name}./g" \
|
||||
-e "s/ansible[.]posix[.]/%{collection_namespace}.%{collection_name}./g" \
|
||||
-i {} \;
|
||||
done
|
||||
|
Loading…
Reference in new issue