|
14 | 14 | # See the License for the specific language governing permissions and |
15 | 15 | # limitations under the License. |
16 | 16 |
|
17 | | -# If don't want to purge existing users from the FreeIPA group, |
18 | | -# we'll query the group to get current users |
| 17 | +# If don't want to purge existing users (and groups) from the FreeIPA sudo rule, |
| 18 | +# we'll query the rule to get current users (and groups) |
19 | 19 | - name: Query sudoers group for list of users |
20 | | - when: not sudoers__purge_users_in_group |
| 20 | + when: (not sudoers__purge_users) or (not sudoers__purge_groups) |
21 | 21 | block: |
22 | | - # Note - below creates the group if it doesn't already exist |
23 | | - - name: Create or query the sudoers group |
24 | | - community.general.ipa_group: |
| 22 | + # Note - below creates the rule if it doesn't already exist |
| 23 | + - name: Create or query the sudo rule |
| 24 | + community.general.ipa_sudorule: |
25 | 25 | ipa_user: "{{ sudoers__env_admin_username }}" |
26 | 26 | ipa_pass: "{{ sudoers__env_admin_password }}" |
27 | | - name: "{{ sudoers__sudo_group_name }}" |
| 27 | + name: "{{ sudoers__sudorule_name }}" |
28 | 28 | state: present |
29 | | - register: sudoers_group |
| 29 | + register: sudo_rule_details |
30 | 30 |
|
31 | | - - name: Set facts for current user members of the group |
| 31 | + - name: Set facts for current user and group members of the sudo rule |
32 | 32 | ansible.builtin.set_fact: |
33 | | - __sudo_existing_group_users: "{{ sudoers_group.group.member_user | default([]) }}" |
| 33 | + __sudo_existing_users: "{{ sudo_rule_details.sudorule.memberuser_user | default([]) }}" |
| 34 | + __sudo_existing_groups: "{{ sudo_rule_details.sudorule.memberuser_group | default([]) }}" |
34 | 35 |
|
35 | | -# Final list of users to add to sudoers group - |
| 36 | +# Final list of users and groups to add to sudoers group - |
36 | 37 | # either combined with existing group members or overrides |
37 | 38 | - name: Create list of users to add to sudoers group |
38 | 39 | ansible.builtin.set_fact: |
39 | | - __sudo_group_users: "{{ sudoers__sudo_group_users | union(__sudo_existing_group_users) if not sudoers__purge_users_in_group else sudoers__sudo_group_users }}" |
40 | | - |
41 | | -# Create a FreeIPA group for sudo and add users |
42 | | -- name: Add users to the sudoers group |
43 | | - community.general.ipa_group: |
44 | | - ipa_user: "{{ sudoers__env_admin_username }}" |
45 | | - ipa_pass: "{{ sudoers__env_admin_password }}" |
46 | | - name: "{{ sudoers__sudo_group_name }}" |
47 | | - user: "{{ __sudo_group_users }}" |
48 | | - state: present |
| 40 | + __sudo_users: "{{ sudoers__sudo_users | union(__sudo_existing_users) if not sudoers__purge_users else sudoers__sudo_users }}" |
| 41 | + __sudo_groups: "{{ sudoers__sudo_groups | union(__sudo_existing_groups) if not sudoers__purge_groups else sudoers__sudo_groups }}" |
49 | 42 |
|
50 | 43 | # Create FreeIPA sudo rule |
51 | 44 | - name: Add sudo rule for passwordless sudo |
|
56 | 49 | cmdcategory: all |
57 | 50 | hostcategory: all |
58 | 51 | sudoopt: "!authenticate" |
59 | | - usergroup: |
60 | | - - "{{ sudoers__sudo_group_name }}" |
| 52 | + user: "{{ __sudo_users }}" |
| 53 | + usergroup: "{{ __sudo_groups }}" |
61 | 54 | state: present |
0 commit comments