mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-07-25 00:44:42 +00:00
Merge pull request #1335 from rjeffman/ipagroup_fix_1
ipagroup: Fix management of AD objects
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
---
|
||||
- name: Test group
|
||||
hosts: "{{ ipa_test_host | default('ipaserver') }}"
|
||||
become: true
|
||||
gather_facts: true
|
||||
become: false
|
||||
gather_facts: false
|
||||
module_defaults:
|
||||
ipauser:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
@@ -10,6 +10,9 @@
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||
ipaservice:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||
|
||||
tasks:
|
||||
# setup
|
||||
@@ -51,6 +54,16 @@
|
||||
register: result
|
||||
failed_when: not result.changed or result.failed
|
||||
|
||||
- name: Ensure test service HTTP is present
|
||||
ipaservice:
|
||||
name: "{{ 'HTTP/' + fqdn_at_domain }}"
|
||||
notify: Cleanup http service
|
||||
|
||||
- name: Ensure test service LDAP is present
|
||||
ipaservice:
|
||||
name: "{{ 'ldap/' + fqdn_at_domain }}"
|
||||
notify: Cleanup ldap service
|
||||
|
||||
# TESTS
|
||||
|
||||
- name: Ensure group1 is present
|
||||
@@ -437,3 +450,16 @@
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: not result.changed or result.failed
|
||||
|
||||
# ansible-lint is complaining on the use of 'when' and requiring
|
||||
# the use of handlers.
|
||||
handlers:
|
||||
- name: Cleanup http service
|
||||
ipaservice:
|
||||
name: "{{ 'HTTP/' + fqdn_at_domain }}"
|
||||
state: absent
|
||||
|
||||
- name: Cleanup ldap service
|
||||
ipaservice:
|
||||
name: "{{ 'ldap/' + fqdn_at_domain }}"
|
||||
state: absent
|
||||
|
||||
73
tests/group/test_group_ad_users.yml
Normal file
73
tests/group/test_group_ad_users.yml
Normal file
@@ -0,0 +1,73 @@
|
||||
---
|
||||
- name: Test group AD external members idempotence
|
||||
hosts: ipaserver
|
||||
become: false
|
||||
gather_facts: false
|
||||
module_defaults:
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
ipaapi_context: server # external_member requires 'server' context
|
||||
|
||||
vars:
|
||||
ad_user: "{{ test_ad_user | default('AD\\aduser') }}"
|
||||
alt_user: "{{ test_alt_user | default('aduser@ad.ipa.test') }}"
|
||||
|
||||
tasks:
|
||||
- name: Include tasks ../env_freeipa_facts.yml
|
||||
ansible.builtin.include_tasks: ../env_freeipa_facts.yml
|
||||
|
||||
- name: Ensure test group is absent.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
state: absent
|
||||
|
||||
- name: Execute group tests if trust test environment is supported
|
||||
when: trust_test_is_supported | default(false)
|
||||
block:
|
||||
- name: Ensure external group, with AD users, is present.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external: true
|
||||
external_member: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure external group, with AD users, is present, again
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external: true
|
||||
external_member: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure external group, with alternate name AD users, is present
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external: true
|
||||
external_member: "{{ alt_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure external_member is absent
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external_member: "{{ ad_user }}"
|
||||
action: member
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure external_member is absent, again
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external_member: "{{ alt_user }}"
|
||||
action: member
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
always:
|
||||
- name: Cleanup environment.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
state: absent
|
||||
@@ -4,6 +4,9 @@
|
||||
become: no
|
||||
gather_facts: no
|
||||
|
||||
vars:
|
||||
ad_user: "{{ test_ad_user | default('AD\\aduser') }}"
|
||||
|
||||
tasks:
|
||||
- name: Include FreeIPA facts.
|
||||
ansible.builtin.include_tasks: ../env_freeipa_facts.yml
|
||||
@@ -18,6 +21,16 @@
|
||||
failed_when: not (result.failed and result.msg is regex("No module named '*ipaserver'*"))
|
||||
when: ipa_host_is_client
|
||||
|
||||
- name: Ensuref fail if externalmember is used in client context.
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
ipaapi_context: client
|
||||
name: ThisShouldNotWork
|
||||
external_member: "{{ ad_user }}"
|
||||
external: true
|
||||
register: result
|
||||
failed_when: not (result.failed and result.msg == "Cannot use externalmember in client context.")
|
||||
|
||||
# Import basic module tests, and execute with ipa_context set to 'client'.
|
||||
# If ipaclients is set, it will be executed using the client, if not,
|
||||
# ipaserver will be used.
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
---
|
||||
- name: Find trust
|
||||
hosts: ipaserver
|
||||
- name: Test groups with external members
|
||||
hosts: "{{ ipa_test_host | default('ipaserver') }}"
|
||||
become: false
|
||||
gather_facts: false
|
||||
module_defaults:
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
ipaapi_context: "{{ ipa_context | default(omit) }}"
|
||||
ipaapi_context: server # external_member requires 'server' context
|
||||
|
||||
vars:
|
||||
ad_user: "{{ test_ad_user | default('AD\\aduser') }}"
|
||||
alt_user: "{{ test_alt_user | default('aduser@ad.ipa.test') }}"
|
||||
|
||||
tasks:
|
||||
|
||||
@@ -24,86 +28,121 @@
|
||||
when: trust_test_is_supported | default(false)
|
||||
block:
|
||||
|
||||
- name: Add nonposix group.
|
||||
- name: Ensure nonposix group is present
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
nonposix: true
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Set group to be external
|
||||
- name: Ensure nonposix group is present, again
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
nonposix: true
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure nonposix group is external
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external: true
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Add AD users to group
|
||||
- name: Ensure nonposix group has AD users
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external_member: "AD\\Domain Users"
|
||||
external_member: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Add AD users to group, again
|
||||
- name: Ensure nonposix group has AD users, again
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external_member: "AD\\Domain Users"
|
||||
external_member: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Remove external group
|
||||
- name: Ensure nonposix group is absent.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Add nonposix, external group, with AD users.
|
||||
- name: Ensure nonposix group is absent, again.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
nonposix: true
|
||||
external: true
|
||||
external_member: "AD\\Domain Users"
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Add nonposix, external group, with AD users, again.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
nonposix: true
|
||||
external: true
|
||||
external_member: "AD\\Domain Users"
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Remove group
|
||||
- name: Ensure external group is present, with AD users.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external: true
|
||||
external_member: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure external group is present, with AD alternate users.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external: true
|
||||
external_member: "{{ alt_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure external group is present, with AD users, again.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external: true
|
||||
external_member: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure external group is absent
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Add nonposix group.
|
||||
- name: Ensure external group is absent, again
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure nonposix group is present.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
nonposix: true
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Set group to be external, and add users.
|
||||
- name: Ensure group is external, and has AD users.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external: true
|
||||
external_member: "AD\\Domain Users"
|
||||
external_member: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Set group to be external, and add users, again.
|
||||
- name: Ensure group is external, and has AD alternate users.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external: true
|
||||
external_member: "AD\\Domain Users"
|
||||
external_member: "{{ alt_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure group is external, and has AD users, again.
|
||||
ipagroup:
|
||||
name: extgroup
|
||||
external: true
|
||||
external_member: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
@@ -117,7 +156,7 @@
|
||||
- name: Ensure external group members are present
|
||||
ipagroup:
|
||||
name: extgroup_members
|
||||
external_member: "AD\\Domain Users"
|
||||
external_member: "{{ ad_user }}"
|
||||
action: member
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
@@ -125,7 +164,7 @@
|
||||
- name: Ensure external group members are present, again
|
||||
ipagroup:
|
||||
name: extgroup_members
|
||||
external_member: "AD\\Domain Users"
|
||||
external_member: "{{ ad_user }}"
|
||||
action: member
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
@@ -133,16 +172,25 @@
|
||||
- name: Ensure external group members are absent
|
||||
ipagroup:
|
||||
name: extgroup_members
|
||||
external_member: "AD\\Domain Users"
|
||||
external_member: "{{ ad_user }}"
|
||||
action: member
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Ensure external group alternate members are absent
|
||||
ipagroup:
|
||||
name: extgroup_members
|
||||
external_member: "{{ alt_user }}"
|
||||
action: member
|
||||
state: absent
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure external group members are absent, again
|
||||
ipagroup:
|
||||
name: extgroup_members
|
||||
external_member: "AD\\Domain Users"
|
||||
external_member: "{{ ad_user }}"
|
||||
action: member
|
||||
state: absent
|
||||
register: result
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
---
|
||||
- name: Test group
|
||||
- name: Test group idoverrideuser
|
||||
hosts: ipaserver
|
||||
become: yes
|
||||
gather_facts: yes
|
||||
become: false
|
||||
gather_facts: false
|
||||
module_defaults:
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
ipaidoverrideuser:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
|
||||
vars:
|
||||
ad_user: "{{ test_ad_user | default('AD\\aduser') }}"
|
||||
ad_domain: "{{ test_ad_domain | default('ad.ipa.test') }}"
|
||||
ad_user: "{{ test_ad_user | default('AD\\aduser') }}"
|
||||
alt_user: "{{ test_alt_user | default('aduser@ad.ipa.test') }}"
|
||||
|
||||
tasks:
|
||||
- name: Include tasks ../env_freeipa_facts.yml
|
||||
@@ -15,38 +20,42 @@
|
||||
- name: Execute tests if ipa_verison >= 4.8.7 and trust test environment is supported
|
||||
when: ipa_version is version("4.8.7", ">=") and trust_test_is_supported | default(false)
|
||||
block:
|
||||
- name: Create idoverrideuser.
|
||||
ansible.builtin.shell: |
|
||||
kinit -c idoverride_cache admin <<< SomeADMINpassword
|
||||
ipa idoverrideuser-add "Default Trust View" {{ ad_user }}
|
||||
kdestroy -A -q -c idoverride_cache
|
||||
- name: Ensure test idoverrideuser is present
|
||||
ipaidoverrideuser:
|
||||
idview: "Default Trust View"
|
||||
anchor: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed and "no modifications to be performed" not in result.msg
|
||||
|
||||
- name: Remove testing groups.
|
||||
- name: Ensure test groups are absent
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
name:
|
||||
- idovergroup
|
||||
- idovergroup
|
||||
state: absent
|
||||
|
||||
- name: Add group with idoverrideuser.
|
||||
- name: Ensure group with idoverrideuser is present.
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
name: idovergroup
|
||||
idoverrideuser: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Add group with idoverrideuser, again.
|
||||
- name: Ensure group with idoverrideuser is present, again.
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
name: idovergroup
|
||||
idoverrideuser: "{{ ad_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Remove idoverrideuser member.
|
||||
- name: Ensure group with alternative idoverrideuser is present.
|
||||
ipagroup:
|
||||
name: idovergroup
|
||||
idoverrideuser: "{{ alt_user }}"
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Ensure idoverrideuser member is absent.
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
name: idovergroup
|
||||
idoverrideuser: "{{ ad_user }}"
|
||||
action: member
|
||||
@@ -54,9 +63,8 @@
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Remove idoverrideuser member, again.
|
||||
- name: Ensure idoverrideuser member is absent, again.
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
name: idovergroup
|
||||
idoverrideuser: "{{ ad_user }}"
|
||||
action: member
|
||||
@@ -64,7 +72,7 @@
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Add idoverrideuser member.
|
||||
- name: Ensure idoverrideuser member is present.
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
name: idovergroup
|
||||
@@ -73,7 +81,7 @@
|
||||
register: result
|
||||
failed_when: result.failed or not result.changed
|
||||
|
||||
- name: Add idoverrideuser member, again.
|
||||
- name: Ensure idoverrideuser member is present, again.
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
name: idovergroup
|
||||
@@ -82,24 +90,17 @@
|
||||
register: result
|
||||
failed_when: result.failed or result.changed
|
||||
|
||||
- name: Cleanup idoverrideuser member.
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
name: idovergroup
|
||||
idoverrideuser: "{{ ad_user }}"
|
||||
state: absent
|
||||
|
||||
- name: Remove testing groups.
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
name:
|
||||
- idovergroup
|
||||
state: absent
|
||||
|
||||
always:
|
||||
- name: Remove testing groups.
|
||||
ipagroup:
|
||||
ipaadmin_password: SomeADMINpassword
|
||||
name:
|
||||
- idovergroup
|
||||
state: absent
|
||||
|
||||
- name: Remove idoverrideuser.
|
||||
ansible.builtin.shell:
|
||||
cmd: |
|
||||
kinit -c idoverride_cache admin <<< SomeADMINpassword
|
||||
ipa idoverrideuser-del "Default Trust View" {{ ad_user }}
|
||||
kdestroy -A -q -c idoverride_cache
|
||||
ipaidoverrideuser:
|
||||
idview: "Default Trust View"
|
||||
anchor: "{{ ad_user }}"
|
||||
continue: true
|
||||
state: absent
|
||||
|
||||
Reference in New Issue
Block a user