mirror of
https://github.com/freeipa/ansible-freeipa.git
synced 2026-08-01 04:14:42 +00:00
ipaconfig: Prevent configuration issues due to test failure.
Currently, if a test fails during execution of ipaconfig playbook tests, or if the failed task is the task reverting to the original configuration fails, the testing host might be left in a state that may cause other tests to fail due to the inconsistent configuration state. This patch ensures that if a test fails, a known configuration, the same as used is the default installation of FreeIPA used in upstream CI, is applied to the host, providing safe environment for testing.
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
tasks:
|
tasks:
|
||||||
- include_tasks: ../env_freeipa_facts.yml
|
- include_tasks: ../env_freeipa_facts.yml
|
||||||
|
|
||||||
|
- block:
|
||||||
# Retrieve current configuration.
|
# Retrieve current configuration.
|
||||||
- name: return current values of the global configuration options
|
- name: return current values of the global configuration options
|
||||||
ipaconfig:
|
ipaconfig:
|
||||||
@@ -14,12 +15,12 @@
|
|||||||
register: previousconfig
|
register: previousconfig
|
||||||
|
|
||||||
- debug:
|
- debug:
|
||||||
msg: "{{previousconfig}}"
|
var: previousconfig
|
||||||
|
|
||||||
# setup environment.
|
# setup environment.
|
||||||
- name: create test group
|
- name: create test group
|
||||||
ipagroup:
|
ipagroup:
|
||||||
ipaadmin_password: 'SomeADMINpassword'
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: somedefaultgroup
|
name: somedefaultgroup
|
||||||
|
|
||||||
- name: Ensure the default e-mail domain is ipa.test.
|
- name: Ensure the default e-mail domain is ipa.test.
|
||||||
@@ -249,14 +250,14 @@
|
|||||||
- name: change enable_migration
|
- name: change enable_migration
|
||||||
ipaconfig:
|
ipaconfig:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
enable_migration: '{{ not previousconfig.config.enable_migration }}'
|
enable_migration: '{{ not (previousconfig.config.enable_migration | bool) }}'
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed or result.failed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
- name: change enable_migration, again
|
- name: change enable_migration, again
|
||||||
ipaconfig:
|
ipaconfig:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
enable_migration: '{{ not previousconfig.config.enable_migration }}'
|
enable_migration: '{{ not (previousconfig.config.enable_migration | bool) }}'
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
@@ -332,27 +333,27 @@
|
|||||||
|
|
||||||
- name: reset changed fields
|
- name: reset changed fields
|
||||||
ipaconfig:
|
ipaconfig:
|
||||||
ipaadmin_password: 'SomeADMINpassword'
|
ipaadmin_password: SomeADMINpassword
|
||||||
maxusername: '{{previousconfig.config.maxusername | default(omit)}}'
|
maxusername: '{{ previousconfig.config.maxusername | default(32) | int }}'
|
||||||
homedirectory: '{{previousconfig.config.homedirectory | default(omit)}}'
|
homedirectory: '{{ previousconfig.config.homedirectory | default(omit) }}'
|
||||||
defaultshell: '{{previousconfig.config.defaultshell | default(omit)}}'
|
defaultshell: '{{ previousconfig.config.defaultshell | default(omit) }}'
|
||||||
defaultgroup: '{{previousconfig.config.defaultgroup | default(omit)}}'
|
defaultgroup: '{{ previousconfig.config.defaultgroup | default(omit) }}'
|
||||||
emaildomain: '{{previousconfig.config.emaildomain | default(omit)}}'
|
emaildomain: '{{ previousconfig.config.emaildomain | default(omit) }}'
|
||||||
searchtimelimit: '{{previousconfig.config.searchtimelimit | default(omit)}}'
|
searchtimelimit: '{{ previousconfig.config.searchtimelimit | default(2) | int }}'
|
||||||
searchrecordslimit: '{{previousconfig.config.searchrecordslimit | default(omit)}}'
|
searchrecordslimit: '{{ previousconfig.config.searchrecordslimit | default(100) | int }}'
|
||||||
usersearch: '{{previousconfig.config.usersearch | default(omit)}}'
|
usersearch: '{{ previousconfig.config.usersearch | default(omit) }}'
|
||||||
groupsearch: '{{previousconfig.config.groupsearch | default(omit)}}'
|
groupsearch: '{{ previousconfig.config.groupsearch | default(omit) }}'
|
||||||
enable_migration: '{{previousconfig.config.enable_migration | default(omit)}}'
|
enable_migration: '{{ previousconfig.config.enable_migration | default(False) | bool }}'
|
||||||
groupobjectclasses: '{{previousconfig.config.groupobjectclasses | default(omit)}}'
|
groupobjectclasses: '{{ previousconfig.config.groupobjectclasses | default(omit) }}'
|
||||||
userobjectclasses: '{{previousconfig.config.userobjectclasses | default(omit)}}'
|
userobjectclasses: '{{ previousconfig.config.userobjectclasses | default(omit) }}'
|
||||||
pwdexpnotify: '{{previousconfig.config.pwdexpnotify | default(omit)}}'
|
pwdexpnotify: '{{ previousconfig.config.pwdexpnotify | default(4) | int }}'
|
||||||
configstring: '{{previousconfig.config.configstring | default(omit)}}'
|
configstring: '{{ previousconfig.config.configstring | default(omit) }}'
|
||||||
selinuxusermapdefault: '{{previousconfig.config.selinuxusermapdefault | default(omit)}}'
|
selinuxusermapdefault: '{{ previousconfig.config.selinuxusermapdefault | default(omit) }}'
|
||||||
selinuxusermaporder: '{{previousconfig.config.selinuxusermaporder | default(omit)}}'
|
selinuxusermaporder: '{{ previousconfig.config.selinuxusermaporder | default(omit) }}'
|
||||||
pac_type: '{{previousconfig.config.pac_type | default(omit)}}'
|
pac_type: '{{ previousconfig.config.pac_type | default(omit) }}'
|
||||||
user_auth_type: '{{previousconfig.config.user_auth_type | default(omit)}}'
|
user_auth_type: '{{ previousconfig.config.user_auth_type | default(omit) }}'
|
||||||
domain_resolution_order: '{{previousconfig.config.domain_resolution_order | default(omit)}}'
|
domain_resolution_order: '{{ previousconfig.config.domain_resolution_order | default(omit) }}'
|
||||||
ca_renewal_master_server: '{{previousconfig.config.ca_renewal_master_server | default(omit)}}'
|
ca_renewal_master_server: '{{ previousconfig.config.ca_renewal_master_server | default(omit) }}'
|
||||||
register: result
|
register: result
|
||||||
failed_when: not result.changed or result.failed
|
failed_when: not result.changed or result.failed
|
||||||
|
|
||||||
@@ -360,32 +361,32 @@
|
|||||||
block:
|
block:
|
||||||
- ipaconfig:
|
- ipaconfig:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
maxhostname: '{{previousconfig.config.maxhostname | default(omit)}}'
|
maxhostname: '{{ previousconfig.config.maxhostname | default(omit) }}'
|
||||||
when: ipa_version is version('4.8.0', '>=')
|
when: ipa_version is version('4.8.0', '>=')
|
||||||
|
|
||||||
- name: reset changed fields, again
|
- name: reset changed fields, again
|
||||||
ipaconfig:
|
ipaconfig:
|
||||||
ipaadmin_password: 'SomeADMINpassword'
|
ipaadmin_password: SomeADMINpassword
|
||||||
maxusername: '{{previousconfig.config.maxusername | default(omit)}}'
|
maxusername: '{{ previousconfig.config.maxusername | default(omit) | int }}'
|
||||||
homedirectory: '{{previousconfig.config.homedirectory | default(omit)}}'
|
homedirectory: '{{ previousconfig.config.homedirectory | default(omit) }}'
|
||||||
defaultshell: '{{previousconfig.config.defaultshell | default(omit)}}'
|
defaultshell: '{{ previousconfig.config.defaultshell | default(omit) }}'
|
||||||
defaultgroup: '{{previousconfig.config.defaultgroup | default(omit)}}'
|
defaultgroup: '{{ previousconfig.config.defaultgroup | default(omit) }}'
|
||||||
emaildomain: '{{previousconfig.config.emaildomain | default(omit)}}'
|
emaildomain: '{{ previousconfig.config.emaildomain | default(omit) }}'
|
||||||
searchtimelimit: '{{previousconfig.config.searchtimelimit | default(omit)}}'
|
searchtimelimit: '{{ previousconfig.config.searchtimelimit | default(omit) | int }}'
|
||||||
searchrecordslimit: '{{previousconfig.config.searchrecordslimit | default(omit)}}'
|
searchrecordslimit: '{{ previousconfig.config.searchrecordslimit | default(omit) | int }}'
|
||||||
usersearch: '{{previousconfig.config.usersearch | default(omit)}}'
|
usersearch: '{{ previousconfig.config.usersearch | default(omit) }}'
|
||||||
groupsearch: '{{previousconfig.config.groupsearch | default(omit)}}'
|
groupsearch: '{{ previousconfig.config.groupsearch | default(omit) }}'
|
||||||
enable_migration: '{{previousconfig.config.enable_migration | default(omit)}}'
|
enable_migration: '{{ previousconfig.config.enable_migration | default(omit) | bool }}'
|
||||||
groupobjectclasses: '{{previousconfig.config.groupobjectclasses | default(omit)}}'
|
groupobjectclasses: '{{ previousconfig.config.groupobjectclasses | default(omit) }}'
|
||||||
userobjectclasses: '{{previousconfig.config.userobjectclasses | default(omit)}}'
|
userobjectclasses: '{{ previousconfig.config.userobjectclasses | default(omit) }}'
|
||||||
pwdexpnotify: '{{previousconfig.config.pwdexpnotify | default(omit)}}'
|
pwdexpnotify: '{{ previousconfig.config.pwdexpnotify | default(omit) | int }}'
|
||||||
configstring: '{{previousconfig.config.configstring | default(omit)}}'
|
configstring: '{{ previousconfig.config.configstring | default(omit) }}'
|
||||||
selinuxusermapdefault: '{{previousconfig.config.selinuxusermapdefault | default(omit)}}'
|
selinuxusermapdefault: '{{ previousconfig.config.selinuxusermapdefault | default(omit) }}'
|
||||||
selinuxusermaporder: '{{previousconfig.config.selinuxusermaporder | default(omit)}}'
|
selinuxusermaporder: '{{ previousconfig.config.selinuxusermaporder | default(omit) }}'
|
||||||
pac_type: '{{previousconfig.config.pac_type | default(omit)}}'
|
pac_type: '{{ previousconfig.config.pac_type | default(omit) }}'
|
||||||
user_auth_type: '{{previousconfig.config.user_auth_type | default(omit)}}'
|
user_auth_type: '{{ previousconfig.config.user_auth_type | default(omit) }}'
|
||||||
domain_resolution_order: '{{previousconfig.config.domain_resolution_order | default(omit)}}'
|
domain_resolution_order: '{{ previousconfig.config.domain_resolution_order | default(omit) }}'
|
||||||
ca_renewal_master_server: '{{previousconfig.config.ca_renewal_master_server | default(omit)}}'
|
ca_renewal_master_server: '{{ previousconfig.config.ca_renewal_master_server | default(omit) }}'
|
||||||
register: result
|
register: result
|
||||||
failed_when: result.changed or result.failed
|
failed_when: result.changed or result.failed
|
||||||
|
|
||||||
@@ -393,13 +394,42 @@
|
|||||||
block:
|
block:
|
||||||
- ipaconfig:
|
- ipaconfig:
|
||||||
ipaadmin_password: SomeADMINpassword
|
ipaadmin_password: SomeADMINpassword
|
||||||
maxhostname: '{{previousconfig.config.maxhostname | default(omit)}}'
|
maxhostname: '{{ previousconfig.config.maxhostname | default(omit) }}'
|
||||||
when: ipa_version is version('4.8.0', '>=')
|
when: ipa_version is version('4.8.0', '>=')
|
||||||
|
|
||||||
# cleanup
|
rescue:
|
||||||
|
- name: Set fields to IPA default, due to error
|
||||||
|
ipaconfig:
|
||||||
|
ipaadmin_password: SomeADMINpassword
|
||||||
|
maxusername: '{{ previousconfig.config.maxusername | default(omit) | int }}'
|
||||||
|
homedirectory: '{{ previousconfig.config.homedirectory | default(omit) }}'
|
||||||
|
defaultshell: '{{ previousconfig.config.defaultshell | default(omit) }}'
|
||||||
|
defaultgroup: '{{ previousconfig.config.defaultgroup | default(omit) }}'
|
||||||
|
emaildomain: '{{ previousconfig.config.emaildomain | default(omit) }}'
|
||||||
|
searchtimelimit: '{{ previousconfig.config.searchtimelimit | default(omit) | int }}'
|
||||||
|
searchrecordslimit: '{{ previousconfig.config.searchrecordslimit | default(omit) | int }}'
|
||||||
|
usersearch: '{{ previousconfig.config.usersearch | default(omit) }}'
|
||||||
|
groupsearch: '{{ previousconfig.config.groupsearch | default(omit) }}'
|
||||||
|
enable_migration: '{{ previousconfig.config.enable_migration | default(omit) | bool }}'
|
||||||
|
groupobjectclasses: '{{ previousconfig.config.groupobjectclasses | default(omit) }}'
|
||||||
|
userobjectclasses: '{{ previousconfig.config.userobjectclasses | default(omit) }}'
|
||||||
|
pwdexpnotify: '{{ previousconfig.config.pwdexpnotify | default(omit) | int }}'
|
||||||
|
configstring: '{{ previousconfig.config.configstring | default(omit) }}'
|
||||||
|
selinuxusermapdefault: '{{ previousconfig.config.selinuxusermapdefault | default(omit) }}'
|
||||||
|
selinuxusermaporder: '{{ previousconfig.config.selinuxusermaporder | default(omit) }}'
|
||||||
|
pac_type: '{{ previousconfig.config.pac_type | default(omit) }}'
|
||||||
|
user_auth_type: '{{ previousconfig.config.user_auth_type | default(omit) }}'
|
||||||
|
domain_resolution_order: '{{ previousconfig.config.domain_resolution_order | default(omit) }}'
|
||||||
|
ca_renewal_master_server: '{{ previousconfig.config.ca_renewal_master_server | default(omit) }}'
|
||||||
|
register: result
|
||||||
|
|
||||||
|
- debug:
|
||||||
|
msg: "Due to a test failure, IPA CA-Renewal Server might not be correctly be set. Check your configuration."
|
||||||
|
|
||||||
|
always:
|
||||||
|
# cleanup
|
||||||
- name: cleanup test group
|
- name: cleanup test group
|
||||||
ipagroup:
|
ipagroup:
|
||||||
ipaadmin_password: 'SomeADMINpassword'
|
ipaadmin_password: SomeADMINpassword
|
||||||
name: somedefaultgroup
|
name: somedefaultgroup
|
||||||
state: absent
|
state: absent
|
||||||
|
|||||||
Reference in New Issue
Block a user