mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-05-14 13:32:10 +00:00
Compare commits
29 Commits
t-woerner-
...
fix_image_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
408aa69ab0 | ||
|
|
f24390473b | ||
|
|
b598470c2b | ||
|
|
2e5a826ddb | ||
|
|
0e7f4e2b1b | ||
|
|
7a23531047 | ||
|
|
3c666ccdaa | ||
|
|
976cd1baa7 | ||
|
|
5bed0d627b | ||
|
|
630c378ab1 | ||
|
|
0447143047 | ||
|
|
6e45d1ea06 | ||
|
|
be27a615d0 | ||
|
|
e2c6480fe0 | ||
|
|
873b69107e | ||
|
|
e2cb68de54 | ||
|
|
be1720e9ea | ||
|
|
90779ed7ab | ||
|
|
141554bd3d | ||
|
|
dff921039d | ||
|
|
2cc4c27fa3 | ||
|
|
38b3e817ad | ||
|
|
a292645a01 | ||
|
|
6ffc51a75f | ||
|
|
b738085ba4 | ||
|
|
9e912d2bd9 | ||
|
|
71c0972b69 | ||
|
|
5537492f7f | ||
|
|
0cfd07a709 |
@@ -3,7 +3,7 @@ driver:
|
|||||||
name: docker
|
name: docker
|
||||||
platforms:
|
platforms:
|
||||||
- name: centos-8-build
|
- name: centos-8-build
|
||||||
image: centos:8
|
image: "centos:centos8"
|
||||||
pre_build_image: true
|
pre_build_image: true
|
||||||
hostname: ipaserver.test.local
|
hostname: ipaserver.test.local
|
||||||
dns_servers:
|
dns_servers:
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ driver:
|
|||||||
name: docker
|
name: docker
|
||||||
platforms:
|
platforms:
|
||||||
- name: fedora-latest-build
|
- name: fedora-latest-build
|
||||||
image: fedora-latest
|
image: "fedora:latest"
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
hostname: ipaserver.test.local
|
hostname: ipaserver.test.local
|
||||||
dns_servers:
|
dns_servers:
|
||||||
|
|||||||
@@ -25,3 +25,4 @@
|
|||||||
ipadm_password: SomeDMpassword
|
ipadm_password: SomeDMpassword
|
||||||
ipaserver_domain: test.local
|
ipaserver_domain: test.local
|
||||||
ipaserver_realm: TEST.LOCAL
|
ipaserver_realm: TEST.LOCAL
|
||||||
|
ipaclient_no_ntp: yes
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Ensure permission TestPerm1 is absent
|
- name: Ensure permission is absent
|
||||||
ipapermission:
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: TestPerm1
|
name: TestPerm1
|
||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,12 @@
|
|||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Ensure permission TestPerm2 is present with Read rights to employeenumber
|
- name: Ensure permission is present with set of rights to attribute employeenumber
|
||||||
ipapermission:
|
ipapermission:
|
||||||
name: TestPerm2
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: TestPerm1
|
||||||
object_type: user
|
object_type: user
|
||||||
perm_rights:
|
right:
|
||||||
- read
|
- read
|
||||||
- search
|
- search
|
||||||
- compare
|
- compare
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Ensure privilege User Administrators privilege is absent on Permission TestPerm1
|
- name: Ensure permission privilege, "User Administrators", is absent
|
||||||
ipapermission:
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: TestPerm1
|
name: TestPerm1
|
||||||
privilege: "User Administrators"
|
privilege: "User Administrators"
|
||||||
action: member
|
action: member
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Ensure permission TestPerm1 is present with the User Administrators privilege present
|
- name: Ensure permission is present with "User Administrators" privilege
|
||||||
ipapermission:
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: TestPerm1
|
name: TestPerm1
|
||||||
privilege: "User Administrators"
|
privilege: "User Administrators"
|
||||||
action: member
|
action: member
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Ensure permission TestPerm1 is present
|
- name: Ensure permission is present
|
||||||
ipapermission:
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: TestPerm1
|
name: TestPerm1
|
||||||
object_type: host
|
object_type: host
|
||||||
perm_rights: all
|
right: all
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Ensure permission TestPerm1 is present
|
- name: Ensure permission TestPerm1 is renamed to TestPermRenamed
|
||||||
ipapermission:
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: TestPerm1
|
name: TestPerm1
|
||||||
rename: TestPermRenamed
|
rename: TestPermRenamed
|
||||||
state: renamed
|
state: renamed
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
- name: Delegation absent
|
- name: Selfservice absent
|
||||||
hosts: ipaserver
|
hosts: ipaserver
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Ensure delegation "basic manager attributes" is absent
|
- name: Ensure selfservice "basic manager attributes" is absent
|
||||||
ipadelegation:
|
ipaselfservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "basic manager attributes"
|
name: "basic manager attributes"
|
||||||
state: absent
|
state: absent
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
---
|
---
|
||||||
- name: Delegation member absent
|
- name: Selfservice member absent
|
||||||
hosts: ipaserver
|
hosts: ipaserver
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Ensure delegation "basic manager attributes" member attributes employeenumber and employeetype are absent
|
- name: Ensure selfservice "basic manager attributes" member attributes employeenumber and employeetype are absent
|
||||||
ipadelegation:
|
ipaselfservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "basic manager attributes"
|
name: "basic manager attributes"
|
||||||
attribute:
|
attribute:
|
||||||
- employeenumber
|
- businesscategory
|
||||||
- employeetype
|
- departmentnumber
|
||||||
action: member
|
action: member
|
||||||
state: absent
|
state: absent
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
- name: Delegation member present
|
- name: Selfservice member present
|
||||||
hosts: ipaserver
|
hosts: ipaserver
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Ensure delegation "basic manager attributes" member attribute departmentnumber is present
|
- name: Ensure selfservice "basic manager attributes" member attribute departmentnumber is present
|
||||||
ipadelegation:
|
ipaselfservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "basic manager attributes"
|
name: "basic manager attributes"
|
||||||
attribute:
|
attribute:
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
- name: Delegation present
|
- name: Selfservice present
|
||||||
hosts: ipaserver
|
hosts: ipaserver
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Ensure delegation "basic manager attributes" is present
|
- name: Ensure selfservice "basic manager attributes" is present
|
||||||
ipadelegation:
|
ipaselfservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "basic manager attributes"
|
name: "basic manager attributes"
|
||||||
permission: read
|
permission: read
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- copy:
|
- copy:
|
||||||
src: "{{ playbook_dir }}/password.txt"
|
src: "{{ playbook_dir }}/password.txt"
|
||||||
dest: "{{ ansible_env.HOME }}/password.txt"
|
dest: "{{ ansible_facts['env'].HOME }}/password.txt"
|
||||||
owner: "{{ ansible_user }}"
|
owner: "{{ ansible_user }}"
|
||||||
group: "{{ ansible_user }}"
|
group: "{{ ansible_user }}"
|
||||||
mode: 0600
|
mode: 0600
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
name: symvault
|
name: symvault
|
||||||
username: admin
|
username: admin
|
||||||
vault_type: symmetric
|
vault_type: symmetric
|
||||||
vault_password_file: "{{ ansible_env.HOME }}/password.txt"
|
vault_password_file: "{{ ansible_facts['env'].HOME }}/password.txt"
|
||||||
- file:
|
- file:
|
||||||
path: "{{ ansible_env.HOME }}/password.txt"
|
path: "{{ ansible_facts['env'].HOME }}/password.txt"
|
||||||
state: absent
|
state: absent
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- copy:
|
- copy:
|
||||||
src: "{{ playbook_dir }}/public.pem"
|
src: "{{ playbook_dir }}/public.pem"
|
||||||
dest: "{{ ansible_env.HOME }}/public.pem"
|
dest: "{{ ansible_facts['env'].HOME }}/public.pem"
|
||||||
owner: "{{ ansible_user }}"
|
owner: "{{ ansible_user }}"
|
||||||
group: "{{ ansible_user }}"
|
group: "{{ ansible_user }}"
|
||||||
mode: 0600
|
mode: 0600
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
name: asymvault
|
name: asymvault
|
||||||
username: admin
|
username: admin
|
||||||
vault_type: asymmetric
|
vault_type: asymmetric
|
||||||
vault_public_key_file: "{{ ansible_env.HOME }}/public.pem"
|
vault_public_key_file: "{{ ansible_facts['env'].HOME }}/public.pem"
|
||||||
- file:
|
- file:
|
||||||
path: "{{ ansible_env.HOME }}/public.pem"
|
path: "{{ ansible_facts['env'].HOME }}/public.pem"
|
||||||
state: absent
|
state: absent
|
||||||
|
|||||||
@@ -1350,8 +1350,6 @@ def define_commands_for_present_state(module, zone_name, entry, res_find):
|
|||||||
module, zone_name, name, args[record])
|
module, zone_name, name, args[record])
|
||||||
_commands.extend(cmds)
|
_commands.extend(cmds)
|
||||||
del args['%s_extra_create_reverse' % ipv]
|
del args['%s_extra_create_reverse' % ipv]
|
||||||
if '%s_ip_address' not in args:
|
|
||||||
del args[record]
|
|
||||||
for record, fields in _RECORD_PARTS.items():
|
for record, fields in _RECORD_PARTS.items():
|
||||||
part_fields = [f for f in fields if f in args]
|
part_fields = [f for f in fields if f in args]
|
||||||
if part_fields:
|
if part_fields:
|
||||||
|
|||||||
@@ -277,10 +277,8 @@ def main():
|
|||||||
ansible_module.fail_json(
|
ansible_module.fail_json(
|
||||||
msg="Only one permission can be added at a time.")
|
msg="Only one permission can be added at a time.")
|
||||||
if action == "member":
|
if action == "member":
|
||||||
invalid = ["right", "bindtype", "subtree",
|
invalid = ["bindtype", "target", "targetto", "targetfrom",
|
||||||
"extra_target_filter", "rawfilter", "target",
|
"subtree", "targetgroup", "object_type", "rename"]
|
||||||
"targetto", "targetfrom", "memberof", "targetgroup",
|
|
||||||
"object_type", "rename"]
|
|
||||||
else:
|
else:
|
||||||
invalid = ["rename"]
|
invalid = ["rename"]
|
||||||
|
|
||||||
@@ -299,13 +297,12 @@ def main():
|
|||||||
if state == "absent":
|
if state == "absent":
|
||||||
if len(names) < 1:
|
if len(names) < 1:
|
||||||
ansible_module.fail_json(msg="No name given.")
|
ansible_module.fail_json(msg="No name given.")
|
||||||
invalid = ["right",
|
invalid = ["bindtype", "subtree", "target", "targetto",
|
||||||
"bindtype", "subtree",
|
"targetfrom", "targetgroup", "object_type",
|
||||||
"extra_target_filter", "rawfilter", "target", "targetto",
|
|
||||||
"targetfrom", "memberof", "targetgroup", "object_type",
|
|
||||||
"no_members", "rename"]
|
"no_members", "rename"]
|
||||||
if action != "member":
|
if action != "member":
|
||||||
invalid += ["attrs"]
|
invalid += ["right", "attrs", "memberof",
|
||||||
|
"extra_target_filter", "rawfilter"]
|
||||||
|
|
||||||
for x in invalid:
|
for x in invalid:
|
||||||
if vars()[x] is not None:
|
if vars()[x] is not None:
|
||||||
@@ -317,6 +314,11 @@ def main():
|
|||||||
ansible_module.fail_json(
|
ansible_module.fail_json(
|
||||||
msg="Bindtype 'self' is not supported by your IPA version.")
|
msg="Bindtype 'self' is not supported by your IPA version.")
|
||||||
|
|
||||||
|
if all([extra_target_filter, rawfilter]):
|
||||||
|
ansible_module.fail_json(
|
||||||
|
msg="Cannot specify target filter and extra target filter "
|
||||||
|
"simultaneously.")
|
||||||
|
|
||||||
# Init
|
# Init
|
||||||
|
|
||||||
changed = False
|
changed = False
|
||||||
@@ -359,16 +361,31 @@ def main():
|
|||||||
ansible_module.fail_json(
|
ansible_module.fail_json(
|
||||||
msg="No permission '%s'" % name)
|
msg="No permission '%s'" % name)
|
||||||
|
|
||||||
# attrs
|
member_attrs = {}
|
||||||
if attrs is not None:
|
check_members = {
|
||||||
_attrs = list(set(list(res_find["attrs"]) + attrs))
|
"attrs": attrs,
|
||||||
if len(_attrs) > len(res_find["attrs"]):
|
"memberof": memberof,
|
||||||
commands.append([name, "permission_mod",
|
"ipapermright": right,
|
||||||
{"attrs": _attrs}])
|
"ipapermtargetfilter": rawfilter,
|
||||||
|
"extratargetfilter": extra_target_filter,
|
||||||
|
# subtree member management is currently disabled.
|
||||||
|
# "ipapermlocation": subtree,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _member, _member_change in check_members.items():
|
||||||
|
if _member_change is not None:
|
||||||
|
_res_list = res_find[_member]
|
||||||
|
_new_set = set(_res_list + _member_change)
|
||||||
|
if _new_set != set(_res_list):
|
||||||
|
member_attrs[_member] = list(_new_set)
|
||||||
|
|
||||||
|
if member_attrs:
|
||||||
|
commands.append([name, "permission_mod", member_attrs])
|
||||||
|
|
||||||
else:
|
else:
|
||||||
ansible_module.fail_json(
|
ansible_module.fail_json(
|
||||||
msg="Unknown action '%s'" % action)
|
msg="Unknown action '%s'" % action)
|
||||||
|
|
||||||
elif state == "renamed":
|
elif state == "renamed":
|
||||||
if action == "permission":
|
if action == "permission":
|
||||||
# Generate args
|
# Generate args
|
||||||
@@ -393,6 +410,7 @@ def main():
|
|||||||
else:
|
else:
|
||||||
ansible_module.fail_json(
|
ansible_module.fail_json(
|
||||||
msg="Unknown action '%s'" % action)
|
msg="Unknown action '%s'" % action)
|
||||||
|
|
||||||
elif state == "absent":
|
elif state == "absent":
|
||||||
if action == "permission":
|
if action == "permission":
|
||||||
if res_find is not None:
|
if res_find is not None:
|
||||||
@@ -403,20 +421,26 @@ def main():
|
|||||||
ansible_module.fail_json(
|
ansible_module.fail_json(
|
||||||
msg="No permission '%s'" % name)
|
msg="No permission '%s'" % name)
|
||||||
|
|
||||||
# attrs
|
member_attrs = {}
|
||||||
if attrs is not None:
|
check_members = {
|
||||||
# New attribute list (remove given ones from find
|
"attrs": attrs,
|
||||||
# result)
|
"memberof": memberof,
|
||||||
# Make list with unique entries
|
"ipapermright": right,
|
||||||
_attrs = list(set(res_find["attrs"]) - set(attrs))
|
"ipapermtargetfilter": rawfilter,
|
||||||
if len(_attrs) < 1:
|
"extratargetfilter": extra_target_filter,
|
||||||
ansible_module.fail_json(
|
# subtree member management is currently disabled.
|
||||||
msg="At minimum one attribute is needed.")
|
# "ipapermlocation": subtree,
|
||||||
|
}
|
||||||
|
|
||||||
# Entries New number of attributes is smaller
|
for _member, _member_change in check_members.items():
|
||||||
if len(_attrs) < len(res_find["attrs"]):
|
if _member_change is not None:
|
||||||
commands.append([name, "permission_mod",
|
_res_set = set(res_find[_member])
|
||||||
{"attrs": _attrs}])
|
_new_set = _res_set - set(_member_change)
|
||||||
|
if _new_set != _res_set:
|
||||||
|
member_attrs[_member] = list(_new_set)
|
||||||
|
|
||||||
|
if member_attrs:
|
||||||
|
commands.append([name, "permission_mod", member_attrs])
|
||||||
|
|
||||||
else:
|
else:
|
||||||
ansible_module.fail_json(msg="Unknown state '%s'" % state)
|
ansible_module.fail_json(msg="Unknown state '%s'" % state)
|
||||||
|
|||||||
@@ -429,16 +429,16 @@ def main():
|
|||||||
|
|
||||||
# Generate addition and removal lists
|
# Generate addition and removal lists
|
||||||
host_add, host_del = gen_add_del_lists(
|
host_add, host_del = gen_add_del_lists(
|
||||||
host, res_find.get('member_host', []))
|
host, res_find.get('memberhost_host', []))
|
||||||
|
|
||||||
hostgroup_add, hostgroup_del = gen_add_del_lists(
|
hostgroup_add, hostgroup_del = gen_add_del_lists(
|
||||||
hostgroup, res_find.get('member_hostgroup', []))
|
hostgroup, res_find.get('memberhost_hostgroup', []))
|
||||||
|
|
||||||
user_add, user_del = gen_add_del_lists(
|
user_add, user_del = gen_add_del_lists(
|
||||||
user, res_find.get('member_user', []))
|
user, res_find.get('memberuser_user', []))
|
||||||
|
|
||||||
group_add, group_del = gen_add_del_lists(
|
group_add, group_del = gen_add_del_lists(
|
||||||
group, res_find.get('member_group', []))
|
group, res_find.get('memberuser_group', []))
|
||||||
|
|
||||||
allow_cmd_add, allow_cmd_del = gen_add_del_lists(
|
allow_cmd_add, allow_cmd_del = gen_add_del_lists(
|
||||||
allow_sudocmd,
|
allow_sudocmd,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
set_fact:
|
set_fact:
|
||||||
ipabackup_controller_dir:
|
ipabackup_controller_dir:
|
||||||
"{{ ipabackup_controller_path | default(lookup('env','PWD')) }}/{{
|
"{{ ipabackup_controller_path | default(lookup('env','PWD')) }}/{{
|
||||||
ipabackup_name_prefix | default(ansible_fqdn) }}_{{
|
ipabackup_name_prefix | default(ansible_facts['fqdn']) }}_{{
|
||||||
ipabackup_item }}/"
|
ipabackup_item }}/"
|
||||||
|
|
||||||
- name: Stat backup on server
|
- name: Stat backup on server
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
- name: Get IPA_BACKUP_DIR dir from ipaplatform
|
- name: Get IPA_BACKUP_DIR dir from ipaplatform
|
||||||
command: "{{ ansible_playbook_python }}"
|
command: "{{ ansible_python_interpreter | default('/usr/bin/python') }}"
|
||||||
args:
|
args:
|
||||||
stdin: |
|
stdin: |
|
||||||
from ipaplatform.paths import paths
|
from ipaplatform.paths import paths
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
- name: Import variables specific to distribution
|
- name: Import variables specific to distribution
|
||||||
include_vars: "{{ item }}"
|
include_vars: "{{ item }}"
|
||||||
with_first_found:
|
with_first_found:
|
||||||
- "{{ role_path }}/vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
|
- "{{ role_path }}/vars/{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_version'] }}.yml"
|
||||||
- "{{ role_path }}/vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"
|
- "{{ role_path }}/vars/{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_major_version'] }}.yml"
|
||||||
- "{{ role_path }}/vars/{{ ansible_distribution }}.yml"
|
- "{{ role_path }}/vars/{{ ansible_facts['distribution'] }}.yml"
|
||||||
- "{{ role_path }}/vars/default.yml"
|
- "{{ role_path }}/vars/default.yml"
|
||||||
|
|
||||||
### GET SERVICES FROM BACKUP
|
### GET SERVICES FROM BACKUP
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
domain: "{{ ipaserver_domain | default(ipaclient_domain) | default(omit) }}"
|
domain: "{{ ipaserver_domain | default(ipaclient_domain) | default(omit) }}"
|
||||||
servers: "{{ ipaclient_servers | default(omit) }}"
|
servers: "{{ ipaclient_servers | default(omit) }}"
|
||||||
realm: "{{ ipaserver_realm | default(ipaclient_realm) | default(omit) }}"
|
realm: "{{ ipaserver_realm | default(ipaclient_realm) | default(omit) }}"
|
||||||
hostname: "{{ ipaclient_hostname | default(ansible_fqdn) }}"
|
hostname: "{{ ipaclient_hostname | default(ansible_facts['fqdn']) }}"
|
||||||
ntp_servers: "{{ ipaclient_ntp_servers | default(omit) }}"
|
ntp_servers: "{{ ipaclient_ntp_servers | default(omit) }}"
|
||||||
ntp_pool: "{{ ipaclient_ntp_pool | default(omit) }}"
|
ntp_pool: "{{ ipaclient_ntp_pool | default(omit) }}"
|
||||||
no_ntp: "{{ ipaclient_no_ntp }}"
|
no_ntp: "{{ ipaclient_no_ntp }}"
|
||||||
@@ -181,8 +181,12 @@
|
|||||||
# Do not fail on error codes 3 and 5:
|
# Do not fail on error codes 3 and 5:
|
||||||
# 3 - Unable to open keytab
|
# 3 - Unable to open keytab
|
||||||
# 5 - Principal name or realm not found in keytab
|
# 5 - Principal name or realm not found in keytab
|
||||||
|
# 7 - Failed to set cursor, typically when errcode
|
||||||
|
# would be issued in past
|
||||||
failed_when: result_ipa_rmkeytab.rc != 0 and
|
failed_when: result_ipa_rmkeytab.rc != 0 and
|
||||||
result_ipa_rmkeytab.rc != 3 and result_ipa_rmkeytab.rc != 5
|
result_ipa_rmkeytab.rc != 3 and
|
||||||
|
result_ipa_rmkeytab.rc != 5 and
|
||||||
|
result_ipa_rmkeytab.rc != 7
|
||||||
when: (ipaclient_use_otp | bool or ipaclient_force_join | bool) and not ipaclient_on_master | bool
|
when: (ipaclient_use_otp | bool or ipaclient_force_join | bool) and not ipaclient_on_master | bool
|
||||||
|
|
||||||
- name: Install - Backup and set hostname
|
- name: Install - Backup and set hostname
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
- name: Import variables specific to distribution
|
- name: Import variables specific to distribution
|
||||||
include_vars: "{{ item }}"
|
include_vars: "{{ item }}"
|
||||||
with_first_found:
|
with_first_found:
|
||||||
- "{{ role_path }}/vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
|
- "{{ role_path }}/vars/{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_version'] }}.yml"
|
||||||
- "{{ role_path }}/vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"
|
- "{{ role_path }}/vars/{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_major_version'] }}.yml"
|
||||||
- "{{ role_path }}/vars/{{ ansible_distribution }}.yml"
|
- "{{ role_path }}/vars/{{ ansible_facts['distribution'] }}.yml"
|
||||||
- "{{ role_path }}/vars/default.yml"
|
- "{{ role_path }}/vars/default.yml"
|
||||||
|
|
||||||
- name: Install IPA client
|
- name: Install IPA client
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
default(omit) }}"
|
default(omit) }}"
|
||||||
servers: "{{ ipareplica_servers | default(omit) }}"
|
servers: "{{ ipareplica_servers | default(omit) }}"
|
||||||
realm: "{{ ipareplica_realm | default(ipaserver_realm) |default(omit) }}"
|
realm: "{{ ipareplica_realm | default(ipaserver_realm) |default(omit) }}"
|
||||||
hostname: "{{ ipareplica_hostname | default(ansible_fqdn) }}"
|
hostname: "{{ ipareplica_hostname | default(ansible_facts['fqdn']) }}"
|
||||||
ca_cert_files: "{{ ipareplica_ca_cert_files | default([]) }}"
|
ca_cert_files: "{{ ipareplica_ca_cert_files | default([]) }}"
|
||||||
hidden_replica: "{{ ipareplica_hidden_replica }}"
|
hidden_replica: "{{ ipareplica_hidden_replica }}"
|
||||||
skip_mem_check: "{{ not ipareplica_mem_check }}"
|
skip_mem_check: "{{ not ipareplica_mem_check }}"
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
- name: Import variables specific to distribution
|
- name: Import variables specific to distribution
|
||||||
include_vars: "{{ item }}"
|
include_vars: "{{ item }}"
|
||||||
with_first_found:
|
with_first_found:
|
||||||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
|
- "vars/{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_version'] }}.yml"
|
||||||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"
|
- "vars/{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_major_version'] }}.yml"
|
||||||
- "vars/{{ ansible_distribution }}.yml"
|
- "vars/{{ ansible_facts['distribution'] }}.yml"
|
||||||
- "vars/default.yml"
|
- "vars/default.yml"
|
||||||
|
|
||||||
- name: Install IPA replica
|
- name: Install IPA replica
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
# command: >
|
# command: >
|
||||||
# /usr/sbin/ipa-replica-manage
|
# /usr/sbin/ipa-replica-manage
|
||||||
# del
|
# del
|
||||||
# {{ ipareplica_hostname | default(ansible_fqdn) }}
|
# {{ ipareplica_hostname | default(ansible_facts['fqdn']) }}
|
||||||
# --force
|
# --force
|
||||||
# --password={{ ipadm_password }}
|
# --password={{ ipadm_password }}
|
||||||
# failed_when: False
|
# failed_when: False
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
master_password: "{{ ipaserver_master_password | default(omit) }}"
|
master_password: "{{ ipaserver_master_password | default(omit) }}"
|
||||||
domain: "{{ ipaserver_domain | default(omit) }}"
|
domain: "{{ ipaserver_domain | default(omit) }}"
|
||||||
realm: "{{ ipaserver_realm | default(omit) }}"
|
realm: "{{ ipaserver_realm | default(omit) }}"
|
||||||
hostname: "{{ ipaserver_hostname | default(ansible_fqdn) }}"
|
hostname: "{{ ipaserver_hostname | default(ansible_facts['fqdn']) }}"
|
||||||
ca_cert_files: "{{ ipaserver_ca_cert_files | default(omit) }}"
|
ca_cert_files: "{{ ipaserver_ca_cert_files | default(omit) }}"
|
||||||
no_host_dns: "{{ ipaserver_no_host_dns }}"
|
no_host_dns: "{{ ipaserver_no_host_dns }}"
|
||||||
pki_config_override: "{{ ipaserver_pki_config_override | default(omit) }}"
|
pki_config_override: "{{ ipaserver_pki_config_override | default(omit) }}"
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
- name: Import variables specific to distribution
|
- name: Import variables specific to distribution
|
||||||
include_vars: "{{ item }}"
|
include_vars: "{{ item }}"
|
||||||
with_first_found:
|
with_first_found:
|
||||||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_version }}.yml"
|
- "vars/{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_version'] }}.yml"
|
||||||
- "vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml"
|
- "vars/{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_major_version'] }}.yml"
|
||||||
- "vars/{{ ansible_distribution }}.yml"
|
- "vars/{{ ansible_facts['distribution'] }}.yml"
|
||||||
- "vars/default.yml"
|
- "vars/default.yml"
|
||||||
|
|
||||||
- name: Install IPA server
|
- name: Install IPA server
|
||||||
|
|||||||
@@ -3,3 +3,4 @@ roles_path = ../roles:~/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/rol
|
|||||||
library = ../plugins/modules:~/.ansible/plugins/modules:/usr/share/ansible/plugins/modules
|
library = ../plugins/modules:~/.ansible/plugins/modules:/usr/share/ansible/plugins/modules
|
||||||
module_utils = ../plugins/module_utils:~/.ansible/plugins/module_utils:/usr/share/ansible/plugins/module_utils
|
module_utils = ../plugins/module_utils:~/.ansible/plugins/module_utils:/usr/share/ansible/plugins/module_utils
|
||||||
host_key_checking = false
|
host_key_checking = false
|
||||||
|
inject_facts_as_vars = false
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ trigger:
|
|||||||
- master
|
- master
|
||||||
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'ubuntu-18.04'
|
vmImage: 'ubuntu-20.04'
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- stage: Centos7
|
- stage: Centos7
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ schedules:
|
|||||||
trigger: none
|
trigger: none
|
||||||
|
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'ubuntu-18.04'
|
vmImage: 'ubuntu-20.04'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ jobs:
|
|||||||
inputs:
|
inputs:
|
||||||
versionSpec: '3.6'
|
versionSpec: '3.6'
|
||||||
|
|
||||||
- script: python -m pip install --upgrade pip setuptools wheel
|
- script: python -m pip install --upgrade pip setuptools wheel ansible
|
||||||
displayName: Install tools
|
displayName: Install tools
|
||||||
|
|
||||||
- script: pip install molecule[docker]
|
- script: pip install molecule[docker]
|
||||||
@@ -23,6 +23,8 @@ jobs:
|
|||||||
|
|
||||||
- script: molecule create -s ${{ parameters.build_scenario_name }}
|
- script: molecule create -s ${{ parameters.build_scenario_name }}
|
||||||
displayName: Create test container
|
displayName: Create test container
|
||||||
|
env:
|
||||||
|
ANSIBLE_LIBRARY: ./molecule
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
docker stop ${{ parameters.build_scenario_name }}
|
docker stop ${{ parameters.build_scenario_name }}
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ jobs:
|
|||||||
cp -a plugins/module_utils/* ~/.ansible/module_utils
|
cp -a plugins/module_utils/* ~/.ansible/module_utils
|
||||||
molecule create -s ${{ parameters.scenario }}
|
molecule create -s ${{ parameters.scenario }}
|
||||||
displayName: Setup test container
|
displayName: Setup test container
|
||||||
|
env:
|
||||||
|
ANSIBLE_LIBRARY: ./molecule
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
pytest \
|
pytest \
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ jobs:
|
|||||||
cp -a plugins/module_utils/* ~/.ansible/module_utils
|
cp -a plugins/module_utils/* ~/.ansible/module_utils
|
||||||
molecule create -s ${{ parameters.scenario }}
|
molecule create -s ${{ parameters.scenario }}
|
||||||
displayName: Setup test container
|
displayName: Setup test container
|
||||||
|
env:
|
||||||
|
ANSIBLE_LIBRARY: ./molecule
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
pytest \
|
pytest \
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
# Set common vars and facts for test.
|
# Set common vars and facts for test.
|
||||||
- name: Set IPv4 address prefix.
|
- name: Set IPv4 address prefix.
|
||||||
set_fact:
|
set_fact:
|
||||||
ipv4_prefix: "{{ ansible_default_ipv4.address.split('.')[:-1] |
|
ipv4_prefix: "{{ ansible_facts['default_ipv4'].address.split('.')[:-1] |
|
||||||
join('.') }}"
|
join('.') }}"
|
||||||
ipv4_reverse_sufix: "{{ ansible_default_ipv4.address.split('.')[:-1] |
|
ipv4_reverse_sufix: "{{ ansible_facts['default_ipv4'].address.split('.')[:-1] |
|
||||||
reverse |
|
reverse |
|
||||||
join('.') }}"
|
join('.') }}"
|
||||||
|
|
||||||
|
|||||||
@@ -29,26 +29,32 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: host01
|
name: host01
|
||||||
zone_name: testzone.local
|
zone_name: testzone.local
|
||||||
record_type: 'AAAA'
|
del_all: yes
|
||||||
record_value: '::1'
|
|
||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
- name: Ensure that dns record 'vm-001' is absent
|
- name: Ensure that dns records for 'vm-001' are absent
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: vm-001
|
name: vm-001
|
||||||
zone_name: testzone.local
|
zone_name: testzone.local
|
||||||
record_type: 'AAAA'
|
del_all: yes
|
||||||
record_value: '::1'
|
state: absent
|
||||||
|
|
||||||
|
- name: Ensure a PTR record is absent for 'vm-001'
|
||||||
|
ipadnsrecord:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: '1'
|
||||||
|
record_type: 'PTR'
|
||||||
|
record_value: 'vm-001'
|
||||||
|
zone_name: 2.168.192.in-addr.arpa
|
||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
- name: Ensure a PTR record is absent
|
- name: Ensure a PTR record is absent
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: 5
|
|
||||||
record_type: 'PTR'
|
|
||||||
record_value: 'internal.ipa.testzone.local'
|
|
||||||
zone_name: 2.168.192.in-addr.arpa
|
zone_name: 2.168.192.in-addr.arpa
|
||||||
|
name: "5"
|
||||||
|
del_all: yes
|
||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
- name: Ensure a TXT record is absent
|
- name: Ensure a TXT record is absent
|
||||||
@@ -79,7 +85,7 @@
|
|||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
# tests
|
# tests
|
||||||
- name: Ensure dns record is present
|
- name: Ensure AAAA dns record is present
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: vm-001
|
name: vm-001
|
||||||
@@ -88,9 +94,9 @@
|
|||||||
zone_name: testzone.local
|
zone_name: testzone.local
|
||||||
state: present
|
state: present
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure that dns record exists with a TTL
|
- name: Ensure that AAAA dns record exists with a TTL
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: host01
|
name: host01
|
||||||
@@ -100,18 +106,52 @@
|
|||||||
zone_name: testzone.local
|
zone_name: testzone.local
|
||||||
state: present
|
state: present
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure a PTR record is present
|
- name: Ensure a PTR record is present
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: 5
|
name: '5'
|
||||||
record_type: 'PTR'
|
record_type: 'PTR'
|
||||||
record_value: 'internal.ipa.testzone.local'
|
record_value: 'internal.ipa.testzone.local'
|
||||||
zone_name: 2.168.192.in-addr.arpa
|
zone_name: 2.168.192.in-addr.arpa
|
||||||
state: present
|
state: present
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure A record is present, with reverse
|
||||||
|
ipadnsrecord:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: vm-001
|
||||||
|
record_type: 'A'
|
||||||
|
record_value: '192.168.2.1'
|
||||||
|
create_reverse: yes
|
||||||
|
zone_name: testzone.local
|
||||||
|
state: present
|
||||||
|
register: result
|
||||||
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure A record is present
|
||||||
|
ipadnsrecord:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: vm-001
|
||||||
|
record_type: 'A'
|
||||||
|
record_value: '192.168.2.1'
|
||||||
|
zone_name: testzone.local
|
||||||
|
state: present
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure PTR record is present
|
||||||
|
ipadnsrecord:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: '1'
|
||||||
|
record_type: 'PTR'
|
||||||
|
record_value: vm-001.testzone.local
|
||||||
|
zone_name: 2.168.192.in-addr.arpa
|
||||||
|
state: present
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure a TXT record is present
|
- name: Ensure a TXT record is present
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
@@ -122,7 +162,7 @@
|
|||||||
zone_name: testzone.local
|
zone_name: testzone.local
|
||||||
state: present
|
state: present
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure a SRV record is present
|
- name: Ensure a SRV record is present
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
@@ -133,7 +173,7 @@
|
|||||||
zone_name: testzone.local
|
zone_name: testzone.local
|
||||||
state: present
|
state: present
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure an MX record is present
|
- name: Ensure an MX record is present
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
@@ -144,7 +184,7 @@
|
|||||||
zone_name: testzone.local
|
zone_name: testzone.local
|
||||||
state: present
|
state: present
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure that dns record is removed
|
- name: Ensure that dns record is removed
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
@@ -155,7 +195,7 @@
|
|||||||
record_value: '::1'
|
record_value: '::1'
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
# cleanup
|
# cleanup
|
||||||
- name: Ensure that dns record 'host01' is absent
|
- name: Ensure that dns record 'host01' is absent
|
||||||
@@ -167,7 +207,7 @@
|
|||||||
record_value: '::1'
|
record_value: '::1'
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure that dns record 'vm-001' is absent
|
- name: Ensure that dns record 'vm-001' is absent
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
@@ -178,7 +218,7 @@
|
|||||||
record_value: '::1'
|
record_value: '::1'
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure a PTR record is absent
|
- name: Ensure a PTR record is absent
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
@@ -189,7 +229,7 @@
|
|||||||
zone_name: 2.168.192.in-addr.arpa
|
zone_name: 2.168.192.in-addr.arpa
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure a TXT record is absent
|
- name: Ensure a TXT record is absent
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
@@ -200,7 +240,7 @@
|
|||||||
zone_name: testzone.local
|
zone_name: testzone.local
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure a SRV record is absent
|
- name: Ensure a SRV record is absent
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
@@ -211,7 +251,7 @@
|
|||||||
zone_name: testzone.local
|
zone_name: testzone.local
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure an MX record is absent
|
- name: Ensure an MX record is absent
|
||||||
ipadnsrecord:
|
ipadnsrecord:
|
||||||
@@ -222,7 +262,7 @@
|
|||||||
zone_name: testzone.local
|
zone_name: testzone.local
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure DNS zones to be used are absent.
|
- name: Ensure DNS zones to be used are absent.
|
||||||
ipadnszone:
|
ipadnszone:
|
||||||
|
|||||||
@@ -564,7 +564,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: iron01
|
name: iron01
|
||||||
zone_name: "{{ safezone }}"
|
zone_name: "{{ safezone }}"
|
||||||
ip_address: "{{ ansible_default_ipv4.address }}"
|
ip_address: "{{ ansible_facts['default_ipv4'].address }}"
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
# CLEANUP TEST ITEMS
|
# CLEANUP TEST ITEMS
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Generate self-signed certificates.
|
- name: Generate self-signed certificates.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Host test absent
|
- name: Host test absent
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn .. host6_fqdn
|
- name: Set host1_fqdn .. host6_fqdn
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
- name: Get IPv4 address prefix from server node
|
- name: Get IPv4 address prefix from server node
|
||||||
set_fact:
|
set_fact:
|
||||||
ipv4_prefix: "{{ ansible_default_ipv4.address.split('.')[:-1] |
|
ipv4_prefix: "{{ ansible_facts['default_ipv4'].address.split('.')[:-1] |
|
||||||
join('.') }}"
|
join('.') }}"
|
||||||
|
|
||||||
- name: Host "{{ host1_fqdn }}" present
|
- name: Host "{{ host1_fqdn }}" present
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Get Realm from server name
|
- name: Get Realm from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_realm: "{{ ansible_fqdn.split('.')[1:] | join ('.') | upper }}"
|
ipaserver_realm: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') | upper }}"
|
||||||
when: ipaserver_realm is not defined
|
when: ipaserver_realm is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn .. host3_fqdn
|
- name: Set host1_fqdn .. host3_fqdn
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Get Realm from server name
|
- name: Get Realm from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_realm: "{{ ansible_fqdn.split('.')[1:] | join ('.') | upper }}"
|
ipaserver_realm: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') | upper }}"
|
||||||
when: ipaserver_realm is not defined
|
when: ipaserver_realm is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn .. host3_fqdn
|
- name: Set host1_fqdn .. host3_fqdn
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn .. host6_fqdn
|
- name: Set host1_fqdn .. host6_fqdn
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn .. host6_fqdn
|
- name: Set host1_fqdn .. host6_fqdn
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
- name: Get IPv4 address prefix from server node
|
- name: Get IPv4 address prefix from server node
|
||||||
set_fact:
|
set_fact:
|
||||||
ipv4_prefix: "{{ ansible_default_ipv4.address.split('.')[:-1] |
|
ipv4_prefix: "{{ ansible_facts['default_ipv4'].address.split('.')[:-1] |
|
||||||
join('.') }}"
|
join('.') }}"
|
||||||
|
|
||||||
- name: Host absent
|
- name: Host absent
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn .. host2_fqdn
|
- name: Set host1_fqdn .. host2_fqdn
|
||||||
@@ -55,39 +55,39 @@
|
|||||||
register: result
|
register: result
|
||||||
failed_when: result.changed
|
failed_when: result.changed
|
||||||
|
|
||||||
- name: Host "{{ host1_fqdn }}" managed by "{{ ansible_fqdn }}"
|
- name: Host "{{ host1_fqdn }}" managed by "{{ ansible_facts['fqdn'] }}"
|
||||||
ipahost:
|
ipahost:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{ host1_fqdn }}"
|
name: "{{ host1_fqdn }}"
|
||||||
managedby_host: "{{ ansible_fqdn }}"
|
managedby_host: "{{ ansible_facts['fqdn'] }}"
|
||||||
action: member
|
action: member
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
|
|
||||||
- name: Host "{{ host1_fqdn }}" managed by "{{ ansible_fqdn }}" again
|
- name: Host "{{ host1_fqdn }}" managed by "{{ ansible_facts['fqdn'] }}" again
|
||||||
ipahost:
|
ipahost:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{ host1_fqdn }}"
|
name: "{{ host1_fqdn }}"
|
||||||
managedby_host: "{{ ansible_fqdn }}"
|
managedby_host: "{{ ansible_facts['fqdn'] }}"
|
||||||
action: member
|
action: member
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed
|
failed_when: result.changed
|
||||||
|
|
||||||
- name: Host "{{ host1_fqdn }}" not managed by "{{ ansible_fqdn }}"
|
- name: Host "{{ host1_fqdn }}" not managed by "{{ ansible_facts['fqdn'] }}"
|
||||||
ipahost:
|
ipahost:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{ host1_fqdn }}"
|
name: "{{ host1_fqdn }}"
|
||||||
managedby_host: "{{ ansible_fqdn }}"
|
managedby_host: "{{ ansible_facts['fqdn'] }}"
|
||||||
action: member
|
action: member
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
|
|
||||||
- name: Host "{{ host1_fqdn }}" not managed by "{{ ansible_fqdn }}" again
|
- name: Host "{{ host1_fqdn }}" not managed by "{{ ansible_facts['fqdn'] }}" again
|
||||||
ipahost:
|
ipahost:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{ host1_fqdn }}"
|
name: "{{ host1_fqdn }}"
|
||||||
managedby_host: "{{ ansible_fqdn }}"
|
managedby_host: "{{ ansible_facts['fqdn'] }}"
|
||||||
action: member
|
action: member
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Get Realm from server name
|
- name: Get Realm from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_realm: "{{ ansible_fqdn.split('.')[1:] | join ('.') | upper }}"
|
ipaserver_realm: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') | upper }}"
|
||||||
when: ipaserver_realm is not defined
|
when: ipaserver_realm is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn
|
- name: Set host1_fqdn
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn and host2_fqdn
|
- name: Set host1_fqdn and host2_fqdn
|
||||||
@@ -77,11 +77,11 @@
|
|||||||
debug:
|
debug:
|
||||||
var: ipahost.host["{{host2_fqdn }}"].randompassword
|
var: ipahost.host["{{host2_fqdn }}"].randompassword
|
||||||
|
|
||||||
- name: Enrolled host "{{ ansible_fqdn }}" fails to set random password with update_password always
|
- name: Enrolled host "{{ ansible_facts['fqdn'] }}" fails to set random password with update_password always
|
||||||
ipahost:
|
ipahost:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
hosts:
|
hosts:
|
||||||
- name: "{{ ansible_fqdn }}"
|
- name: "{{ ansible_facts['fqdn'] }}"
|
||||||
random: yes
|
random: yes
|
||||||
update_password: always
|
update_password: always
|
||||||
register: ipahost
|
register: ipahost
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
|
|
||||||
- assert:
|
- assert:
|
||||||
that:
|
that:
|
||||||
- ipahost.host["{{ ansible_fqdn }}"].randompassword is
|
- ipahost.host["{{ ansible_facts['fqdn'] }}"].randompassword is
|
||||||
not defined
|
not defined
|
||||||
- "'Password cannot be set on enrolled host' in ipahost.msg"
|
- "'Password cannot be set on enrolled host' in ipahost.msg"
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn
|
- name: Set host1_fqdn
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
- name: Get IPv4 address prefix from server node
|
- name: Get IPv4 address prefix from server node
|
||||||
set_fact:
|
set_fact:
|
||||||
ipv4_prefix: "{{ ansible_default_ipv4.address.split('.')[:-1] |
|
ipv4_prefix: "{{ ansible_facts['default_ipv4'].address.split('.')[:-1] |
|
||||||
join('.') }}"
|
join('.') }}"
|
||||||
|
|
||||||
- name: Set zone prefixes.
|
- name: Set zone prefixes.
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn .. host6_fqdn
|
- name: Set host1_fqdn .. host6_fqdn
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn .. host5_fqdn
|
- name: Set host1_fqdn .. host5_fqdn
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Get Realm from server name
|
- name: Get Realm from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_realm: "{{ ansible_fqdn.split('.')[1:] | join ('.') | upper }}"
|
ipaserver_realm: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') | upper }}"
|
||||||
when: ipaserver_realm is not defined
|
when: ipaserver_realm is not defined
|
||||||
|
|
||||||
- name: Set host1_fqdn .. host2_fqdn
|
- name: Set host1_fqdn .. host2_fqdn
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Ensure host-group databases, mysql-server and oracle-server are absent
|
- name: Ensure host-group databases, mysql-server and oracle-server are absent
|
||||||
|
|||||||
@@ -6,6 +6,15 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- include_tasks: ../env_freeipa_facts.yml
|
- include_tasks: ../env_freeipa_facts.yml
|
||||||
|
|
||||||
|
- name: Ensure testing groups are present.
|
||||||
|
ipagroup:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: present
|
||||||
|
with_items:
|
||||||
|
- rbacgroup1
|
||||||
|
- rbacgroup2
|
||||||
|
|
||||||
# CLEANUP TEST ITEMS
|
# CLEANUP TEST ITEMS
|
||||||
|
|
||||||
- name: Ensure permission perm-test-1 is absent
|
- name: Ensure permission perm-test-1 is absent
|
||||||
@@ -24,6 +33,8 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: perm-test-1
|
name: perm-test-1
|
||||||
object_type: host
|
object_type: host
|
||||||
|
memberof: rbacgroup1
|
||||||
|
filter: '(cn=*.ipa.*)'
|
||||||
right: all
|
right: all
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed or result.failed
|
failed_when: not result.changed or result.failed
|
||||||
@@ -33,10 +44,106 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: perm-test-1
|
name: perm-test-1
|
||||||
object_type: host
|
object_type: host
|
||||||
|
memberof: rbacgroup1
|
||||||
|
filter: '(cn=*.ipa.*)'
|
||||||
right: all
|
right: all
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 has an extra filter '(cn=*.internal.*)'
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
filter: '(cn=*.internal.*)'
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 has an extra filter '(cn=*.internal.*)', again
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
filter: '(cn=*.internal.*)'
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 `right` has `write`
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
right: write
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 `right` has `write`, again
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
right: write
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 `right` has no `write`
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
right: write
|
||||||
|
action: member
|
||||||
|
state: absent
|
||||||
|
register: result
|
||||||
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 `right` has no `write`, again
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
right: write
|
||||||
|
action: member
|
||||||
|
state: absent
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 `memberof` has `rbackgroup2`
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
memberof: rbacgroup2
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 `memberof` has `rbackgroup2`, again
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
memberof: rbacgroup2
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 `memberof` item `rbackgroup1` is absent
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
memberof: rbacgroup1
|
||||||
|
action: member
|
||||||
|
state: absent
|
||||||
|
register: result
|
||||||
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 `memberof` item `rbackgroup1` is absent, again
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
memberof: rbacgroup1
|
||||||
|
action: member
|
||||||
|
state: absent
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
- name: Ensure permission perm-test-1 is present with attr carlicense
|
- name: Ensure permission perm-test-1 is present with attr carlicense
|
||||||
ipapermission:
|
ipapermission:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
@@ -163,6 +270,34 @@
|
|||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 has rawfilter '(objectclass=ipagroup)'
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
rawfilter: '(objectclass=ipagroup)'
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure permission perm-test-1 has rawfilter '(objectclass=ipagroup)', again
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
rawfilter: '(objectclass=ipagroup)'
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
|
- name: Ensure filter and rawfilter cannot be used together.
|
||||||
|
ipapermission:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: perm-test-1
|
||||||
|
rawfilter: '(objectclass=ipagroup)'
|
||||||
|
filter: '(cn=*.internal.*)'
|
||||||
|
action: member
|
||||||
|
register: result
|
||||||
|
failed_when: not result.failed or "Cannot specify target filter and extra target filter simultaneously" not in result.msg
|
||||||
|
|
||||||
- name: Rename permission perm-test-1 to perm-test-renamed
|
- name: Rename permission perm-test-1 to perm-test-renamed
|
||||||
ipapermission:
|
ipapermission:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
@@ -213,7 +348,7 @@
|
|||||||
|
|
||||||
# CLEANUP TEST ITEMS
|
# CLEANUP TEST ITEMS
|
||||||
|
|
||||||
- name: Ensure permission perm-test-1 is absent
|
- name: Ensure testing permissions are absent
|
||||||
ipapermission:
|
ipapermission:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name:
|
name:
|
||||||
@@ -221,3 +356,12 @@
|
|||||||
- perm-test-bindtype-test
|
- perm-test-bindtype-test
|
||||||
- perm-test-renamed
|
- perm-test-renamed
|
||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
|
- name: Ensure testing groups are absent.
|
||||||
|
ipagroup:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: absent
|
||||||
|
with_items:
|
||||||
|
- rbacgroup1
|
||||||
|
- rbacgroup2
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Set fact for realm name
|
- name: Set fact for realm name
|
||||||
|
|||||||
@@ -29,12 +29,12 @@
|
|||||||
# setup
|
# setup
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
when: ipaserver_domain is not defined
|
when: ipaserver_domain is not defined
|
||||||
|
|
||||||
- name: Get IPv4 address prefix from server node
|
- name: Get IPv4 address prefix from server node
|
||||||
set_fact:
|
set_fact:
|
||||||
ipv4_prefix: "{{ ansible_default_ipv4.address.split('.')[:-1] |
|
ipv4_prefix: "{{ ansible_facts['default_ipv4'].address.split('.')[:-1] |
|
||||||
join('.') }}"
|
join('.') }}"
|
||||||
|
|
||||||
- name: Set test host FQDN
|
- name: Set test host FQDN
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
- name: Get Domain from server name
|
- name: Get Domain from server name
|
||||||
set_fact:
|
set_fact:
|
||||||
test_domain: "{{ ansible_fqdn.split('.')[1:] | join('.') }}"
|
test_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join('.') }}"
|
||||||
|
|
||||||
- name: Set host1, host2 and svc hosts fqdn
|
- name: Set host1, host2 and svc hosts fqdn
|
||||||
set_fact:
|
set_fact:
|
||||||
@@ -12,4 +12,4 @@
|
|||||||
|
|
||||||
- name: Get IPv4 address prefix from server node
|
- name: Get IPv4 address prefix from server node
|
||||||
set_fact:
|
set_fact:
|
||||||
ipv4_prefix: "{{ ansible_default_ipv4.address.split('.')[:-1] | join('.') }}"
|
ipv4_prefix: "{{ ansible_facts['default_ipv4'].address.split('.')[:-1] | join('.') }}"
|
||||||
|
|||||||
@@ -19,13 +19,13 @@
|
|||||||
- name: Ensure service is absent
|
- name: Ensure service is absent
|
||||||
ipaservice:
|
ipaservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "mysvc1/{{ ansible_fqdn }}"
|
name: "mysvc1/{{ ansible_facts['fqdn'] }}"
|
||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
- name: Ensure service is present
|
- name: Ensure service is present
|
||||||
ipaservice:
|
ipaservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "mysvc1/{{ ansible_fqdn }}"
|
name: "mysvc1/{{ ansible_facts['fqdn'] }}"
|
||||||
certificate:
|
certificate:
|
||||||
- MIIC/zCCAeegAwIBAgIUMNHIbn+hhrOVew/2WbkteisV29QwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0yMDAyMDQxNDQxMDhaFw0zMDAyMDExNDQxMDhaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+XVVGFYpHVkcDfVnNInE1Y/pFciegdzqTjMwUWlRL4Zt3u96GhaMLRbtk+OfEkzLUAhWBOwEraELJzMLJOMvjYF3C+TiGO7dStFLikZmccuSsSIXjnzIPwBXa8KvgRVRyGLoVvGbLJvmjfMXp0nIToTx/i74KF9S++WEes9H5ErJ99CDhLKFgq0amnvsgparYXhypHaRLnikn0vQINt55YoEd1s4KrvEcD2VdZkIMPbLRu2zFvMprF3cjQQG4LT9ggfEXNIPZ1nQWAnAsu7OJEkNF+E4Mkmpcxj9aGUVt5bsq1D+Tzj3GsidSX0nSNcZ2JltXRnL/5v63g5cZyE+nAgMBAAGjUzBRMB0GA1UdDgQWBBRV0j7JYukuH/r/t9+QeNlRLXDlEDAfBgNVHSMEGDAWgBRV0j7JYukuH/r/t9+QeNlRLXDlEDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCgVy1+1kNwHs5y1Zp0WjMWGCJC6/zw7FDG4OW5r2GJiCXZYdJ0UonY9ZtoVLJPrp2/DAv1m5DtnDhBYqicuPgLzEkOS1KdTi20Otm/J4yxLLrZC5W4x0XOeSVPXOJuQWfwQ5pPvKkn6WxYUYkGwIt1OH2nSMngkbami3CbSmKZOCpgQIiSlQeDJ8oGjWFMLDymYSHoVOIXHwNoooyEiaio3693l6noobyGv49zyCVLVR1DC7i6RJ186ql0av+D4vPoiF5mX7+sKC2E8xEj9uKQ5GTWRh59VnRBVC/SiMJ/H78tJnBAvoBwXxSEvj8Z3Kjm/BQqZfv4IBsA5yqV7MVq
|
- MIIC/zCCAeegAwIBAgIUMNHIbn+hhrOVew/2WbkteisV29QwDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0yMDAyMDQxNDQxMDhaFw0zMDAyMDExNDQxMDhaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+XVVGFYpHVkcDfVnNInE1Y/pFciegdzqTjMwUWlRL4Zt3u96GhaMLRbtk+OfEkzLUAhWBOwEraELJzMLJOMvjYF3C+TiGO7dStFLikZmccuSsSIXjnzIPwBXa8KvgRVRyGLoVvGbLJvmjfMXp0nIToTx/i74KF9S++WEes9H5ErJ99CDhLKFgq0amnvsgparYXhypHaRLnikn0vQINt55YoEd1s4KrvEcD2VdZkIMPbLRu2zFvMprF3cjQQG4LT9ggfEXNIPZ1nQWAnAsu7OJEkNF+E4Mkmpcxj9aGUVt5bsq1D+Tzj3GsidSX0nSNcZ2JltXRnL/5v63g5cZyE+nAgMBAAGjUzBRMB0GA1UdDgQWBBRV0j7JYukuH/r/t9+QeNlRLXDlEDAfBgNVHSMEGDAWgBRV0j7JYukuH/r/t9+QeNlRLXDlEDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCgVy1+1kNwHs5y1Zp0WjMWGCJC6/zw7FDG4OW5r2GJiCXZYdJ0UonY9ZtoVLJPrp2/DAv1m5DtnDhBYqicuPgLzEkOS1KdTi20Otm/J4yxLLrZC5W4x0XOeSVPXOJuQWfwQ5pPvKkn6WxYUYkGwIt1OH2nSMngkbami3CbSmKZOCpgQIiSlQeDJ8oGjWFMLDymYSHoVOIXHwNoooyEiaio3693l6noobyGv49zyCVLVR1DC7i6RJ186ql0av+D4vPoiF5mX7+sKC2E8xEj9uKQ5GTWRh59VnRBVC/SiMJ/H78tJnBAvoBwXxSEvj8Z3Kjm/BQqZfv4IBsA5yqV7MVq
|
||||||
force: no
|
force: no
|
||||||
@@ -33,51 +33,51 @@
|
|||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
|
|
||||||
- name: Obtain keytab
|
- name: Obtain keytab
|
||||||
shell: ipa-getkeytab -s "{{ ansible_fqdn }}" -p "mysvc1/{{ ansible_fqdn }}" -k mysvc1.keytab
|
shell: ipa-getkeytab -s "{{ ansible_facts['fqdn'] }}" -p "mysvc1/{{ ansible_facts['fqdn'] }}" -k mysvc1.keytab
|
||||||
|
|
||||||
- name: Verify keytab
|
- name: Verify keytab
|
||||||
shell: ipa service-find "mysvc1/{{ ansible_fqdn }}"
|
shell: ipa service-find "mysvc1/{{ ansible_facts['fqdn'] }}"
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or result.stdout | regex_search(" Keytab. true")
|
failed_when: result.failed or result.stdout | regex_search(" Keytab. true")
|
||||||
|
|
||||||
- name: Ensure service is disabled
|
- name: Ensure service is disabled
|
||||||
ipaservice:
|
ipaservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "mysvc1/{{ ansible_fqdn }}"
|
name: "mysvc1/{{ ansible_facts['fqdn'] }}"
|
||||||
state: disabled
|
state: disabled
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
|
|
||||||
- name: Verify keytab
|
- name: Verify keytab
|
||||||
shell: ipa service-find "mysvc1/{{ ansible_fqdn }}"
|
shell: ipa service-find "mysvc1/{{ ansible_facts['fqdn'] }}"
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or result.stdout | regex_search(" Keytab. true")
|
failed_when: result.failed or result.stdout | regex_search(" Keytab. true")
|
||||||
|
|
||||||
- name: Obtain keytab
|
- name: Obtain keytab
|
||||||
shell: ipa-getkeytab -s "{{ ansible_fqdn }}" -p "mysvc1/{{ ansible_fqdn }}" -k mysvc1.keytab
|
shell: ipa-getkeytab -s "{{ ansible_facts['fqdn'] }}" -p "mysvc1/{{ ansible_facts['fqdn'] }}" -k mysvc1.keytab
|
||||||
|
|
||||||
- name: Verify keytab
|
- name: Verify keytab
|
||||||
shell: ipa service-find "mysvc1/{{ ansible_fqdn }}"
|
shell: ipa service-find "mysvc1/{{ ansible_facts['fqdn'] }}"
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or result.stdout | regex_search(" Keytab. true")
|
failed_when: result.failed or result.stdout | regex_search(" Keytab. true")
|
||||||
|
|
||||||
- name: Ensure service is disabled
|
- name: Ensure service is disabled
|
||||||
ipaservice:
|
ipaservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "mysvc1/{{ ansible_fqdn }}"
|
name: "mysvc1/{{ ansible_facts['fqdn'] }}"
|
||||||
state: disabled
|
state: disabled
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
|
|
||||||
- name: Verify keytab
|
- name: Verify keytab
|
||||||
shell: ipa service-find "mysvc1/{{ ansible_fqdn }}"
|
shell: ipa service-find "mysvc1/{{ ansible_facts['fqdn'] }}"
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or result.stdout | regex_search(" Keytab. true")
|
failed_when: result.failed or result.stdout | regex_search(" Keytab. true")
|
||||||
|
|
||||||
- name: Ensure service is disabled, with no keytab.
|
- name: Ensure service is disabled, with no keytab.
|
||||||
ipaservice:
|
ipaservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "mysvc1/{{ ansible_fqdn }}"
|
name: "mysvc1/{{ ansible_facts['fqdn'] }}"
|
||||||
state: disabled
|
state: disabled
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed
|
failed_when: result.changed
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
- name: Ensure service is absent
|
- name: Ensure service is absent
|
||||||
ipaservice:
|
ipaservice:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "mysvc1/{{ ansible_fqdn }}"
|
name: "mysvc1/{{ ansible_facts['fqdn'] }}"
|
||||||
|
|
||||||
- name: Destroy Kerberos tickets.
|
- name: Destroy Kerberos tickets.
|
||||||
shell: kdestroy -A -q -c ${KRB5CCNAME}
|
shell: kdestroy -A -q -c ${KRB5CCNAME}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
ipahostgroup:
|
ipahostgroup:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: cluster
|
name: cluster
|
||||||
host: "{{ ansible_fqdn }}"
|
host: "{{ ansible_facts['fqdn'] }}"
|
||||||
|
|
||||||
- name: Ensure some sudocmds are available
|
- name: Ensure some sudocmds are available
|
||||||
ipasudocmd:
|
ipasudocmd:
|
||||||
@@ -500,20 +500,20 @@
|
|||||||
register: result
|
register: result
|
||||||
failed_when: result.changed
|
failed_when: result.changed
|
||||||
|
|
||||||
- name: Ensure host "{{ ansible_fqdn }}" is present in sudorule.
|
- name: Ensure host "{{ ansible_facts['fqdn'] }}" is present in sudorule.
|
||||||
ipasudorule:
|
ipasudorule:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: testrule1
|
name: testrule1
|
||||||
host: "{{ ansible_fqdn }}"
|
host: "{{ ansible_facts['fqdn'] }}"
|
||||||
action: member
|
action: member
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
|
|
||||||
- name: Ensure host "{{ ansible_fqdn }}" is present in sudorule, again.
|
- name: Ensure host "{{ ansible_facts['fqdn'] }}" is present in sudorule, again.
|
||||||
ipasudorule:
|
ipasudorule:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: testrule1
|
name: testrule1
|
||||||
host: "{{ ansible_fqdn }}"
|
host: "{{ ansible_facts['fqdn'] }}"
|
||||||
action: member
|
action: member
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed
|
failed_when: result.changed
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- name: Get Domain from the server name
|
- name: Get Domain from the server name
|
||||||
set_fact:
|
set_fact:
|
||||||
ipaserver_domain: "{{ ansible_fqdn.split('.')[1:] | join ('.') }}"
|
ipaserver_domain: "{{ ansible_facts['fqdn'].split('.')[1:] | join ('.') }}"
|
||||||
|
|
||||||
- name: Ensure sudorules are absent
|
- name: Ensure sudorules are absent
|
||||||
ipasudorule:
|
ipasudorule:
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
- name: Remove files from target host.
|
- name: Remove files from target host.
|
||||||
file:
|
file:
|
||||||
path: "{{ ansible_env.HOME }}/{{ item }}"
|
path: "{{ ansible_facts['env'].HOME }}/{{ item }}"
|
||||||
state: absent
|
state: absent
|
||||||
with_items:
|
with_items:
|
||||||
- A_private.pem
|
- A_private.pem
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
- name: Copy files to target host.
|
- name: Copy files to target host.
|
||||||
copy:
|
copy:
|
||||||
src: "{{ playbook_dir }}/{{ item }}"
|
src: "{{ playbook_dir }}/{{ item }}"
|
||||||
dest: "{{ ansible_env.HOME }}/{{ item }}"
|
dest: "{{ ansible_facts['env'].HOME }}/{{ item }}"
|
||||||
with_items:
|
with_items:
|
||||||
- A_private.pem
|
- A_private.pem
|
||||||
- A_public.pem
|
- A_public.pem
|
||||||
|
|||||||
@@ -151,7 +151,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{vault.name}}"
|
name: "{{vault.name}}"
|
||||||
action: member
|
action: member
|
||||||
services: "HTTP/{{ ansible_fqdn }}"
|
services: "HTTP/{{ ansible_facts['fqdn'] }}"
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{vault.name}}"
|
name: "{{vault.name}}"
|
||||||
action: member
|
action: member
|
||||||
services: "HTTP/{{ ansible_fqdn }}"
|
services: "HTTP/{{ ansible_facts['fqdn'] }}"
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed
|
failed_when: result.changed
|
||||||
|
|
||||||
@@ -169,7 +169,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{vault.name}}"
|
name: "{{vault.name}}"
|
||||||
action: member
|
action: member
|
||||||
services: "HTTP/{{ ansible_fqdn }}"
|
services: "HTTP/{{ ansible_facts['fqdn'] }}"
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
@@ -179,7 +179,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{vault.name}}"
|
name: "{{vault.name}}"
|
||||||
action: member
|
action: member
|
||||||
services: "HTTP/{{ ansible_fqdn }}"
|
services: "HTTP/{{ ansible_facts['fqdn'] }}"
|
||||||
state: absent
|
state: absent
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed
|
failed_when: result.changed
|
||||||
@@ -264,7 +264,7 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{vault.name}}"
|
name: "{{vault.name}}"
|
||||||
ownerservices: "HTTP/{{ ansible_fqdn }}"
|
ownerservices: "HTTP/{{ ansible_facts['fqdn'] }}"
|
||||||
action: member
|
action: member
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
@@ -273,7 +273,7 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{vault.name}}"
|
name: "{{vault.name}}"
|
||||||
ownerservices: "HTTP/{{ ansible_fqdn }}"
|
ownerservices: "HTTP/{{ ansible_facts['fqdn'] }}"
|
||||||
action: member
|
action: member
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed
|
failed_when: result.changed
|
||||||
@@ -282,7 +282,7 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{vault.name}}"
|
name: "{{vault.name}}"
|
||||||
ownerservices: "HTTP/{{ ansible_fqdn }}"
|
ownerservices: "HTTP/{{ ansible_facts['fqdn'] }}"
|
||||||
state: absent
|
state: absent
|
||||||
action: member
|
action: member
|
||||||
register: result
|
register: result
|
||||||
@@ -292,7 +292,7 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: "{{vault.name}}"
|
name: "{{vault.name}}"
|
||||||
ownerservices: "HTTP/{{ ansible_fqdn }}"
|
ownerservices: "HTTP/{{ ansible_facts['fqdn'] }}"
|
||||||
state: absent
|
state: absent
|
||||||
action: member
|
action: member
|
||||||
register: result
|
register: result
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: asymvault
|
name: asymvault
|
||||||
vault_type: asymmetric
|
vault_type: asymmetric
|
||||||
public_key_file: "{{ ansible_env.HOME }}/A_public.pem"
|
public_key_file: "{{ ansible_facts['env'].HOME }}/A_public.pem"
|
||||||
private_key: "{{ lookup('file', 'B_private.b64') }}"
|
private_key: "{{ lookup('file', 'B_private.b64') }}"
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or not result.changed
|
failed_when: result.failed or not result.changed
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: asymvault
|
name: asymvault
|
||||||
private_key_file: "{{ ansible_env.HOME }}/A_private.pem"
|
private_key_file: "{{ ansible_facts['env'].HOME }}/A_private.pem"
|
||||||
state: retrieved
|
state: retrieved
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or result.changed or result.vault.data != 'SomeValue'
|
failed_when: result.failed or result.changed or result.vault.data != 'SomeValue'
|
||||||
@@ -87,8 +87,8 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: asymvault
|
name: asymvault
|
||||||
vault_type: asymmetric
|
vault_type: asymmetric
|
||||||
public_key_file: "{{ ansible_env.HOME }}/B_public.pem"
|
public_key_file: "{{ ansible_facts['env'].HOME }}/B_public.pem"
|
||||||
private_key_file: "{{ ansible_env.HOME }}/A_private.pem"
|
private_key_file: "{{ ansible_facts['env'].HOME }}/A_private.pem"
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or not result.changed
|
failed_when: result.failed or not result.changed
|
||||||
|
|
||||||
@@ -115,8 +115,8 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: asymvault
|
name: asymvault
|
||||||
public_key_file: "{{ ansible_env.HOME }}/B_public.pem"
|
public_key_file: "{{ ansible_facts['env'].HOME }}/B_public.pem"
|
||||||
private_key_file: "{{ ansible_env.HOME }}/A_private.pem"
|
private_key_file: "{{ ansible_facts['env'].HOME }}/A_private.pem"
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or not result.changed
|
failed_when: result.failed or not result.changed
|
||||||
|
|
||||||
@@ -154,11 +154,11 @@
|
|||||||
register: result
|
register: result
|
||||||
failed_when: result.vault.data != 'Hello World.' or result.changed
|
failed_when: result.vault.data != 'Hello World.' or result.changed
|
||||||
|
|
||||||
- name: Retrieve data from asymmetric vault into file {{ ansible_env.HOME }}/data.txt.
|
- name: Retrieve data from asymmetric vault into file {{ ansible_facts['env'].HOME }}/data.txt.
|
||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: asymvault
|
name: asymvault
|
||||||
out: "{{ ansible_env.HOME }}/data.txt"
|
out: "{{ ansible_facts['env'].HOME }}/data.txt"
|
||||||
private_key: "{{ lookup('file', 'B_private.b64') }}"
|
private_key: "{{ lookup('file', 'B_private.b64') }}"
|
||||||
state: retrieved
|
state: retrieved
|
||||||
register: result
|
register: result
|
||||||
@@ -166,7 +166,7 @@
|
|||||||
|
|
||||||
- name: Verify retrieved data.
|
- name: Verify retrieved data.
|
||||||
slurp:
|
slurp:
|
||||||
src: "{{ ansible_env.HOME }}/data.txt"
|
src: "{{ ansible_facts['env'].HOME }}/data.txt"
|
||||||
register: slurpfile
|
register: slurpfile
|
||||||
failed_when: slurpfile['content'] | b64decode != 'Hello World.'
|
failed_when: slurpfile['content'] | b64decode != 'Hello World.'
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: asymvault
|
name: asymvault
|
||||||
vault_type: asymmetric
|
vault_type: asymmetric
|
||||||
in: "{{ ansible_env.HOME }}/in.txt"
|
in: "{{ ansible_facts['env'].HOME }}/in.txt"
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: asymvault
|
name: asymvault
|
||||||
public_key_file: "{{ ansible_env.HOME }}/B_public.pem"
|
public_key_file: "{{ ansible_facts['env'].HOME }}/B_public.pem"
|
||||||
vault_type: asymmetric
|
vault_type: asymmetric
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
@@ -251,7 +251,7 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: asymvault
|
name: asymvault
|
||||||
public_key_file: "{{ ansible_env.HOME }}/B_public.pem"
|
public_key_file: "{{ ansible_facts['env'].HOME }}/B_public.pem"
|
||||||
vault_type: asymmetric
|
vault_type: asymmetric
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed
|
failed_when: result.changed
|
||||||
@@ -277,7 +277,7 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: asymvault
|
name: asymvault
|
||||||
private_key_file: "{{ ansible_env.HOME }}/B_private.pem"
|
private_key_file: "{{ ansible_facts['env'].HOME }}/B_private.pem"
|
||||||
state: retrieved
|
state: retrieved
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.vault.data != 'Hello World.' or result.changed
|
failed_when: result.vault.data != 'Hello World.' or result.changed
|
||||||
|
|||||||
@@ -57,18 +57,18 @@
|
|||||||
register: result
|
register: result
|
||||||
failed_when: result.vault.data != 'Hello World.' or result.changed
|
failed_when: result.vault.data != 'Hello World.' or result.changed
|
||||||
|
|
||||||
- name: Retrieve data from standard vault into file {{ ansible_env.HOME }}/data.txt.
|
- name: Retrieve data from standard vault into file {{ ansible_facts['env'].HOME }}/data.txt.
|
||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: stdvault
|
name: stdvault
|
||||||
out: "{{ ansible_env.HOME }}/data.txt"
|
out: "{{ ansible_facts['env'].HOME }}/data.txt"
|
||||||
state: retrieved
|
state: retrieved
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed or (result.vault.data | default(false))
|
failed_when: result.changed or result.failed or (result.vault.data | default(false))
|
||||||
|
|
||||||
- name: Verify retrieved data.
|
- name: Verify retrieved data.
|
||||||
slurp:
|
slurp:
|
||||||
src: "{{ ansible_env.HOME }}/data.txt"
|
src: "{{ ansible_facts['env'].HOME }}/data.txt"
|
||||||
register: slurpfile
|
register: slurpfile
|
||||||
failed_when: slurpfile['content'] | b64decode != 'Hello World.'
|
failed_when: slurpfile['content'] | b64decode != 'Hello World.'
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: stdvault
|
name: stdvault
|
||||||
vault_type: standard
|
vault_type: standard
|
||||||
in: "{{ ansible_env.HOME }}/in.txt"
|
in: "{{ ansible_facts['env'].HOME }}/in.txt"
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed
|
failed_when: not result.changed
|
||||||
|
|
||||||
|
|||||||
@@ -63,19 +63,19 @@
|
|||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed or result.vault.data != 'Hello World.'
|
failed_when: result.changed or result.failed or result.vault.data != 'Hello World.'
|
||||||
|
|
||||||
- name: Retrieve data from symmetric vault into file {{ ansible_env.HOME }}/data.txt.
|
- name: Retrieve data from symmetric vault into file {{ ansible_facts['env'].HOME }}/data.txt.
|
||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: symvault
|
name: symvault
|
||||||
password: SomeVAULTpassword
|
password: SomeVAULTpassword
|
||||||
out: "{{ ansible_env.HOME }}/data.txt"
|
out: "{{ ansible_facts['env'].HOME }}/data.txt"
|
||||||
state: retrieved
|
state: retrieved
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed or (result.vault.data | default(false))
|
failed_when: result.changed or result.failed or (result.vault.data | default(false))
|
||||||
|
|
||||||
- name: Verify retrieved data.
|
- name: Verify retrieved data.
|
||||||
slurp:
|
slurp:
|
||||||
src: "{{ ansible_env.HOME }}/data.txt"
|
src: "{{ ansible_facts['env'].HOME }}/data.txt"
|
||||||
register: slurpfile
|
register: slurpfile
|
||||||
failed_when: slurpfile['content'] | b64decode != 'Hello World.'
|
failed_when: slurpfile['content'] | b64decode != 'Hello World.'
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: symvault
|
name: symvault
|
||||||
in: "{{ ansible_env.HOME }}/in.txt"
|
in: "{{ ansible_facts['env'].HOME }}/in.txt"
|
||||||
password: SomeVAULTpassword
|
password: SomeVAULTpassword
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or not result.changed
|
failed_when: result.failed or not result.changed
|
||||||
@@ -154,7 +154,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: symvault
|
name: symvault
|
||||||
username: user01
|
username: user01
|
||||||
password_file: "{{ ansible_env.HOME }}/password.txt"
|
password_file: "{{ ansible_facts['env'].HOME }}/password.txt"
|
||||||
vault_type: symmetric
|
vault_type: symmetric
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or not result.changed
|
failed_when: result.failed or not result.changed
|
||||||
@@ -164,7 +164,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: symvault
|
name: symvault
|
||||||
username: user01
|
username: user01
|
||||||
password_file: "{{ ansible_env.HOME }}/password.txt"
|
password_file: "{{ ansible_facts['env'].HOME }}/password.txt"
|
||||||
vault_type: symmetric
|
vault_type: symmetric
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or result.changed
|
failed_when: result.failed or result.changed
|
||||||
@@ -191,7 +191,7 @@
|
|||||||
ipavault:
|
ipavault:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: symvault
|
name: symvault
|
||||||
password_file: "{{ ansible_env.HOME }}/password.txt"
|
password_file: "{{ ansible_facts['env'].HOME }}/password.txt"
|
||||||
state: retrieved
|
state: retrieved
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.failed or result.changed or result.vault.data != 'Hello World.'
|
failed_when: result.failed or result.changed or result.vault.data != 'Hello World.'
|
||||||
@@ -328,7 +328,7 @@
|
|||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: symvault
|
name: symvault
|
||||||
password: APasswordToChange
|
password: APasswordToChange
|
||||||
new_password_file: "{{ ansible_env.HOME }}/password.txt"
|
new_password_file: "{{ ansible_facts['env'].HOME }}/password.txt"
|
||||||
vault_type: symmetric
|
vault_type: symmetric
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed or result.failed
|
failed_when: not result.changed or result.failed
|
||||||
|
|||||||
@@ -15,49 +15,61 @@ find . -name "*~" -exec rm {} \;
|
|||||||
sed -i -e "s/ansible.module_utils.ansible_freeipa_module/ansible_collections.${collection_prefix}.plugins.module_utils.ansible_freeipa_module/" plugins/modules/*.py
|
sed -i -e "s/ansible.module_utils.ansible_freeipa_module/ansible_collections.${collection_prefix}.plugins.module_utils.ansible_freeipa_module/" plugins/modules/*.py
|
||||||
|
|
||||||
(cd plugins/module_utils && {
|
(cd plugins/module_utils && {
|
||||||
ln -s ../../roles/*/module_utils/*.py .
|
ln -sf ../../roles/*/module_utils/*.py .
|
||||||
})
|
})
|
||||||
|
|
||||||
(cd plugins/modules && {
|
(cd plugins/modules && {
|
||||||
sed -i -e "s/ansible.module_utils.ansible_ipa_/ansible_collections.${collection_prefix}.plugins.module_utils.ansible_ipa_/" ../../roles/*/library/*.py
|
sed -i -e "s/ansible.module_utils.ansible_ipa_/ansible_collections.${collection_prefix}.plugins.module_utils.ansible_ipa_/" ../../roles/*/library/*.py
|
||||||
ln -s ../../roles/*/library/*.py .
|
ln -sf ../../roles/*/library/*.py .
|
||||||
})
|
})
|
||||||
|
|
||||||
[ ! -x plugins/action_plugins ] && mkdir plugins/action_plugins
|
[ ! -x plugins/action_plugins ] && mkdir plugins/action_plugins
|
||||||
(cd plugins/action_plugins && {
|
(cd plugins/action_plugins && {
|
||||||
ln -s ../../roles/*/action_plugins/*.py .
|
ln -sf ../../roles/*/action_plugins/*.py .
|
||||||
})
|
})
|
||||||
|
|
||||||
|
echo "Fixing examples in plugins/modules..."
|
||||||
find plugins/modules -name "*.py" -print0 |
|
find plugins/modules -name "*.py" -print0 |
|
||||||
while IFS= read -d -r '' line; do
|
while IFS= read -d '' -r line; do
|
||||||
python utils/galaxyfy-module-EXAMPLES.py "$x" \
|
python utils/galaxyfy-module-EXAMPLES.py "$line" \
|
||||||
"ipa" "$collection_prefix"
|
"ipa" "$collection_prefix"
|
||||||
done
|
done
|
||||||
|
echo -e "\033[AFixing examples in plugins/modules... \033[32;1mDONE\033[0m"
|
||||||
|
|
||||||
|
echo "Fixing examples in roles/*/library..."
|
||||||
find roles/*/library -name "*.py" -print0 |
|
find roles/*/library -name "*.py" -print0 |
|
||||||
while IFS= read -d -r '' line; do
|
while IFS= read -d '' -r line; do
|
||||||
python utils/galaxyfy-module-EXAMPLES.py "$x" \
|
python utils/galaxyfy-module-EXAMPLES.py "$line" \
|
||||||
"ipa" "$collection_prefix"
|
"ipa" "$collection_prefix"
|
||||||
done
|
done
|
||||||
|
echo -e "\033[AFixing examples in roles/*/library... \033[32;1mDONE\033[0m"
|
||||||
|
|
||||||
for x in roles/*/tasks/*.yml; do
|
echo "Fixing playbooks in roles/*/tasks..."
|
||||||
python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
|
for line in roles/*/tasks/*.yml; do
|
||||||
|
python utils/galaxyfy-playbook.py "$line" "ipa" "$collection_prefix"
|
||||||
done
|
done
|
||||||
|
echo -e "\033[AFixing playbooks in roles/*tasks... \033[32;1mDONE\033[0m"
|
||||||
|
|
||||||
|
echo "Fixing playbooks in playbooks..."
|
||||||
find playbooks -name "*.yml" -print0 |
|
find playbooks -name "*.yml" -print0 |
|
||||||
while IFS= read -d -r '' line; do
|
while IFS= read -d '' -r line; do
|
||||||
python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
|
python utils/galaxyfy-playbook.py "$line" "ipa" "$collection_prefix"
|
||||||
done
|
done
|
||||||
|
echo -e "\033[AFixing playbooks in playbooks... \033[32;1mDONE\033[0m"
|
||||||
|
|
||||||
|
echo "Fixing README(s)..."
|
||||||
find . -name "README*.md" -print0 |
|
find . -name "README*.md" -print0 |
|
||||||
while IFS= read -d -r '' line; do
|
while IFS= read -d '' -r line; do
|
||||||
python utils/galaxyfy-README.py "$x" "ipa" "$collection_prefix"
|
python utils/galaxyfy-README.py "$line" "ipa" "$collection_prefix"
|
||||||
done
|
done
|
||||||
|
echo -e "\033[AFixing examples in plugins/modules... \033[32;1mDONE\033[0m"
|
||||||
|
|
||||||
|
echo "Fixing playbbooks in tests..."
|
||||||
find tests -name "*.yml" -print0 |
|
find tests -name "*.yml" -print0 |
|
||||||
while IFS= read -d -r '' line; do
|
while IFS= read -d '' -r line; do
|
||||||
python utils/galaxyfy-playbook.py "$x" "ipa" "$collection_prefix"
|
python utils/galaxyfy-playbook.py "$line" "ipa" "$collection_prefix"
|
||||||
done
|
done
|
||||||
|
echo -e "\033[AFixing playbooks in tests... \033[32;1mDONE\033[0m"
|
||||||
|
|
||||||
#git diff
|
#git diff
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user