diff --git a/.ansible-lint b/.ansible-lint
index 4db98b7608984806eb0ddd83d1420e6703a0e76d..e71a16f8b043374c3ea069064780476a550eed31 100644
--- a/.ansible-lint
+++ b/.ansible-lint
@@ -1,3 +1,4 @@
+---
 exclude_paths:
   - .ansible-freeipa-tests/
   - .cache/
@@ -8,22 +9,21 @@ exclude_paths:
   - .yamllint
   - molecule/
   - tests/azure/
+  - meta/runtime.yml
 
+kinds:
+  - playbook: '**/tests/**/test_*.yml'
+  - playbook: '**/playbooks/**/*.yml'
 
 parseable: true
 
 quiet: false
 
 skip_list:
-  - '201'  # Trailing whitespace
-  - '204'  # Lines should be no longer than 160 chars
-  - '206'  # Variables should have spaces before and after: {{ var_name }}'
-  - '208'  # File permissions not mentioned
   - '301'  # Commands should not change things if nothing needs doing'
-  - '305'  # Use shell only when shell functionality is required'
-  - '306'  # Shells that use pipes should set the pipefail option'
-  - '502'  # All tasks should be named
-  - '505'  # Referenced missing file
+  - '305'  # Use shell only when shell functionality is required
+  - '306'  # risky-shell-pipe
+  - yaml   # yamllint should be executed separately.
 
 use_default_rules: true
 
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 80400482778ca330d3b3430db68acc6d293d2741..d680f076991dbcf4b698a85741a926ad8b4fb4f9 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -21,6 +21,7 @@ jobs:
             tests/*/*/*.yml
             playbooks/*.yml
             playbooks/*/*.yml
+            roles/*/*/*.yml
         env:
           ANSIBLE_MODULE_UTILS: plugins/module_utils
           ANSIBLE_LIBRARY: plugins/modules
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 9ad47baae8a4b981a98154b2074e13c93c9479ef..51c3ca9121e7b16f9cbbd001fd53e5c2f10e1e08 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -7,7 +7,9 @@ repos:
     always_run: false
     pass_filenames: true
     files: \.(yaml|yml)$
-    entry: env ANSIBLE_LIBRARY=./plugins/modules ANSIBLE_MODULE_UTILS=./plugins/module_utils ANSIBLE_DOC_FRAGMENT_PLUGINS=./plugins/doc_fragments ansible-lint --force-color
+    exclude: /env[^/]*.(yaml|yml)$
+    entry: |
+        env ANSIBLE_LIBRARY=./plugins/modules ANSIBLE_MODULE_UTILS=./plugins/module_utils ANSIBLE_DOC_FRAGMENT_PLUGINS=./plugins/doc_fragments ansible-lint
 - repo: https://github.com/adrienverge/yamllint.git
   rev: v1.26.1
   hooks:
diff --git a/.yamllint b/.yamllint
index 3671e728732701929e1201c7c2f8ba0a307ae4a6..5fbcc17c4d7b087cb1921ab53d39e4b52b534f89 100644
--- a/.yamllint
+++ b/.yamllint
@@ -16,13 +16,8 @@ rules:
   truthy:
     allowed-values: ["yes", "no", "true", "false", "True", "False"]
     level: error
+  line-length:
+    max: 160
   # Disabled rules
-  document-start: disable
   indentation: disable
-  line-length: disable
-  colons: disable
-  empty-lines: disable
   comments: disable
-  comments-indentation: disable
-  trailing-spaces: disable
-  new-line-at-end-of-file: disable
diff --git a/README-config.md b/README-config.md
index f7a5b68142d499b4cbd37bd66adc9e0f2c9395a3..a756f67b49aeab860ebc2301c52c85f6faef1c5f 100644
--- a/README-config.md
+++ b/README-config.md
@@ -56,7 +56,7 @@ Example playbook to read config options:
       register: result
     - name: display default login shell
       debug:
-        msg: '{{result.config.defaultlogin }}'
+        msg: '{{ result.config.defaultlogin }}'
 
     - name: ensure defaultloginshell and maxusernamelength are set as required
       ipaconfig:
diff --git a/galaxy.yml b/galaxy.yml
index 6f2a5c04937e5d7b6facee86259416264b67e9c0..9bd347608a59f78dbbf76685dfb77e2e0e598858 100644
--- a/galaxy.yml
+++ b/galaxy.yml
@@ -1,3 +1,4 @@
+---
 namespace: "freeipa"
 name: "ansible_freeipa"
 version: "A.B.C"
diff --git a/meta/runtime.yml b/meta/runtime.yml
index aba42e9b2bfff682d48be7365887fbfebc8cd3da..18dabe9d7be39d4eae2db4408c3f5e49504381dc 100644
--- a/meta/runtime.yml
+++ b/meta/runtime.yml
@@ -1 +1,2 @@
+---
 requires_ansible: ">=2.9"
diff --git a/molecule/resources/playbooks/prepare-common.yml b/molecule/resources/playbooks/prepare-common.yml
index 6dd93532163e155f08b6818bc799768fde5af07d..2292e4c9d25920e12b16cbce004be05583e82052 100644
--- a/molecule/resources/playbooks/prepare-common.yml
+++ b/molecule/resources/playbooks/prepare-common.yml
@@ -1,3 +1,4 @@
+---
 # IPA depends on IPv6 and without it dirsrv service won't start.
 - name: Ensure IPv6 is ENABLED
   sysctl:
@@ -6,7 +7,7 @@
     sysctl_set: yes
     state: present
     reload: yes
-  with_items :
+  with_items:
     - name: net.ipv6.conf.all.disable_ipv6
       value: 0
     - name: net.ipv6.conf.lo.disable_ipv6
@@ -25,9 +26,8 @@
 - name: Ensure fs.protected_regular is disabled
   sysctl:
     name: fs.protected_regular
-    value: 0
+    value: '0'
     sysctl_set: yes
     state: present
     reload: yes
   when: result.stat.exists
-
diff --git a/molecule/resources/playbooks/prepare.yml b/molecule/resources/playbooks/prepare.yml
index 26d139e466395cfb0aa23abdc09164478a069d10..761d4a95c9184560b68a9c0e349148f321ed6d1b 100644
--- a/molecule/resources/playbooks/prepare.yml
+++ b/molecule/resources/playbooks/prepare.yml
@@ -16,6 +16,7 @@
       owner: dirsrv
       group: dirsrv
       path: "{{ item }}"
+      mode: 0770
     loop:
       - /var/lock/dirsrv/
       - /var/lock/dirsrv/slapd-TEST-LOCAL/
diff --git a/playbooks/automount/automount-location-absent.yml b/playbooks/automount/automount-location-absent.yml
index f31a43940bf01cb79211d1acf7ddf2490d699cbc..481149564963abbcdecb7100e61c2c11dec26f51 100644
--- a/playbooks/automount/automount-location-absent.yml
+++ b/playbooks/automount/automount-location-absent.yml
@@ -10,4 +10,3 @@
         - DMZ
         - internal
       state: absent
-
diff --git a/playbooks/automount/automount-location-present.yml b/playbooks/automount/automount-location-present.yml
index 72e7a4028305c2e0314b4bc1763ffcc0d2eba636..f2b745555874720c9c41654663c5404c37bb5984 100644
--- a/playbooks/automount/automount-location-present.yml
+++ b/playbooks/automount/automount-location-present.yml
@@ -10,4 +10,3 @@
         - DMZ
         - internal
       state: present
-
diff --git a/playbooks/config/retrieve-config.yml b/playbooks/config/retrieve-config.yml
index 7f05e802e2730a7d6cf83e02dbd1c4f91ed766fc..595c9b1db389942da7c10115e12e55885a629fd8 100644
--- a/playbooks/config/retrieve-config.yml
+++ b/playbooks/config/retrieve-config.yml
@@ -10,5 +10,6 @@
       ipaadmin_password: SomeADMINpassword
     register: serverconfig
 
-  - debug:
+  - name: Display current configuration.
+    debug:
       msg: "{{ serverconfig }}"
diff --git a/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-absent.yml b/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-absent.yml
index 10976de17d346806866ec90f6ee5a0e6de41030c..6c56f1e4cf6dd3a08ad3e692123cc6c9380f628e 100644
--- a/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-absent.yml
+++ b/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-absent.yml
@@ -5,7 +5,7 @@
   gather_facts: false
 
   tasks:
-  # Ensure DNS zone is present
-  - ipadnsforwardzone:
+  - name: Ensure DNS forward zone is absent
+    ipadnsforwardzone:
       ipaadmin_password: SomeADMINpassword
       state: absent
diff --git a/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-present.yml b/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-present.yml
index 1970432fa9799fbb70ccab76bc9aeecb3505d6ee..92b698cfee2b65758409f7421a650e497d882992 100644
--- a/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-present.yml
+++ b/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-present.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure DNS zone is present
-  - ipadnsforwardzone:
+  - name: Ensure DNS forward zone is present
+    ipadnsforwardzone:
       ipaadmin_password: SomeADMINpassword
       name: example.com
       forwarders:
diff --git a/playbooks/dnsforwardzone/ensure-dnsforwardzone-with-forwarder-port.yml b/playbooks/dnsforwardzone/ensure-dnsforwardzone-with-forwarder-port.yml
index c27767b5757a005e531a36dcdbf44c8d5d8e03cb..449497bd61e27e20f77a2176a306210986ab6319 100644
--- a/playbooks/dnsforwardzone/ensure-dnsforwardzone-with-forwarder-port.yml
+++ b/playbooks/dnsforwardzone/ensure-dnsforwardzone-with-forwarder-port.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure DNS zone is present
-  - ipadnsforwardzone:
+  - name: Ensure DNS forward zone is present with forwarder address and non-standard port.
+    ipadnsforwardzone:
       ipaadmin_password: SomeADMINpassword
       name: example.com
       forwarders:
diff --git a/playbooks/dnsrecord/ensure-A-and-AAAA-records-are-absent.yml b/playbooks/dnsrecord/ensure-A-and-AAAA-records-are-absent.yml
index f4dffc66db52d12829279970fe608e4484712bbb..1bdba90c03e9fe689cd0dedf4cb94d122af0ac06 100644
--- a/playbooks/dnsrecord/ensure-A-and-AAAA-records-are-absent.yml
+++ b/playbooks/dnsrecord/ensure-A-and-AAAA-records-are-absent.yml
@@ -1,12 +1,11 @@
 ---
-- name: Test PTR Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure a PTR record is present
-  - name: Ensure that 'host04' has A and AAAA records.
+  - name: Ensure that 'host04' A and AAAA records are absent.
     ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       zone_name: ipatest.local
diff --git a/playbooks/dnsrecord/ensure-A-and-AAAA-records-are-present.yml b/playbooks/dnsrecord/ensure-A-and-AAAA-records-are-present.yml
index b59acfe0fc2cb456b67088c09911774b8befe632..3f7945746184c435e5d324fca8662c919cca97c1 100644
--- a/playbooks/dnsrecord/ensure-A-and-AAAA-records-are-present.yml
+++ b/playbooks/dnsrecord/ensure-A-and-AAAA-records-are-present.yml
@@ -1,12 +1,11 @@
 ---
-- name: Test PTR Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure a PTR record is present
-  - name: Ensure that 'host04' has A and AAAA records.
+  - name: Ensure that 'host04' A and AAAA records are present.
     ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       zone_name: ipatest.local
diff --git a/playbooks/dnsrecord/ensure-CNAME-record-is-absent.yml b/playbooks/dnsrecord/ensure-CNAME-record-is-absent.yml
index 9b02b14728ab7bdd6d6f2b89d6dac16294d2f586..751fc04321014a5de39da28c2a802db59fb7e785 100644
--- a/playbooks/dnsrecord/ensure-CNAME-record-is-absent.yml
+++ b/playbooks/dnsrecord/ensure-CNAME-record-is-absent.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test CNAME Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure that 'host04' has CNAME, with cname_hostname
-  - ipadnsrecord:
+  - name: Ensure that 'host04' has CNAME, with cname_hostname, is absent
+    ipadnsrecord:
       zone_name: example.com
       name: host04
       cname_hostname: host04.example.com
diff --git a/playbooks/dnsrecord/ensure-CNAME-record-is-present.yml b/playbooks/dnsrecord/ensure-CNAME-record-is-present.yml
index e6e918c35a072261bc97074d281b70386e40808d..3a0c5b95a53db6902b9b0c6c8c08051a42b31288 100644
--- a/playbooks/dnsrecord/ensure-CNAME-record-is-present.yml
+++ b/playbooks/dnsrecord/ensure-CNAME-record-is-present.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test CNAME Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure that 'host04' has CNAME, with cname_hostname
-  - ipadnsrecord:
+  - name: Ensure that 'host04' has CNAME, with cname_hostname, is present
+    ipadnsrecord:
       zone_name: example.com
       name: host04
       cname_hostname: host04.example.com
diff --git a/playbooks/dnsrecord/ensure-MX-record-is-present.yml b/playbooks/dnsrecord/ensure-MX-record-is-present.yml
index 139c168180aa2d2aa7db61d1b0f280b49d4789d4..df21c7acde35369424214d5f85a05678e3decc0b 100644
--- a/playbooks/dnsrecord/ensure-MX-record-is-present.yml
+++ b/playbooks/dnsrecord/ensure-MX-record-is-present.yml
@@ -1,12 +1,12 @@
 ---
-- name: Ensure MX Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure an MX record is absent
-  - ipadnsrecord:
+  - name: Ensure an MX record is present
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       name: '@'
       record_type: 'MX'
diff --git a/playbooks/dnsrecord/ensure-PTR-record-is-present.yml b/playbooks/dnsrecord/ensure-PTR-record-is-present.yml
index 0a59c0d29e80116571b279f839c371635ac4aaeb..3a3fc3b923ef0e6f86507370269e6ceb0ca4143b 100644
--- a/playbooks/dnsrecord/ensure-PTR-record-is-present.yml
+++ b/playbooks/dnsrecord/ensure-PTR-record-is-present.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test PTR Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure a PTR record is present
-  - ipadnsrecord:
+  - name: Ensure a PTR record is present
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       name: 5
       record_type: 'PTR'
diff --git a/playbooks/dnsrecord/ensure-SRV-record-is-present.yml b/playbooks/dnsrecord/ensure-SRV-record-is-present.yml
index 3c18ff34f909a485217b137d35995f97cb9d68cc..ba00f36a11157a888431f7a072fcf5fd314db062 100644
--- a/playbooks/dnsrecord/ensure-SRV-record-is-present.yml
+++ b/playbooks/dnsrecord/ensure-SRV-record-is-present.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test SRV Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure a SRV record is present
-  - ipadnsrecord:
+  - name: Ensure a SRV record is present
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       name: _kerberos._udp.example.com
       record_type: 'SRV'
diff --git a/playbooks/dnsrecord/ensure-SSHFP-record-is-present.yml b/playbooks/dnsrecord/ensure-SSHFP-record-is-present.yml
index 99ec554251a75448fe8cceb311ca118d640395c1..9a902c00bc09c42b3a58e9b6bdccb8331c2fbc48 100644
--- a/playbooks/dnsrecord/ensure-SSHFP-record-is-present.yml
+++ b/playbooks/dnsrecord/ensure-SSHFP-record-is-present.yml
@@ -1,13 +1,13 @@
 ---
-- name: Test SSHFP Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure a SSHFP record is present
   # SSHFP fingerprint generated with `ssh-keygen -r host04.testzone.local`
-  - ipadnsrecord:
+  - name: Ensure a SSHFP record is present
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       zone_name: example.com
       name: host04
diff --git a/playbooks/dnsrecord/ensure-TLSA-record-is-present.yml b/playbooks/dnsrecord/ensure-TLSA-record-is-present.yml
index 65e947929e35c9dd3ff4e1caa73fe7105dc30b60..fdbe9ad0354fff0ba45369d56529fc3f7407226a 100644
--- a/playbooks/dnsrecord/ensure-TLSA-record-is-present.yml
+++ b/playbooks/dnsrecord/ensure-TLSA-record-is-present.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test SSHFP Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure a SSHFP record is present
-  - ipadnsrecord:
+  - name: Ensure a TLSA record is present
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       zone_name: example.com
       name: host04
diff --git a/playbooks/dnsrecord/ensure-TXT-record-is-present.yml b/playbooks/dnsrecord/ensure-TXT-record-is-present.yml
index 35be86e164d80f36bc85dcab5b0e0c729cdf6ef3..0ca8bdc8507c8018f74e29ea6c60ec5d944aa96b 100644
--- a/playbooks/dnsrecord/ensure-TXT-record-is-present.yml
+++ b/playbooks/dnsrecord/ensure-TXT-record-is-present.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test TXT Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure a TXT record is absent
-  - ipadnsrecord:
+  - name: Ensure a TXT record is present
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       name: _kerberos
       record_type: 'TXT'
diff --git a/playbooks/dnsrecord/ensure-URI-record-is-present.yml b/playbooks/dnsrecord/ensure-URI-record-is-present.yml
index be1b25df4d0e609ba3dfc72a2631ba4c2e3160fe..c07f24f5b020e15b0604636b48aebbceb3f84317 100644
--- a/playbooks/dnsrecord/ensure-URI-record-is-present.yml
+++ b/playbooks/dnsrecord/ensure-URI-record-is-present.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test URI Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure a URI record is absent
-  - ipadnsrecord:
+  - name: Ensure a URI record is present
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       name: _ftp._tcp
       record_type: 'URI'
diff --git a/playbooks/dnsrecord/ensure-dnsrecord-is-absent.yml b/playbooks/dnsrecord/ensure-dnsrecord-is-absent.yml
index 3cfed05c966c0720fe69c8ae84ca0229bdb5b524..6397bd44feed822a9a2dec3953cb26f0ec6722a0 100644
--- a/playbooks/dnsrecord/ensure-dnsrecord-is-absent.yml
+++ b/playbooks/dnsrecord/ensure-dnsrecord-is-absent.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test DNS Record is absent.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure that dns record is absent
-  - ipadnsrecord:
+  - name: Ensure that dns localhost AAAA record is absent
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       name: host01
       zone_name: example.com
diff --git a/playbooks/dnsrecord/ensure-dnsrecord-is-present.yml b/playbooks/dnsrecord/ensure-dnsrecord-is-present.yml
index b1ae113dca4241d025e7dad1c732cadc32e11290..132f65f11922f4bda552fd12ac702715dd101761 100644
--- a/playbooks/dnsrecord/ensure-dnsrecord-is-present.yml
+++ b/playbooks/dnsrecord/ensure-dnsrecord-is-present.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test DNS Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure that dns record is present
-  - ipadnsrecord:
+  - name: Ensure that dns record is present
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       name: host01
       zone_name: example.com
diff --git a/playbooks/dnsrecord/ensure-dnsrecord-with-reverse-is-present.yml b/playbooks/dnsrecord/ensure-dnsrecord-with-reverse-is-present.yml
index bef7d33aafceb7c01dbfb2c9e241407d83e0c2ff..dbbf331044a3c06490c3497f069ce7965feab920 100644
--- a/playbooks/dnsrecord/ensure-dnsrecord-with-reverse-is-present.yml
+++ b/playbooks/dnsrecord/ensure-dnsrecord-with-reverse-is-present.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test DNS Record is present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure that dns record is present
-  - ipadnsrecord:
+  - name: Ensure that dns record is present
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       name: host01
       zone_name: example.com
diff --git a/playbooks/dnsrecord/ensure-presence-multiple-records.yml b/playbooks/dnsrecord/ensure-presence-multiple-records.yml
index 94e01aea7680bb691edc7e2f37b6c2dfcc7e4820..48e32938c40b0a32691333dc84f30c9d715377fb 100644
--- a/playbooks/dnsrecord/ensure-presence-multiple-records.yml
+++ b/playbooks/dnsrecord/ensure-presence-multiple-records.yml
@@ -1,12 +1,12 @@
 ---
-- name: Test multiple DNS Records are present.
+- name: Playbook to manage DNS records.
   hosts: ipaserver
   become: true
   gather_facts: false
 
   tasks:
-  # Ensure that multiple dns records are present
-  - ipadnsrecord:
+  - name: Ensure that multiple dns records are present
+    ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
       records:
         - name: host01
diff --git a/playbooks/dnszone/dnszone-all-params.yml b/playbooks/dnszone/dnszone-all-params.yml
index c02485f58285ef94fbb54f434d6dc09cdbcb842c..79747d2a975b53e4caa9630442294a0f7ceb2c81 100644
--- a/playbooks/dnszone/dnszone-all-params.yml
+++ b/playbooks/dnszone/dnszone-all-params.yml
@@ -1,3 +1,4 @@
+---
 - name: dnszone present
   hosts: ipaserver
   become: true
diff --git a/playbooks/dnszone/dnszone-present.yml b/playbooks/dnszone/dnszone-present.yml
index c310631790787638074f070ab13d7ff0d4b46ed2..04d07ba01f26bba153bdc57889bfcf9ace34acc3 100644
--- a/playbooks/dnszone/dnszone-present.yml
+++ b/playbooks/dnszone/dnszone-present.yml
@@ -1,3 +1,4 @@
+---
 - name: dnszone present
   hosts: ipaserver
   become: true
diff --git a/playbooks/host/host-member-certificate-absent.yml b/playbooks/host/host-member-certificate-absent.yml
index 841b39cddc672be3d0a6f03bde1ecc3582d5ac09..6ef7aa0662b45a3f3f813a8c1260816f52ea7637 100644
--- a/playbooks/host/host-member-certificate-absent.yml
+++ b/playbooks/host/host-member-certificate-absent.yml
@@ -1,3 +1,4 @@
+---
 - name: Host member certificate absent
   hosts: ipaserver
   become: true
@@ -8,6 +9,24 @@
       ipaadmin_password: SomeADMINpassword
       name: host01.example.com
       certificate:
-      - MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
+      - >
+        MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvc
+        NAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMD
+        EwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBA
+        QUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6X
+        sqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7G
+        PHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8H
+        nSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRc
+        mZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2Q
+        glidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplR
+        BoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldn
+        f13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBA
+        f8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4K
+        k+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGs
+        GLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31y
+        kBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0
+        fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9m
+        BDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8
+        AN65NAdv7+js8jKUKCuyji8r3
       action: member
       state: absent
diff --git a/playbooks/host/host-member-certificate-present.yml b/playbooks/host/host-member-certificate-present.yml
index 8071a9425b609751a31144d9dae2ea4e717b38ab..17f5e5953ac6c1ec7a25d8e35241b4fe179a4c80 100644
--- a/playbooks/host/host-member-certificate-present.yml
+++ b/playbooks/host/host-member-certificate-present.yml
@@ -1,3 +1,4 @@
+---
 - name: Host member certificate present
   hosts: ipaserver
   become: true
@@ -8,5 +9,23 @@
       ipaadmin_password: SomeADMINpassword
       name: host01.example.com
       certificate:
-      - MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
+      - >
+        MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvc
+        NAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMD
+        EwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBA
+        QUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6X
+        sqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7G
+        PHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8H
+        nSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRc
+        mZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2Q
+        glidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplR
+        BoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldn
+        f13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBA
+        f8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4K
+        k+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGs
+        GLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31y
+        kBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0
+        fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9m
+        BDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8
+        AN65NAdv7+js8jKUKCuyji8r3
       action: member
diff --git a/playbooks/host/host-member-managedby_host-absent.yml b/playbooks/host/host-member-managedby_host-absent.yml
index 56ee6818d71c4a5884bd97d40e7ef1a29c69be11..11867775797f9c9d99a8576bc8a515f9b32099a6 100644
--- a/playbooks/host/host-member-managedby_host-absent.yml
+++ b/playbooks/host/host-member-managedby_host-absent.yml
@@ -4,7 +4,8 @@
   become: true
 
   tasks:
-  - ipahost:
+  - name: Ensure host member managedby_host 'server.example.com' is absent
+    ipahost:
       ipaadmin_password: SomeADMINpassword
       name: host01.example.com
       managedby_host: server.example.com
diff --git a/playbooks/host/host-member-managedby_host-present.yml b/playbooks/host/host-member-managedby_host-present.yml
index 9d27f4cd49be04bdd9b09ff9a8f7aa7495fef372..d62459d1fb40611252cb62ca3bb63acc53f106af 100644
--- a/playbooks/host/host-member-managedby_host-present.yml
+++ b/playbooks/host/host-member-managedby_host-present.yml
@@ -4,7 +4,8 @@
   become: true
 
   tasks:
-  - ipahost:
+  - name: Ensure host member managedby_host 'server.example.com' is present
+    ipahost:
       ipaadmin_password: SomeADMINpassword
       name: host01.example.com
       managedby_host: server.example.com
diff --git a/playbooks/host/host-present-with-certificate.yml b/playbooks/host/host-present-with-certificate.yml
index 919d7c0bbe4ed3f6d53b59d0a3b12a9bd424c9a3..27f4afece2a0942c8716deaec36e0df29f0c5922 100644
--- a/playbooks/host/host-present-with-certificate.yml
+++ b/playbooks/host/host-present-with-certificate.yml
@@ -1,3 +1,4 @@
+---
 - name: Host present with certificate
   hosts: ipaserver
   become: true
@@ -8,5 +9,23 @@
       ipaadmin_password: SomeADMINpassword
       name: host01.example.com
       certificate:
-      - MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
+      - >
+        MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvc
+        NAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMD
+        EwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBA
+        QUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6X
+        sqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7G
+        PHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8H
+        nSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRc
+        mZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2Q
+        glidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplR
+        BoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldn
+        f13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBA
+        f8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4K
+        k+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGs
+        GLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31y
+        kBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0
+        fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9m
+        BDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8
+        AN65NAdv7+js8jKUKCuyji8r3
       force: yes
diff --git a/playbooks/host/host-present-with-managedby_host.yml b/playbooks/host/host-present-with-managedby_host.yml
index 31adaa1d45cbeb86cdeee96c5d3fcd7d67c725ba..1a54ef99bb5c90d29ee658de6f7466234db7b5c2 100644
--- a/playbooks/host/host-present-with-managedby_host.yml
+++ b/playbooks/host/host-present-with-managedby_host.yml
@@ -4,7 +4,8 @@
   become: true
 
   tasks:
-  - ipahost:
+  - name: Ensure host is present with managedby_host attribute.
+    ipahost:
       ipaadmin_password: SomeADMINpassword
       name: host01.example.com
       managedby_host: server.example.com
diff --git a/playbooks/host/hosts-member-certificate-absent.yml b/playbooks/host/hosts-member-certificate-absent.yml
index 45b47406b062971307190fe7349750e4943cbc80..6465a8df402470fb8217f5d3a6aad1e9e5f4298a 100644
--- a/playbooks/host/hosts-member-certificate-absent.yml
+++ b/playbooks/host/hosts-member-certificate-absent.yml
@@ -10,9 +10,45 @@
       hosts:
       - name: host01.example.com
         certificate:
-        - MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
+        - >
+          MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvc
+          NAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMD
+          EwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBA
+          QUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6X
+          sqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7G
+          PHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8H
+          nSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRc
+          mZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2Q
+          glidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplR
+          BoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldn
+          f13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBA
+          f8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4K
+          k+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGs
+          GLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31y
+          kBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0
+          fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9m
+          BDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8
+          AN65NAdv7+js8jKUKCuyji8r3
       - name: host02.example.com
         certificate:
-        - MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NDVaFw0yMDEwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhFonx99AKi44iaZkrlMKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJijJ7S/4o7h7eeqcJVXJkEhWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClplysL8OyyEG7pbX/aB9iAfFb/+vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1wNw1rqWKF1ZzagWRlG4QgzRGwQ4quc7yO98TKikj2OPiIt7Zd46hbqQxmgGBtCkVOZIhxu77OmNrFsXmM4rZZpmqh0UdqcpwkRojVnGXmNqeMCd6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5R1mG4RJ2XAgMBAAGjUzBRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFKOnpTAfBgNVHSMEGDAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBBg97T2Uc1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdotIWlG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKhdhu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMngCfGUe1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcmDKfNT3YZM8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi8mW+V6bAqn9pir/J14r4YFnqMGgjmdt81tscJV
+        - >
+          MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZIhvc
+          NAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NDVaFw0yMD
+          EwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBA
+          QUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhFonx99AKi44iaZkrl
+          MKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJijJ7S/4o7h7eeqcJVXJkE
+          hWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClplysL8OyyEG7pbX/aB9iAfFb/
+          +vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1wNw1rqWKF1ZzagWRlG4QgzRGwQ4q
+          uc7yO98TKikj2OPiIt7Zd46hbqQxmgGBtCkVOZIhxu77OmNrFsXmM4rZZpm
+          qh0UdqcpwkRojVnGXmNqeMCd6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5
+          R1mG4RJ2XAgMBAAGjUzBRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFK
+          OnpTAfBgNVHSMEGDAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBA
+          f8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBB
+          g97T2Uc1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdo
+          tIWlG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKhd
+          hu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMngCfGU
+          e1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcmDKfNT3YZM
+          8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi8mW+V6bAqn9pi
+          r/J14r4YFnqMGgjmdt81tscJV
       action: member
       state: absent
diff --git a/playbooks/host/hosts-member-certificate-present.yml b/playbooks/host/hosts-member-certificate-present.yml
index c5908e6100e8d225981d66a9c12032c558b121c9..9ad049c992ebbee02089a0eb3b2f3184766a86ba 100644
--- a/playbooks/host/hosts-member-certificate-present.yml
+++ b/playbooks/host/hosts-member-certificate-present.yml
@@ -10,8 +10,44 @@
       hosts:
       - name: host01.example.com
         certificate:
-        - MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
+        - >
+          MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvc
+          NAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMD
+          EwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBA
+          QUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6X
+          sqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7G
+          PHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8H
+          nSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRc
+          mZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2Q
+          glidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplR
+          BoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldn
+          f13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBA
+          f8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4K
+          k+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGs
+          GLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31y
+          kBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0
+          fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9m
+          BDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8
+          AN65NAdv7+js8jKUKCuyji8r3
       - name: host02.example.com
         certificate:
-        - MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NDVaFw0yMDEwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhFonx99AKi44iaZkrlMKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJijJ7S/4o7h7eeqcJVXJkEhWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClplysL8OyyEG7pbX/aB9iAfFb/+vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1wNw1rqWKF1ZzagWRlG4QgzRGwQ4quc7yO98TKikj2OPiIt7Zd46hbqQxmgGBtCkVOZIhxu77OmNrFsXmM4rZZpmqh0UdqcpwkRojVnGXmNqeMCd6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5R1mG4RJ2XAgMBAAGjUzBRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFKOnpTAfBgNVHSMEGDAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBBg97T2Uc1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdotIWlG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKhdhu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMngCfGUe1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcmDKfNT3YZM8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi8mW+V6bAqn9pir/J14r4YFnqMGgjmdt81tscJV
+        - >
+          MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZIhvc
+          NAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NDVaFw0yMD
+          EwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBA
+          QUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhFonx99AKi44iaZkrl
+          MKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJijJ7S/4o7h7eeqcJVXJkE
+          hWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClplysL8OyyEG7pbX/aB9iAfFb/
+          +vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1wNw1rqWKF1ZzagWRlG4QgzRGwQ4q
+          uc7yO98TKikj2OPiIt7Zd46hbqQxmgGBtCkVOZIhxu77OmNrFsXmM4rZZpm
+          qh0UdqcpwkRojVnGXmNqeMCd6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5
+          R1mG4RJ2XAgMBAAGjUzBRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFK
+          OnpTAfBgNVHSMEGDAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBA
+          f8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBB
+          g97T2Uc1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdo
+          tIWlG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKhd
+          hu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMngCfGU
+          e1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcmDKfNT3YZM
+          8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi8mW+V6bAqn9pi
+          r/J14r4YFnqMGgjmdt81tscJV
       action: member
diff --git a/playbooks/host/hosts-member-managedby_host-present.yml b/playbooks/host/hosts-member-managedby_host-present.yml
index b09771ef82f383b91f9eb15b174fefe246038ccf..4c8674021e146e15be3feae5f477e913b0d4323f 100644
--- a/playbooks/host/hosts-member-managedby_host-present.yml
+++ b/playbooks/host/hosts-member-managedby_host-present.yml
@@ -4,7 +4,7 @@
   become: true
 
   tasks:
-  - name: Ensure hosts manadegby_host is absent.
+  - name: Ensure hosts manadegby_host is present.
     ipahost:
       ipaadmin_password: SomeADMINpassword
       hosts:
diff --git a/playbooks/host/hosts-present-with-certificate.yml b/playbooks/host/hosts-present-with-certificate.yml
index 3cbd2387f08dbbcb47b1aedd41e63b9596071b1b..c3ac934987d30771306397e29887bc8ec27b75db 100644
--- a/playbooks/host/hosts-present-with-certificate.yml
+++ b/playbooks/host/hosts-present-with-certificate.yml
@@ -10,8 +10,44 @@
       hosts:
       - name: host01.example.com
         certificate:
-        - MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
+        - >
+          MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvc
+          NAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMD
+          EwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBA
+          QUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6X
+          sqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7G
+          PHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8H
+          nSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRc
+          mZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2Q
+          glidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplR
+          BoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldn
+          f13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBA
+          f8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4K
+          k+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGs
+          GLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31y
+          kBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0
+          fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9m
+          BDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8
+          AN65NAdv7+js8jKUKCuyji8r3
       - name: host02.example.com
         certificate:
-        - MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NDVaFw0yMDEwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhFonx99AKi44iaZkrlMKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJijJ7S/4o7h7eeqcJVXJkEhWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClplysL8OyyEG7pbX/aB9iAfFb/+vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1wNw1rqWKF1ZzagWRlG4QgzRGwQ4quc7yO98TKikj2OPiIt7Zd46hbqQxmgGBtCkVOZIhxu77OmNrFsXmM4rZZpmqh0UdqcpwkRojVnGXmNqeMCd6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5R1mG4RJ2XAgMBAAGjUzBRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFKOnpTAfBgNVHSMEGDAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBBg97T2Uc1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdotIWlG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKhdhu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMngCfGUe1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcmDKfNT3YZM8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi8mW+V6bAqn9pir/J14r4YFnqMGgjmdt81tscJV
+        - >
+          MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZIhvc
+          NAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NDVaFw0yMD
+          EwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBA
+          QUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhFonx99AKi44iaZkrl
+          MKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJijJ7S/4o7h7eeqcJVXJkE
+          hWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClplysL8OyyEG7pbX/aB9iAfFb/
+          +vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1wNw1rqWKF1ZzagWRlG4QgzRGwQ4q
+          uc7yO98TKikj2OPiIt7Zd46hbqQxmgGBtCkVOZIhxu77OmNrFsXmM4rZZpm
+          qh0UdqcpwkRojVnGXmNqeMCd6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5
+          R1mG4RJ2XAgMBAAGjUzBRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFK
+          OnpTAfBgNVHSMEGDAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBA
+          f8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBB
+          g97T2Uc1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdo
+          tIWlG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKhd
+          hu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMngCfGU
+          e1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcmDKfNT3YZM
+          8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi8mW+V6bAqn9pi
+          r/J14r4YFnqMGgjmdt81tscJV
       force: yes
diff --git a/playbooks/host/hosts-present-with-managedby_host.yml b/playbooks/host/hosts-present-with-managedby_host.yml
index 750319ad78beeec3d33f995fb6f0198f2662a4ee..ad04fac83650d26240f78c583bfcaf2cbcbe5f03 100644
--- a/playbooks/host/hosts-present-with-managedby_host.yml
+++ b/playbooks/host/hosts-present-with-managedby_host.yml
@@ -4,7 +4,8 @@
   become: true
 
   tasks:
-  - ipahost:
+  - name: Ensure hosts are present with managedby_host attribute.
+    ipahost:
       ipaadmin_password: SomeADMINpassword
       hosts:
       - name: host01.example.com
diff --git a/playbooks/hostgroup/ensure-hostgroup-is-absent.yml b/playbooks/hostgroup/ensure-hostgroup-is-absent.yml
index c9e37d3f3c91d5a54455fe7f536b6e9e9072f95d..f82fecc9f4492b20daf105b0e6db8456f7c7a109 100644
--- a/playbooks/hostgroup/ensure-hostgroup-is-absent.yml
+++ b/playbooks/hostgroup/ensure-hostgroup-is-absent.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure host-group databases is present
-  - ipahostgroup:
+  - name: Ensure host-group databases is absent
+    ipahostgroup:
       ipaadmin_password: SomeADMINpassword
       name: databases
       state: absent
diff --git a/playbooks/hostgroup/ensure-hostgroup-is-present.yml b/playbooks/hostgroup/ensure-hostgroup-is-present.yml
index bc059dbaebbf7193f5d2d891d815a521e8aba360..b4430db5908001053534b51f494befaaee8b389d 100644
--- a/playbooks/hostgroup/ensure-hostgroup-is-present.yml
+++ b/playbooks/hostgroup/ensure-hostgroup-is-present.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure host-group databases is present
-  - ipahostgroup:
+  - name: Ensure host-group databases is present
+    ipahostgroup:
       ipaadmin_password: SomeADMINpassword
       name: databases
       host:
diff --git a/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-absent-in-hostgroup.yml b/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-absent-in-hostgroup.yml
index b3fbd558a95b6c732ea947057d2d27ed2becafec..fe41c5fd5e1cae584176d23ac845285a6f2fd216 100644
--- a/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-absent-in-hostgroup.yml
+++ b/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-absent-in-hostgroup.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure hosts and hostgroups are present in existing databases hostgroup
-  - ipahostgroup:
+  - name: Ensure hosts and hostgroups are absent in existing databases hostgroup
+    ipahostgroup:
       ipaadmin_password: SomeADMINpassword
       name: databases
       host:
diff --git a/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-present-in-hostgroup.yml b/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-present-in-hostgroup.yml
index c103ce927d49793c24a6fddc2b0b416dc204a6aa..7071278358c3edb1e555601aeeea19bc75591fa9 100644
--- a/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-present-in-hostgroup.yml
+++ b/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-present-in-hostgroup.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure hosts and hostgroups are present in existing databases hostgroup
-  - ipahostgroup:
+  - name: Ensure hosts and hostgroups are present in existing databases hostgroup
+    ipahostgroup:
       ipaadmin_password: SomeADMINpassword
       name: databases
       host:
diff --git a/playbooks/hostgroup/rename-hostgroup.yml b/playbooks/hostgroup/rename-hostgroup.yml
index 53937aa150c2f83a56691e7955c89f6ce991e51b..38dce199d94a630f23761eee918cd43162fae6e0 100644
--- a/playbooks/hostgroup/rename-hostgroup.yml
+++ b/playbooks/hostgroup/rename-hostgroup.yml
@@ -4,7 +4,7 @@
   become: yes
 
   tasks:
-  - name : Rename host-group from `databases` to `datalake`
+  - name: Rename host-group from `databases` to `datalake`
     ipahostgroup:
       ipaadmin_password: SomeADMINpassword
       name: databases
diff --git a/playbooks/role/role-is-absent.yml b/playbooks/role/role-is-absent.yml
index d8d88a1d07965ab557dd5292c2f3b85960683991..27151de15dd34ab4f7398e234c11ff3041773863 100644
--- a/playbooks/role/role-is-absent.yml
+++ b/playbooks/role/role-is-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role is absent.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       state: absent
diff --git a/playbooks/role/role-is-present.yml b/playbooks/role/role-is-present.yml
index 89ae6b61ac0d281435819dede81650ec64488e80..80ecd9df9c8e05207ac195eb6653e3a30a727043 100644
--- a/playbooks/role/role-is-present.yml
+++ b/playbooks/role/role-is-present.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role is present.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       description: A role in IPA.
diff --git a/playbooks/role/role-member-group-absent.yml b/playbooks/role/role-member-group-absent.yml
index c4695f9bf7d2b29ed87a6553f38f47646c0af435..cde4f2367e648c1c6eee3eb82aa00aafd7ee0066 100644
--- a/playbooks/role/role-member-group-absent.yml
+++ b/playbooks/role/role-member-group-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'group' is absent.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       group:
diff --git a/playbooks/role/role-member-group-present.yml b/playbooks/role/role-member-group-present.yml
index c14c7ec202f1c38dc32a56ec89a173c3fa817de4..ec162142a5dffa0e9b6b7268096de2beb018349c 100644
--- a/playbooks/role/role-member-group-present.yml
+++ b/playbooks/role/role-member-group-present.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'group' is present.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       group:
diff --git a/playbooks/role/role-member-host-absent.yml b/playbooks/role/role-member-host-absent.yml
index 8acaeb28bc02c41bee20b4c5d5505588db08f0b8..00779195696046b268db6d9564aa6b8f3e288cb7 100644
--- a/playbooks/role/role-member-host-absent.yml
+++ b/playbooks/role/role-member-host-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'host' is absent.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       host:
diff --git a/playbooks/role/role-member-host-present.yml b/playbooks/role/role-member-host-present.yml
index 583597970e5c4a7ea9300d7d41527c4745031fb3..69a9396aa239c02b12247e68c2714e8cb87baee4 100644
--- a/playbooks/role/role-member-host-present.yml
+++ b/playbooks/role/role-member-host-present.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'host' is present.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       host:
diff --git a/playbooks/role/role-member-hostgroup-absent.yml b/playbooks/role/role-member-hostgroup-absent.yml
index ee07f97d205641155eb75550cc7e017577035509..53bec0f34c5d00cc3d3200f88e4370e848a23daa 100644
--- a/playbooks/role/role-member-hostgroup-absent.yml
+++ b/playbooks/role/role-member-hostgroup-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'hostgroup' is absent.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       hostgroup:
diff --git a/playbooks/role/role-member-hostgroup-present.yml b/playbooks/role/role-member-hostgroup-present.yml
index 2caf9a2d121da29609636573ce304e937d768e86..7ca7ea8c4957bc6167b97e07b5e2c1c8300bf646 100644
--- a/playbooks/role/role-member-hostgroup-present.yml
+++ b/playbooks/role/role-member-hostgroup-present.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'hostgroup' is present.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       hostgroup:
diff --git a/playbooks/role/role-member-privilege-absent.yml b/playbooks/role/role-member-privilege-absent.yml
index f60339044d4218f5d3a3aebd018609dd0aed5814..0d18662225dee83bca5d17080b5c789470bea516 100644
--- a/playbooks/role/role-member-privilege-absent.yml
+++ b/playbooks/role/role-member-privilege-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'privilege' is absent.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       privilege:
diff --git a/playbooks/role/role-member-privilege-present.yml b/playbooks/role/role-member-privilege-present.yml
index 837e989fb118d78238df3e0fbad2c004eea6cde5..f7f05346e4ea8030d53438996fa91e83bf1809a2 100644
--- a/playbooks/role/role-member-privilege-present.yml
+++ b/playbooks/role/role-member-privilege-present.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'privilege' is present.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       privilege:
diff --git a/playbooks/role/role-member-service-absent.yml b/playbooks/role/role-member-service-absent.yml
index 595047cf12b7f820cf99c9ccfe866ab8700a1d76..2c5bd8cc00bcdf4f56b957513caf2a12bbaa9809 100644
--- a/playbooks/role/role-member-service-absent.yml
+++ b/playbooks/role/role-member-service-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'service' is absent.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: testrole
       service:
diff --git a/playbooks/role/role-member-service-present.yml b/playbooks/role/role-member-service-present.yml
index 98dc9bea430ebe1f367b9c57617c3d7a538aff1b..505c44a97abcab3b426756e7a23612ffe1a344af 100644
--- a/playbooks/role/role-member-service-present.yml
+++ b/playbooks/role/role-member-service-present.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'service' is present.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       service:
diff --git a/playbooks/role/role-member-user-absent.yml b/playbooks/role/role-member-user-absent.yml
index 3efda216d18bd5c9fe754f4a40df113822c29996..8425d5f482ad5242887b6fa4fad1d0c1386ff596 100644
--- a/playbooks/role/role-member-user-absent.yml
+++ b/playbooks/role/role-member-user-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'user' is absent.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       user:
diff --git a/playbooks/role/role-member-user-present.yml b/playbooks/role/role-member-user-present.yml
index 02a39be86c109135b402c32d1f1864e0ae4d817f..bee5f0d1c0909e324cb79d0735074a0afe76279c 100644
--- a/playbooks/role/role-member-user-present.yml
+++ b/playbooks/role/role-member-user-present.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role member 'user' is present.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       user:
diff --git a/playbooks/role/role-members-absent.yml b/playbooks/role/role-members-absent.yml
index aedd81cb88b9b37ecb8111427af4ba3f0fb66300..6b34abf37856ae8ee4c8f97e26f7276c55aeb5d1 100644
--- a/playbooks/role/role-members-absent.yml
+++ b/playbooks/role/role-members-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role members are absent.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       user:
diff --git a/playbooks/role/role-members-present.yml b/playbooks/role/role-members-present.yml
index d659c1f57ded11ff2f9bc05e322a43e1c1c7d681..aa3ca51a37bf0bd5c7013fc247578e3e46d56fb9 100644
--- a/playbooks/role/role-members-present.yml
+++ b/playbooks/role/role-members-present.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Ensure role members are present.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       user:
@@ -21,3 +22,4 @@
       - User Administrators
       service:
       - service01
+      action: member
diff --git a/playbooks/role/role-rename.yml b/playbooks/role/role-rename.yml
index 9d078f5294060e9781583fb9246dc09d173c862a..9e53969d8943ac33460fd2ee5664547194455871 100644
--- a/playbooks/role/role-rename.yml
+++ b/playbooks/role/role-rename.yml
@@ -5,7 +5,8 @@
   gather_facts: no
 
   tasks:
-  - iparole:
+  - name: Rename role.
+    iparole:
       ipaadmin_password: SomeADMINpassword
       name: somerole
       rename: anotherrole
diff --git a/playbooks/service/service-host-is-absent.yml b/playbooks/service/service-host-is-absent.yml
index 5b3fbcbb75714b9b134399b7dc1587f135985d18..a6e4a376e55273e7c33f40297e44dbb109bc1879 100644
--- a/playbooks/service/service-host-is-absent.yml
+++ b/playbooks/service/service-host-is-absent.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure management host is absent.
-  - ipaservice:
+  - name: Ensure management host is absent.
+    ipaservice:
       ipaadmin_password: SomeADMINpassword
       name: HTTP/www.example.com
       host: "{{ groups.ipaserver[0] }}"
diff --git a/playbooks/service/service-host-is-present.yml b/playbooks/service/service-host-is-present.yml
index 46f5bb6f245745fbf9c2f521ba88c8f4df0084a0..28180667e51afb7d7f3114a15c3dc4bb1459626f 100644
--- a/playbooks/service/service-host-is-present.yml
+++ b/playbooks/service/service-host-is-present.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure management host is present.
-  - ipaservice:
+  - name: Ensure management host is present.
+    ipaservice:
       ipaadmin_password: SomeADMINpassword
       name: HTTP/www.example.com
       host: "{{ groups.ipaserver[0] }}"
diff --git a/playbooks/service/service-is-absent.yml b/playbooks/service/service-is-absent.yml
index 7fd138c092f0d0a0cb1e4ddcd127d86ea3b61dda..8054908ce9966c4ba8a10d1390a334e93dc8c0b2 100644
--- a/playbooks/service/service-is-absent.yml
+++ b/playbooks/service/service-is-absent.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure service is absent
-  - ipaservice:
+  - name: Ensure service is absent
+    ipaservice:
       ipaadmin_password: SomeADMINpassword
       name: HTTP/www.example.com
       state: absent
diff --git a/playbooks/service/service-is-disabled.yml b/playbooks/service/service-is-disabled.yml
index b21e19298b833646353e708e411814068c4a3aae..893669e28add74811973503b9ac96479c6f9b6cf 100644
--- a/playbooks/service/service-is-disabled.yml
+++ b/playbooks/service/service-is-disabled.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure service is disabled
-  - ipaservice:
+  - name: Ensure service is disabled
+    ipaservice:
       ipaadmin_password: SomeADMINpassword
       name: HTTP/www.example.com
       state: disabled
diff --git a/playbooks/service/service-is-present-with-all-attributes.yml b/playbooks/service/service-is-present-with-all-attributes.yml
index a7494cc8668e76ee12fd5cc0d413a84da3d8f36c..b53eaad9db16e746b065197205ba9fcebda6b32e 100644
--- a/playbooks/service/service-is-present-with-all-attributes.yml
+++ b/playbooks/service/service-is-present-with-all-attributes.yml
@@ -5,12 +5,25 @@
   gather_facts: false
 
   tasks:
-  # Ensure service is present
-  - ipaservice:
+  - name: Ensure service is present
+    ipaservice:
       ipaadmin_password: SomeADMINpassword
       name: HTTP/www.example.com
       certificate:
-        - MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/erPSijUAMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQwHhcNMjAwMTIzMDA1NjQ2WhcNMjEwMTIyMDA1NjQ2WjBCMQswCQYDVQQGEwJYWDEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYrdVmsr7iT3f67DM5bb1osSEe5/c91UUMEIcFq5wrgBhzVfs8iIMDVC1yiUGTsDLJNJc4nb1tUxeR9K5fh25E6n/eWDBP75NStotjAXRU4Ahi3FNRhWFOKesds5xNqgDk5/dY8UekJv2yUblQuZzeF8b2XFrmHuCaYuFctzPfWwIDAQABMA0GCSqGSIb3DQEBCwUAA4GBACF+5RS8Ce0HRixGPu4Xd51i+Kzblg++lx8fDJ8GW5G16/Z1AsB72Hc7etJL2PksHlue/xCq6SA9fIfHc4TBNCiWjPSP1NhHJeYyoPiSkcYsqXuxWyoyRLbnAhBVvhoiqZbUt3u3tGB0uMMA0yJvj07mP7Nea2KdBYVH8X1pM0V+
+        - >
+          MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/erPSijUAMA0GCSqGSIb3DQ
+          EBCwUAMEIxCzAJBgNVBAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENp
+          dHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQwHhcNMjAwMT
+          IzMDA1NjQ2WhcNMjEwMTIyMDA1NjQ2WjBCMQswCQYDVQQGEwJYWDEV
+          MBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IE
+          NvbXBhbnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDY
+          rdVmsr7iT3f67DM5bb1osSEe5/c91UUMEIcFq5wrgBhzVfs8iIMDVC
+          1yiUGTsDLJNJc4nb1tUxeR9K5fh25E6n/eWDBP75NStotjAXRU4Ahi
+          3FNRhWFOKesds5xNqgDk5/dY8UekJv2yUblQuZzeF8b2XFrmHuCaYu
+          FctzPfWwIDAQABMA0GCSqGSIb3DQEBCwUAA4GBACF+5RS8Ce0HRixG
+          Pu4Xd51i+Kzblg++lx8fDJ8GW5G16/Z1AsB72Hc7etJL2PksHlue/x
+          Cq6SA9fIfHc4TBNCiWjPSP1NhHJeYyoPiSkcYsqXuxWyoyRLbnAhBV
+          vhoiqZbUt3u3tGB0uMMA0yJvj07mP7Nea2KdBYVH8X1pM0V+
       pac_type:
         - MS-PAC
         - PAD
diff --git a/playbooks/service/service-is-present-with-host-force.yml b/playbooks/service/service-is-present-with-host-force.yml
index a02fa7c2461d0a6d9dc91eeada2b67395a447bc2..aa0ab8e03ae06ba879abf3083e7936c9b8991a5a 100644
--- a/playbooks/service/service-is-present-with-host-force.yml
+++ b/playbooks/service/service-is-present-with-host-force.yml
@@ -5,9 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure service is present
-  - ipaservice:
+  - name: Ensure service is present
+    ipaservice:
       ipaadmin_password: SomeADMINpassword
       name: HTTP/ihavenodns.info
       force: yes
-      # state: absent
diff --git a/playbooks/service/service-is-present-without-host-object.yml b/playbooks/service/service-is-present-without-host-object.yml
index 2496177a16d59db7baf5b1043240eae470ce0070..4c3c4edd6294bf7602169998acf9d673972e8347 100644
--- a/playbooks/service/service-is-present-without-host-object.yml
+++ b/playbooks/service/service-is-present-without-host-object.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure service is present
-  - ipaservice:
+  - name: Ensure service is present
+    ipaservice:
       ipaadmin_password: SomeADMINpassword
       name: HTTP/www.ansible.com
       skip_host_check: yes
diff --git a/playbooks/service/service-is-present.yml b/playbooks/service/service-is-present.yml
index e2c492741e3708b064cfe1090e498e771b026b87..18c8625571429eececfe03b01d3d2b39124ee031 100644
--- a/playbooks/service/service-is-present.yml
+++ b/playbooks/service/service-is-present.yml
@@ -5,7 +5,7 @@
   gather_facts: false
 
   tasks:
-  # Ensure service is present
-  - ipaservice:
+  - name: Ensure service is present
+    ipaservice:
       ipaadmin_password: SomeADMINpassword
       name: HTTP/www.example.com
diff --git a/playbooks/service/service-member-certificate-absent.yml b/playbooks/service/service-member-certificate-absent.yml
index bb4092b91ce6e3361f2d54dab06d7bf9190a46ce..51770846cf5f821cc85c4b8a0dac726140ebb7fc 100644
--- a/playbooks/service/service-member-certificate-absent.yml
+++ b/playbooks/service/service-member-certificate-absent.yml
@@ -5,12 +5,24 @@
   gather_facts: false
 
   tasks:
-  # Ensure service certificate is absent
-  - ipaservice:
+  - name: Ensure service certificate is absent
+    ipaservice:
       ipaadmin_password: SomeADMINpassword
       name: HTTP/www.example.com
-
       certificate:
-        - MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/erPSijUAMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQwHhcNMjAwMTIzMDA1NjQ2WhcNMjEwMTIyMDA1NjQ2WjBCMQswCQYDVQQGEwJYWDEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYrdVmsr7iT3f67DM5bb1osSEe5/c91UUMEIcFq5wrgBhzVfs8iIMDVC1yiUGTsDLJNJc4nb1tUxeR9K5fh25E6n/eWDBP75NStotjAXRU4Ahi3FNRhWFOKesds5xNqgDk5/dY8UekJv2yUblQuZzeF8b2XFrmHuCaYuFctzPfWwIDAQABMA0GCSqGSIb3DQEBCwUAA4GBACF+5RS8Ce0HRixGPu4Xd51i+Kzblg++lx8fDJ8GW5G16/Z1AsB72Hc7etJL2PksHlue/xCq6SA9fIfHc4TBNCiWjPSP1NhHJeYyoPiSkcYsqXuxWyoyRLbnAhBVvhoiqZbUt3u3tGB0uMMA0yJvj07mP7Nea2KdBYVH8X1pM0V+
+        - >
+          MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/erPSijUAMA0GCSqGSIb3DQ
+          EBCwUAMEIxCzAJBgNVBAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENp
+          dHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQwHhcNMjAwMT
+          IzMDA1NjQ2WhcNMjEwMTIyMDA1NjQ2WjBCMQswCQYDVQQGEwJYWDEV
+          MBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IE
+          NvbXBhbnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDY
+          rdVmsr7iT3f67DM5bb1osSEe5/c91UUMEIcFq5wrgBhzVfs8iIMDVC
+          1yiUGTsDLJNJc4nb1tUxeR9K5fh25E6n/eWDBP75NStotjAXRU4Ahi
+          3FNRhWFOKesds5xNqgDk5/dY8UekJv2yUblQuZzeF8b2XFrmHuCaYu
+          FctzPfWwIDAQABMA0GCSqGSIb3DQEBCwUAA4GBACF+5RS8Ce0HRixG
+          Pu4Xd51i+Kzblg++lx8fDJ8GW5G16/Z1AsB72Hc7etJL2PksHlue/x
+          Cq6SA9fIfHc4TBNCiWjPSP1NhHJeYyoPiSkcYsqXuxWyoyRLbnAhBV
+          vhoiqZbUt3u3tGB0uMMA0yJvj07mP7Nea2KdBYVH8X1pM0V+
       action: member
       state: absent
diff --git a/playbooks/service/service-member-certificate-present.yml b/playbooks/service/service-member-certificate-present.yml
index 025d0aa3f23b3bedc7889fcea6ae4f6ebf36f8f8..41c2c4a2c905b9f85301a9ee85a59ef68d5d1902 100644
--- a/playbooks/service/service-member-certificate-present.yml
+++ b/playbooks/service/service-member-certificate-present.yml
@@ -5,11 +5,24 @@
   gather_facts: false
 
   tasks:
-  # Ensure service certificate is present
-  - ipaservice:
+  - name: Ensure service certificate is present
+    ipaservice:
       ipaadmin_password: SomeADMINpassword
       name: HTTP/www.example.com
       certificate:
-        - MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/erPSijUAMA0GCSqGSIb3DQEBCwUAMEIxCzAJBgNVBAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQwHhcNMjAwMTIzMDA1NjQ2WhcNMjEwMTIyMDA1NjQ2WjBCMQswCQYDVQQGEwJYWDEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYrdVmsr7iT3f67DM5bb1osSEe5/c91UUMEIcFq5wrgBhzVfs8iIMDVC1yiUGTsDLJNJc4nb1tUxeR9K5fh25E6n/eWDBP75NStotjAXRU4Ahi3FNRhWFOKesds5xNqgDk5/dY8UekJv2yUblQuZzeF8b2XFrmHuCaYuFctzPfWwIDAQABMA0GCSqGSIb3DQEBCwUAA4GBACF+5RS8Ce0HRixGPu4Xd51i+Kzblg++lx8fDJ8GW5G16/Z1AsB72Hc7etJL2PksHlue/xCq6SA9fIfHc4TBNCiWjPSP1NhHJeYyoPiSkcYsqXuxWyoyRLbnAhBVvhoiqZbUt3u3tGB0uMMA0yJvj07mP7Nea2KdBYVH8X1pM0V+
+        - >
+          MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/erPSijUAMA0GCSqGSIb3DQ
+          EBCwUAMEIxCzAJBgNVBAYTAlhYMRUwEwYDVQQHDAxEZWZhdWx0IENp
+          dHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQwHhcNMjAwMT
+          IzMDA1NjQ2WhcNMjEwMTIyMDA1NjQ2WjBCMQswCQYDVQQGEwJYWDEV
+          MBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IE
+          NvbXBhbnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDY
+          rdVmsr7iT3f67DM5bb1osSEe5/c91UUMEIcFq5wrgBhzVfs8iIMDVC
+          1yiUGTsDLJNJc4nb1tUxeR9K5fh25E6n/eWDBP75NStotjAXRU4Ahi
+          3FNRhWFOKesds5xNqgDk5/dY8UekJv2yUblQuZzeF8b2XFrmHuCaYu
+          FctzPfWwIDAQABMA0GCSqGSIb3DQEBCwUAA4GBACF+5RS8Ce0HRixG
+          Pu4Xd51i+Kzblg++lx8fDJ8GW5G16/Z1AsB72Hc7etJL2PksHlue/x
+          Cq6SA9fIfHc4TBNCiWjPSP1NhHJeYyoPiSkcYsqXuxWyoyRLbnAhBV
+          vhoiqZbUt3u3tGB0uMMA0yJvj07mP7Nea2KdBYVH8X1pM0V+
       action: member
       state: present
diff --git a/playbooks/sudocmd/ensure-sudocmd-is-absent.yml b/playbooks/sudocmd/ensure-sudocmd-is-absent.yml
index 3539ed00372d5efcb39aa0e4ae128f12970e688b..16ebbf4c10695f0d91de4ca5119c8eeb073d5c4d 100644
--- a/playbooks/sudocmd/ensure-sudocmd-is-absent.yml
+++ b/playbooks/sudocmd/ensure-sudocmd-is-absent.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure sudo command is absent
-  - ipasudocmd:
+  - name: Ensure sudo command is absent
+    ipasudocmd:
       ipaadmin_password: SomeADMINpassword
       name: /usr/bin/su
       state: absent
diff --git a/playbooks/sudocmd/ensure-sudocmd-is-present.yml b/playbooks/sudocmd/ensure-sudocmd-is-present.yml
index d648de54282f6c7c5e98e554253e661fb4b27049..c11b5b0dabca057968b1a4dfaf5cb9775708dd5c 100644
--- a/playbooks/sudocmd/ensure-sudocmd-is-present.yml
+++ b/playbooks/sudocmd/ensure-sudocmd-is-present.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure sudo command is present
-  - ipasudocmd:
+  - name: Ensure sudo command is present
+    ipasudocmd:
       ipaadmin_password: SomeADMINpassword
       name: /usr/bin/su
       state: present
diff --git a/playbooks/sudocmdgroup/ensure-sudocmd-are-absent-in-sudocmdgroup.yml b/playbooks/sudocmdgroup/ensure-sudocmd-are-absent-in-sudocmdgroup.yml
index 49ba2d5a5cce63aae1de8d448d470cdf9d38d860..b75be51a8f134faff65e74052f4188ea06b879e7 100644
--- a/playbooks/sudocmdgroup/ensure-sudocmd-are-absent-in-sudocmdgroup.yml
+++ b/playbooks/sudocmdgroup/ensure-sudocmd-are-absent-in-sudocmdgroup.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure sudocmds are absent in sudocmdgroup
-  - ipasudocmdgroup:
+  - name: Ensure sudocmds are absent in sudocmdgroup
+    ipasudocmdgroup:
       ipaadmin_password: SomeADMINpassword
       name: network
       sudocmd:
diff --git a/playbooks/sudocmdgroup/ensure-sudocmd-are-present-in-sudocmdgroup.yml b/playbooks/sudocmdgroup/ensure-sudocmd-are-present-in-sudocmdgroup.yml
index fe9ab207541ff5e43cdd085df2ed5e35471f9c91..4e511d21495d435f47533180c0ec466be0fa47d0 100644
--- a/playbooks/sudocmdgroup/ensure-sudocmd-are-present-in-sudocmdgroup.yml
+++ b/playbooks/sudocmdgroup/ensure-sudocmd-are-present-in-sudocmdgroup.yml
@@ -4,16 +4,16 @@
   become: true
 
   tasks:
-  # Ensure sudo commands are present
-  - ipasudocmd:
-     ipaadmin_password: SomeADMINpassword
-     name:
-     - /usr/sbin/ifconfig
-     - /usr/sbin/iwlist
-     state: present
+  - name: Ensure sudo commands are present
+    ipasudocmd:
+      ipaadmin_password: SomeADMINpassword
+      name:
+      - /usr/sbin/ifconfig
+      - /usr/sbin/iwlist
+      state: present
 
-  # Ensure sudo commands are present in existing sudocmdgroup
-  - ipasudocmdgroup:
+  - name: Ensure sudocmdgroup is present with sudo commands.
+    ipasudocmdgroup:
      ipaadmin_password: SomeADMINpassword
      name: network
      sudocmd:
diff --git a/playbooks/sudocmdgroup/ensure-sudocmdgroup-is-absent.yml b/playbooks/sudocmdgroup/ensure-sudocmdgroup-is-absent.yml
index 7674e5decfd9d8fe0584777e6aed8872fff6b585..338dad71909da4044d47636e78337fcd5cbb200b 100644
--- a/playbooks/sudocmdgroup/ensure-sudocmdgroup-is-absent.yml
+++ b/playbooks/sudocmdgroup/ensure-sudocmdgroup-is-absent.yml
@@ -4,9 +4,9 @@
   become: true
 
   tasks:
-  # Ensure sudocmdgroup is absent
-  - ipasudocmdgroup:
-     ipaadmin_password: pass1234
-     name: network
-     state: absent
-     action: sudocmdgroup
+  - name: Ensure sudocmdgroup is absent
+    ipasudocmdgroup:
+      ipaadmin_password: pass1234
+      name: network
+      state: absent
+      action: sudocmdgroup
diff --git a/playbooks/sudocmdgroup/ensure-sudocmdgroup-is-present.yml b/playbooks/sudocmdgroup/ensure-sudocmdgroup-is-present.yml
index 6809080c93a689eec29dc9c6ee56f50a73a3056f..e97162cd8da7db87c91ba8ad7a9c890135a29727 100644
--- a/playbooks/sudocmdgroup/ensure-sudocmdgroup-is-present.yml
+++ b/playbooks/sudocmdgroup/ensure-sudocmdgroup-is-present.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure sudocmdgroup sudocmds are present
-  - ipasudocmdgroup:
+  - name: Ensure sudocmdgroup sudocmds are present
+    ipasudocmdgroup:
       ipaadmin_password: pass1234
       name: network
       description: Group of important commands.
diff --git a/playbooks/sudorule/ensure-sudorule-does-not-have-sudooption.yml b/playbooks/sudorule/ensure-sudorule-does-not-have-sudooption.yml
index b48a710d96406e83c3f5f0dce1d2a97e7883f4a6..2be625db87c66c80d11a170b422f6864f592b752 100644
--- a/playbooks/sudorule/ensure-sudorule-does-not-have-sudooption.yml
+++ b/playbooks/sudorule/ensure-sudorule-does-not-have-sudooption.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure sudooption is absent in sudorule
-  - ipasudorule:
+  - name: Ensure sudooption '!root' is absent in sudorule
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       sudooption: "!root"
diff --git a/playbooks/sudorule/ensure-sudorule-has-sudooption.yml b/playbooks/sudorule/ensure-sudorule-has-sudooption.yml
index d1a394cfa93e7c51ade1b2e7180f202829362bce..8334ac3e0b6f959d3c0a8871b17598ea8eea987e 100644
--- a/playbooks/sudorule/ensure-sudorule-has-sudooption.yml
+++ b/playbooks/sudorule/ensure-sudorule-has-sudooption.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure sudooption is present in sudorule
-  - ipasudorule:
+  - name: Ensure sudooption '!root' is present in sudorule
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       sudooption: "!root"
diff --git a/playbooks/sudorule/ensure-sudorule-host-member-is-absent.yml b/playbooks/sudorule/ensure-sudorule-host-member-is-absent.yml
index 2f0655c56ef96cff65a695844e855e7b1856dc71..4fb16521b57693e4c9bc0f4d308dded37c358bd9 100644
--- a/playbooks/sudorule/ensure-sudorule-host-member-is-absent.yml
+++ b/playbooks/sudorule/ensure-sudorule-host-member-is-absent.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure host server is absent in Sudo Rule
-  - ipasudorule:
+  - name: Ensure host 'server' is absent in sudorule
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       host: server
diff --git a/playbooks/sudorule/ensure-sudorule-host-member-is-present.yml b/playbooks/sudorule/ensure-sudorule-host-member-is-present.yml
index e0ce73de8f2b4a7bc78d4bf3b2907f66c69d9ed5..1b4fa47b4d58a7232df51bf579ba2b6a88a35468 100644
--- a/playbooks/sudorule/ensure-sudorule-host-member-is-present.yml
+++ b/playbooks/sudorule/ensure-sudorule-host-member-is-present.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure host server is present in Sudo Rule
-  - ipasudorule:
+  - name: Ensure host 'server' is present in sudorule
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       host: server
diff --git a/playbooks/sudorule/ensure-sudorule-hostgroup-member-is-absent.yml b/playbooks/sudorule/ensure-sudorule-hostgroup-member-is-absent.yml
index c30d63a0a99667d6dcacd769509a7db058683fc8..020eead15124591652945e21fafc834bb1e31b69 100644
--- a/playbooks/sudorule/ensure-sudorule-hostgroup-member-is-absent.yml
+++ b/playbooks/sudorule/ensure-sudorule-hostgroup-member-is-absent.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure hostgroup cluster is absent in Sudo Rule
-  - ipasudorule:
+  - name: Ensure hostgroup 'cluster' is absent in sudorule
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       hostgroup: cluster
diff --git a/playbooks/sudorule/ensure-sudorule-hostgroup-member-is-present.yml b/playbooks/sudorule/ensure-sudorule-hostgroup-member-is-present.yml
index 4813213b6caf9512028a0603a45c2ec26ff5a539..4e14ac8d9e6b7e0ccd84f3e848c479736c1bd2ff 100644
--- a/playbooks/sudorule/ensure-sudorule-hostgroup-member-is-present.yml
+++ b/playbooks/sudorule/ensure-sudorule-hostgroup-member-is-present.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure hostgrep cluster is present in Sudo Rule
-  - ipasudorule:
+  - name: Ensure hostgroup 'cluster' is present in sudorule
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       hostgroup: cluster
diff --git a/playbooks/sudorule/ensure-sudorule-is-absent.yml b/playbooks/sudorule/ensure-sudorule-is-absent.yml
index 4b87902c9784f3ff1ee82ad7e5b14fd6290b2733..774ab75ed0fb3f2e1e5d5cd1d189c71cb6b2ded9 100644
--- a/playbooks/sudorule/ensure-sudorule-is-absent.yml
+++ b/playbooks/sudorule/ensure-sudorule-is-absent.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure sudorule command is absent
-  - ipasudorule:
+  - name: Ensure sudorule command is absent
+    ipasudorule:
       ipaadmin_password: pass1234
       name: testrule1
       state: absent
diff --git a/playbooks/sudorule/ensure-sudorule-is-disabled.yml b/playbooks/sudorule/ensure-sudorule-is-disabled.yml
index b51da11875470a2a9ec7fa72f3b40b26f57e880e..b96406e7c99d34a1474ac889f6fddf6b038b962a 100644
--- a/playbooks/sudorule/ensure-sudorule-is-disabled.yml
+++ b/playbooks/sudorule/ensure-sudorule-is-disabled.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure sudorule command is disabled
-  - ipasudorule:
+  - name: Ensure sudorule command is disabled
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       state: disabled
diff --git a/playbooks/sudorule/ensure-sudorule-is-enabled.yml b/playbooks/sudorule/ensure-sudorule-is-enabled.yml
index 4cba3bec35666366ba805650575dd55045e89dfc..6a2cddff942c238114a6d69297701feda4e9ffe2 100644
--- a/playbooks/sudorule/ensure-sudorule-is-enabled.yml
+++ b/playbooks/sudorule/ensure-sudorule-is-enabled.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure sudorule command is enabled
-  - ipasudorule:
+  - name: Ensure sudorule command is enabled
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       state: enabled
diff --git a/playbooks/sudorule/ensure-sudorule-is-present-with-order.yml b/playbooks/sudorule/ensure-sudorule-is-present-with-order.yml
index b884886e6e820b74d56135dd57921999b254c436..0c9d49e70bed144772944c673517a56c80ec180c 100644
--- a/playbooks/sudorule/ensure-sudorule-is-present-with-order.yml
+++ b/playbooks/sudorule/ensure-sudorule-is-present-with-order.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure sudorule is present with the given order.
-  - ipasudorule:
+  - name: Ensure sudorule is present with the given order.
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       order: 2
diff --git a/playbooks/sudorule/ensure-sudorule-is-present.yml b/playbooks/sudorule/ensure-sudorule-is-present.yml
index e88017cf79b917b4da48d2bce20e233cbbe72f54..7d036337fff944afc6e71c9870cfedc4c47365c1 100644
--- a/playbooks/sudorule/ensure-sudorule-is-present.yml
+++ b/playbooks/sudorule/ensure-sudorule-is-present.yml
@@ -4,8 +4,8 @@
   become: true
 
   tasks:
-  # Ensure sudorule command is present
-  - ipasudorule:
+  - name: Ensure sudorule command is present
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       description: A test sudo rule.
diff --git a/playbooks/sudorule/ensure-sudorule-runasuser-is-absent.yml b/playbooks/sudorule/ensure-sudorule-runasuser-is-absent.yml
index 465f386c003db861d75a6188a3b08301243fbdbe..fb25365f195fb18de1a0ecd1d39bfb44ed9bb841 100644
--- a/playbooks/sudorule/ensure-sudorule-runasuser-is-absent.yml
+++ b/playbooks/sudorule/ensure-sudorule-runasuser-is-absent.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure sudorule is present with the given order.
-  - ipasudorule:
+  - name: Ensure sudorule 'runasuser' member 'admin' is absent.
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       runasuser: admin
diff --git a/playbooks/sudorule/ensure-sudorule-runasuser-is-present.yml b/playbooks/sudorule/ensure-sudorule-runasuser-is-present.yml
index 4a5bee941862c2f6a82b7461cda0191f29349f3b..00cbfe065377b59b4746faef8c3ef4b076871e10 100644
--- a/playbooks/sudorule/ensure-sudorule-runasuser-is-present.yml
+++ b/playbooks/sudorule/ensure-sudorule-runasuser-is-present.yml
@@ -5,8 +5,8 @@
   gather_facts: false
 
   tasks:
-  # Ensure sudorule is present with the given order.
-  - ipasudorule:
+  - name: Ensure sudorule 'runasuser' member 'admin' is present.
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       runasuser: admin
diff --git a/playbooks/sudorule/ensure-sudorule-sudocmd-is-absent.yml b/playbooks/sudorule/ensure-sudorule-sudocmd-is-absent.yml
index 3ded226ec774fb77451bd8a8a3079200ccabd4e6..91c717dbd8ea0db1ba4df6893a2cb4b8acd4ddde 100644
--- a/playbooks/sudorule/ensure-sudorule-sudocmd-is-absent.yml
+++ b/playbooks/sudorule/ensure-sudorule-sudocmd-is-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipasudorule:
+  - name: Ensure sudorule members are absent.
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       allow_sudocmd:
diff --git a/playbooks/sudorule/ensure-sudorule-sudocmd-is-present.yml b/playbooks/sudorule/ensure-sudorule-sudocmd-is-present.yml
index 23dd56de84797fc85ab94020e5b530a29914288f..f67c930c6cf369901539e4b0c37a682d1729e4a5 100644
--- a/playbooks/sudorule/ensure-sudorule-sudocmd-is-present.yml
+++ b/playbooks/sudorule/ensure-sudorule-sudocmd-is-present.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipasudorule:
+  - name: Ensure sudorule members are present.
+    ipasudorule:
       ipaadmin_password: SomeADMINpassword
       name: testrule1
       allow_sudocmd:
diff --git a/playbooks/user/add-group.yml b/playbooks/user/add-group.yml
index 46e0faabda92fb8e7a31a37f6c28f020c3fe4a76..20e825c64157e7d20e0679b3af44a2177d1e58a9 100644
--- a/playbooks/user/add-group.yml
+++ b/playbooks/user/add-group.yml
@@ -21,4 +21,3 @@
     ipagroup:
       ipaadmin_password: SomeADMINpassword
       name: appops
-
diff --git a/playbooks/user/add-user.yml b/playbooks/user/add-user.yml
index ed72e51d267fab6947afa198dbfe46fbe1db9108..e33d9928818ac984f059296323b6cbd641ab0f61 100644
--- a/playbooks/user/add-user.yml
+++ b/playbooks/user/add-user.yml
@@ -17,4 +17,3 @@
       passwordexpiration: "2023-01-19 23:59:59"
       password: "no-brain"
       update_password: on_create
-
diff --git a/playbooks/user/delete-user.yml b/playbooks/user/delete-user.yml
index d9239e04d0923ac827dd0f3d497be422e95d4d38..cef949e0cdfbc5788b3529ad3d5c51707e2e892e 100644
--- a/playbooks/user/delete-user.yml
+++ b/playbooks/user/delete-user.yml
@@ -4,7 +4,7 @@
   become: true
 
   tasks:
-  - name: Remove user pinky and brain
+  - name: Remove user pinky
     ipauser:
       ipaadmin_password: SomeADMINpassword
       name: pinky
diff --git a/playbooks/user/user_certificate_absent.yml b/playbooks/user/user_certificate_absent.yml
index d50b40f4c9cc542c24d719afdb340d7748192a42..4aa03fb515f47dc816b7cef6d46555070d919568 100644
--- a/playbooks/user/user_certificate_absent.yml
+++ b/playbooks/user/user_certificate_absent.yml
@@ -9,8 +9,66 @@
     ipauser:
       ipaadmin_password: SomeADMINpassword
       name: test
+      action: member
       certificate:
-      - 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
+        - >
+          MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4Mz
+          VaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXN
+          lzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9f
+          kGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8P
+          uzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmsps
+          ir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6
+          rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73
+          cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUz
+          BRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEG
+          DAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmh
+          sH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv
+          6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31
+          ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17I
+          j2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQC
+          LqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9
+          Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
+        - >
+          MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4ND
+          VaFw0yMDEwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhF
+          onx99AKi44iaZkrlMKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJi
+          jJ7S/4o7h7eeqcJVXJkEhWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClp
+          lysL8OyyEG7pbX/aB9iAfFb/+vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1
+          wNw1rqWKF1ZzagWRlG4QgzRGwQ4quc7yO98TKikj2OPiIt7Zd46hbqQ
+          xmgGBtCkVOZIhxu77OmNrFsXmM4rZZpmqh0UdqcpwkRojVnGXmNqeMC
+          d6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5R1mG4RJ2XAgMBAAGjUz
+          BRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFKOnpTAfBgNVHSMEG
+          DAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBBg97T2Uc
+          1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdotIW
+          lG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKh
+          dhu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMn
+          gCfGUe1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcm
+          DKfNT3YZM8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi
+          8mW+V6bAqn9pir/J14r4YFnqMGgjmdt81tscJV
+        - >
+          MIIC/zCCAeegAwIBAgIUTC33WUoYGFoIVGMwgjbc5J6xCyowDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NT
+          JaFw0yMDEwMTMxNjI4NTJaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCA+6P2eieXHaVJivtWif7
+          SntjjkJm0juRKRRGsT3wt+zCZqoDe8zylTBN0mse/POWXdC+zXRMC2X
+          /c4V10kgrvWbnNdFdUFfBUphiXSoqnUYHZ6Ta+b4UTzC2tECSUEnSCz
+          9n1ofHnyqDyT9FELzVkRkQqexD+BFgZTF39R4q8BA4bWKQy94Kgvb+I
+          P77+ou4fhkBLI1MX5nkWa3Oyu4TMzT/tqgPE70hk8wQzUU2aiwJ7Ism
+          nWE6Ysk7c4DYMJQF/51bi2ByZWERNjyBY6L+ZV90aL4UFR9O+Pw9Hat
+          fHVBRdmzSkKJOr9iu4summWgH0QYDmbkdhGwYvup0EmEfAgMBAAGjUz
+          BRMB0GA1UdDgQWBBSJCQ8ho0Ppe0khVhgiMqsvlgxIjzAfBgNVHSMEG
+          DAWgBSJCQ8ho0Ppe0khVhgiMqsvlgxIjzAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQAILLPnau32r/YoOVCVWQotGtySy36
+          aFlHa3T8IkSpatNCPIf3U0FWS6TVYBwY0PBfdqWBkvCuJTupLh0OEP4
+          TCsDa5pJGOK7blyfiAfcHajqyouACSVNlG63EPvB63h4H4F4HJnhDd4
+          z7pVC/WPB8w5GTBJNjELmeWfH7nj7lu8UkOdLhzTKL40RPs0k4l09yY
+          BmZqqExxGsSfvRBQcrwlAsvQ0E/cTNGbyzOKs3SbOM2WEHye6xNEsey
+          01icYcjfjqvEd6mw3+WOUeJAuDH9/EOloFM2iz5Xp31Ig3WT0RVy+lM
+          riG9GesPpFBs2xp9wQCXLNIkpbHKyYs3voMyBH
       state: absent
diff --git a/playbooks/user/user_certificate_present.yml b/playbooks/user/user_certificate_present.yml
index b32208468659edb7a33c1a4bf79ce11afde490ef..04969c95065b28179f05ae4f5583f74f129032f9 100644
--- a/playbooks/user/user_certificate_present.yml
+++ b/playbooks/user/user_certificate_present.yml
@@ -9,7 +9,65 @@
     ipauser:
       ipaadmin_password: SomeADMINpassword
       name: test
+      action: member
       certificate:
-      - MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4MzVaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXNlzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9fkGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8Puzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmspsir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUzBRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEGDAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmhsH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17Ij2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQCLqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
-      - MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NDVaFw0yMDEwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhFonx99AKi44iaZkrlMKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJijJ7S/4o7h7eeqcJVXJkEhWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClplysL8OyyEG7pbX/aB9iAfFb/+vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1wNw1rqWKF1ZzagWRlG4QgzRGwQ4quc7yO98TKikj2OPiIt7Zd46hbqQxmgGBtCkVOZIhxu77OmNrFsXmM4rZZpmqh0UdqcpwkRojVnGXmNqeMCd6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5R1mG4RJ2XAgMBAAGjUzBRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFKOnpTAfBgNVHSMEGDAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBBg97T2Uc1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdotIWlG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKhdhu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMngCfGUe1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcmDKfNT3YZM8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi8mW+V6bAqn9pir/J14r4YFnqMGgjmdt81tscJV
-      - MIIC/zCCAeegAwIBAgIUTC33WUoYGFoIVGMwgjbc5J6xCyowDQYJKoZIhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NTJaFw0yMDEwMTMxNjI4NTJaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCA+6P2eieXHaVJivtWif7SntjjkJm0juRKRRGsT3wt+zCZqoDe8zylTBN0mse/POWXdC+zXRMC2X/c4V10kgrvWbnNdFdUFfBUphiXSoqnUYHZ6Ta+b4UTzC2tECSUEnSCz9n1ofHnyqDyT9FELzVkRkQqexD+BFgZTF39R4q8BA4bWKQy94Kgvb+IP77+ou4fhkBLI1MX5nkWa3Oyu4TMzT/tqgPE70hk8wQzUU2aiwJ7IsmnWE6Ysk7c4DYMJQF/51bi2ByZWERNjyBY6L+ZV90aL4UFR9O+Pw9HatfHVBRdmzSkKJOr9iu4summWgH0QYDmbkdhGwYvup0EmEfAgMBAAGjUzBRMB0GA1UdDgQWBBSJCQ8ho0Ppe0khVhgiMqsvlgxIjzAfBgNVHSMEGDAWgBSJCQ8ho0Ppe0khVhgiMqsvlgxIjzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAILLPnau32r/YoOVCVWQotGtySy36aFlHa3T8IkSpatNCPIf3U0FWS6TVYBwY0PBfdqWBkvCuJTupLh0OEP4TCsDa5pJGOK7blyfiAfcHajqyouACSVNlG63EPvB63h4H4F4HJnhDd4z7pVC/WPB8w5GTBJNjELmeWfH7nj7lu8UkOdLhzTKL40RPs0k4l09yYBmZqqExxGsSfvRBQcrwlAsvQ0E/cTNGbyzOKs3SbOM2WEHye6xNEsey01icYcjfjqvEd6mw3+WOUeJAuDH9/EOloFM2iz5Xp31Ig3WT0RVy+lMriG9GesPpFBs2xp9wQCXLNIkpbHKyYs3voMyBH
+        - >
+          MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4Mz
+          VaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXN
+          lzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9f
+          kGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8P
+          uzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmsps
+          ir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6
+          rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73
+          cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUz
+          BRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEG
+          DAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmh
+          sH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv
+          6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31
+          ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17I
+          j2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQC
+          LqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9
+          Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
+        - >
+          MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4ND
+          VaFw0yMDEwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhF
+          onx99AKi44iaZkrlMKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJi
+          jJ7S/4o7h7eeqcJVXJkEhWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClp
+          lysL8OyyEG7pbX/aB9iAfFb/+vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1
+          wNw1rqWKF1ZzagWRlG4QgzRGwQ4quc7yO98TKikj2OPiIt7Zd46hbqQ
+          xmgGBtCkVOZIhxu77OmNrFsXmM4rZZpmqh0UdqcpwkRojVnGXmNqeMC
+          d6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5R1mG4RJ2XAgMBAAGjUz
+          BRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFKOnpTAfBgNVHSMEG
+          DAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBBg97T2Uc
+          1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdotIW
+          lG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKh
+          dhu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMn
+          gCfGUe1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcm
+          DKfNT3YZM8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi
+          8mW+V6bAqn9pir/J14r4YFnqMGgjmdt81tscJV
+        - >
+          MIIC/zCCAeegAwIBAgIUTC33WUoYGFoIVGMwgjbc5J6xCyowDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NT
+          JaFw0yMDEwMTMxNjI4NTJaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCA+6P2eieXHaVJivtWif7
+          SntjjkJm0juRKRRGsT3wt+zCZqoDe8zylTBN0mse/POWXdC+zXRMC2X
+          /c4V10kgrvWbnNdFdUFfBUphiXSoqnUYHZ6Ta+b4UTzC2tECSUEnSCz
+          9n1ofHnyqDyT9FELzVkRkQqexD+BFgZTF39R4q8BA4bWKQy94Kgvb+I
+          P77+ou4fhkBLI1MX5nkWa3Oyu4TMzT/tqgPE70hk8wQzUU2aiwJ7Ism
+          nWE6Ysk7c4DYMJQF/51bi2ByZWERNjyBY6L+ZV90aL4UFR9O+Pw9Hat
+          fHVBRdmzSkKJOr9iu4summWgH0QYDmbkdhGwYvup0EmEfAgMBAAGjUz
+          BRMB0GA1UdDgQWBBSJCQ8ho0Ppe0khVhgiMqsvlgxIjzAfBgNVHSMEG
+          DAWgBSJCQ8ho0Ppe0khVhgiMqsvlgxIjzAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQAILLPnau32r/YoOVCVWQotGtySy36
+          aFlHa3T8IkSpatNCPIf3U0FWS6TVYBwY0PBfdqWBkvCuJTupLh0OEP4
+          TCsDa5pJGOK7blyfiAfcHajqyouACSVNlG63EPvB63h4H4F4HJnhDd4
+          z7pVC/WPB8w5GTBJNjELmeWfH7nj7lu8UkOdLhzTKL40RPs0k4l09yY
+          BmZqqExxGsSfvRBQcrwlAsvQ0E/cTNGbyzOKs3SbOM2WEHye6xNEsey
+          01icYcjfjqvEd6mw3+WOUeJAuDH9/EOloFM2iz5Xp31Ig3WT0RVy+lM
+          riG9GesPpFBs2xp9wQCXLNIkpbHKyYs3voMyBH
diff --git a/playbooks/user/users_certificate_absent.yml b/playbooks/user/users_certificate_absent.yml
index 0963e4fea2e6dfc63ff42273dd33e40da302b4df..47c788c381eb07c031eca80a99acde23412a8745 100644
--- a/playbooks/user/users_certificate_absent.yml
+++ b/playbooks/user/users_certificate_absent.yml
@@ -11,7 +11,64 @@
       users:
       - name: test
         certificate:
-        - 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
+        - >
+          MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4Mz
+          VaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXN
+          lzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9f
+          kGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8P
+          uzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmsps
+          ir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6
+          rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73
+          cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUz
+          BRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEG
+          DAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmh
+          sH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv
+          6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31
+          ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17I
+          j2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQC
+          LqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9
+          Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
+        - >
+          MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4ND
+          VaFw0yMDEwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhF
+          onx99AKi44iaZkrlMKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJi
+          jJ7S/4o7h7eeqcJVXJkEhWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClp
+          lysL8OyyEG7pbX/aB9iAfFb/+vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1
+          wNw1rqWKF1ZzagWRlG4QgzRGwQ4quc7yO98TKikj2OPiIt7Zd46hbqQ
+          xmgGBtCkVOZIhxu77OmNrFsXmM4rZZpmqh0UdqcpwkRojVnGXmNqeMC
+          d6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5R1mG4RJ2XAgMBAAGjUz
+          BRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFKOnpTAfBgNVHSMEG
+          DAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBBg97T2Uc
+          1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdotIW
+          lG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKh
+          dhu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMn
+          gCfGUe1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcm
+          DKfNT3YZM8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi
+          8mW+V6bAqn9pir/J14r4YFnqMGgjmdt81tscJV
+        - >
+          MIIC/zCCAeegAwIBAgIUTC33WUoYGFoIVGMwgjbc5J6xCyowDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NT
+          JaFw0yMDEwMTMxNjI4NTJaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCA+6P2eieXHaVJivtWif7
+          SntjjkJm0juRKRRGsT3wt+zCZqoDe8zylTBN0mse/POWXdC+zXRMC2X
+          /c4V10kgrvWbnNdFdUFfBUphiXSoqnUYHZ6Ta+b4UTzC2tECSUEnSCz
+          9n1ofHnyqDyT9FELzVkRkQqexD+BFgZTF39R4q8BA4bWKQy94Kgvb+I
+          P77+ou4fhkBLI1MX5nkWa3Oyu4TMzT/tqgPE70hk8wQzUU2aiwJ7Ism
+          nWE6Ysk7c4DYMJQF/51bi2ByZWERNjyBY6L+ZV90aL4UFR9O+Pw9Hat
+          fHVBRdmzSkKJOr9iu4summWgH0QYDmbkdhGwYvup0EmEfAgMBAAGjUz
+          BRMB0GA1UdDgQWBBSJCQ8ho0Ppe0khVhgiMqsvlgxIjzAfBgNVHSMEG
+          DAWgBSJCQ8ho0Ppe0khVhgiMqsvlgxIjzAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQAILLPnau32r/YoOVCVWQotGtySy36
+          aFlHa3T8IkSpatNCPIf3U0FWS6TVYBwY0PBfdqWBkvCuJTupLh0OEP4
+          TCsDa5pJGOK7blyfiAfcHajqyouACSVNlG63EPvB63h4H4F4HJnhDd4
+          z7pVC/WPB8w5GTBJNjELmeWfH7nj7lu8UkOdLhzTKL40RPs0k4l09yY
+          BmZqqExxGsSfvRBQcrwlAsvQ0E/cTNGbyzOKs3SbOM2WEHye6xNEsey
+          01icYcjfjqvEd6mw3+WOUeJAuDH9/EOloFM2iz5Xp31Ig3WT0RVy+lM
+          riG9GesPpFBs2xp9wQCXLNIkpbHKyYs3voMyBH
       state: absent
diff --git a/playbooks/user/users_certificate_present.yml b/playbooks/user/users_certificate_present.yml
index 8d82a87757f5c1da41b333d366e19af4802ba78b..0386f50f76ebcef10cedcda945a33bb9b898287e 100644
--- a/playbooks/user/users_certificate_present.yml
+++ b/playbooks/user/users_certificate_present.yml
@@ -11,6 +11,63 @@
       users:
       - name: test
         certificate:
-        - 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
+        - >
+          MIIC/zCCAeegAwIBAgIUZGHLaSYg1myp6EI4VGWSC27vOrswDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4Mz
+          VaFw0yMDEwMTMxNjI4MzVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDER/lB8wUAmPTSwSc/NOXN
+          lzdpPOQDSwrhKH6XsqZF4KpQoSY/nmCjAhJmOVpOUo4K2fGRZ0yAH9f
+          kGv6yJP6c7IAFjLeec7GPHVwN4bZrP1DXfTAmfmXhcRQbCYkV+wmq8P
+          uzw/+xA9EJrrodnJPPsE6E8HnSVLF6Ys9+cJMJ7HuwOI+wYt3gkmsps
+          ir1tccmf4x1PP+yHJWdcXyetlFRcmZ8gspjqOR2jb89xSQsh8gcyDW6
+          rPNlSTzYZ2FmNtjES6ZhCsYL31fQbF2QglidlLGpAlvHUUS+xCigW73
+          cvhFPMWXcfO51Mr15RcgYTckY+7QZ2nYqplRBoDlQl6DnAgMBAAGjUz
+          BRMB0GA1UdDgQWBBTPG99XVRdxpOXMZo3Nhy+ldnf13TAfBgNVHSMEG
+          DAWgBTPG99XVRdxpOXMZo3Nhy+ldnf13TAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQAjWTcnIl2mpNbfHAN8DB4Kk+RNRmh
+          sH0y+r/47MXVTMMMToCfofeNY3Jeohu+2lIXMPQfTvXUbDTkNAGsGLv
+          6LtQEUfSREqgk1eY7bT9BFfpH1uV2ZFhCO9jBA+E4bf55Kx7bgUNG31
+          ykBshOsOblOJM1lS/0q4TWHAxrsU2PNwPi8X0ten+eGeB8aRshxS17I
+          j2cH0fdAMmSA+jMAvTIZl853Bxe0HuozauKwOFWL4qHm61c4O/j1mQC
+          LqJKYfJ9mBDWFQLszd/tF+ePKiNhZCQly60F8Lumn2CDZj5UIkl8wk9
+          Wls5n1BIQs+M8AN65NAdv7+js8jKUKCuyji8r3
+        - >
+          MIIC/zCCAeegAwIBAgIUAWE1vaA+mZd3nwZqwWH64EbHvR0wDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4ND
+          VaFw0yMDEwMTMxNjI4NDVaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCWzJibKtN8Zf7LgandINhF
+          onx99AKi44iaZkrlMKEObE6Faf8NTUbUgK3VfJNYmCbA1baLVJ0YZJi
+          jJ7S/4o7h7eeqcJVXJkEhWNTimWXNW/YCzTHe3SSapnSYOKmdHHRClp
+          lysL8OyyEG7pbX/aB9iAfFb/+vUFCX5sMwFFrYxOimKJ9Pc/NRFtdv1
+          wNw1rqWKF1ZzagWRlG4QgzRGwQ4quc7yO98TKikj2OPiIt7Zd46hbqQ
+          xmgGBtCkVOZIhxu77OmNrFsXmM4rZZpmqh0UdqcpwkRojVnGXmNqeMC
+          d6dNTnLhr9wukUYw0KgE57zCDVr9Ix+p/dA5R1mG4RJ2XAgMBAAGjUz
+          BRMB0GA1UdDgQWBBSbuiH2lNVrID3yt1SsFwtOFKOnpTAfBgNVHSMEG
+          DAWgBSbuiH2lNVrID3yt1SsFwtOFKOnpTAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQBCVWd293wWyohFqMFMHRBBg97T2Uc
+          1yeT0dMH4BpuOaCqQp4q5ep+uLcXEI6+3mEwm8pa/ULQCD8yLLdotIW
+          lG3+h/4boFpdiPFcBDgT8kGe+0KOzB8Nt7E13QYOu12MNi10qwGrjKh
+          dhu1xBe4fpY5VCetVU1OLyuTsUyucQsFrtZI0SR83h+blbyoMZ7IhMn
+          gCfGUe1bnYeWnLbpFbigKfPuVDWsMH2kgj05EAd5EgHkWbX8QA8hmcm
+          DKfNT3YZM8kiGQwmFrnQdq8bN0uHR8Nz+24cbmdbHcD65wlDW6GmYxi
+          8mW+V6bAqn9pir/J14r4YFnqMGgjmdt81tscJV
+        - >
+          MIIC/zCCAeegAwIBAgIUTC33WUoYGFoIVGMwgjbc5J6xCyowDQYJKoZ
+          IhvcNAQELBQAwDzENMAsGA1UEAwwEdGVzdDAeFw0xOTEwMTQxNjI4NT
+          JaFw0yMDEwMTMxNjI4NTJaMA8xDTALBgNVBAMMBHRlc3QwggEiMA0GC
+          SqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCA+6P2eieXHaVJivtWif7
+          SntjjkJm0juRKRRGsT3wt+zCZqoDe8zylTBN0mse/POWXdC+zXRMC2X
+          /c4V10kgrvWbnNdFdUFfBUphiXSoqnUYHZ6Ta+b4UTzC2tECSUEnSCz
+          9n1ofHnyqDyT9FELzVkRkQqexD+BFgZTF39R4q8BA4bWKQy94Kgvb+I
+          P77+ou4fhkBLI1MX5nkWa3Oyu4TMzT/tqgPE70hk8wQzUU2aiwJ7Ism
+          nWE6Ysk7c4DYMJQF/51bi2ByZWERNjyBY6L+ZV90aL4UFR9O+Pw9Hat
+          fHVBRdmzSkKJOr9iu4summWgH0QYDmbkdhGwYvup0EmEfAgMBAAGjUz
+          BRMB0GA1UdDgQWBBSJCQ8ho0Ppe0khVhgiMqsvlgxIjzAfBgNVHSMEG
+          DAWgBSJCQ8ho0Ppe0khVhgiMqsvlgxIjzAPBgNVHRMBAf8EBTADAQH/
+          MA0GCSqGSIb3DQEBCwUAA4IBAQAILLPnau32r/YoOVCVWQotGtySy36
+          aFlHa3T8IkSpatNCPIf3U0FWS6TVYBwY0PBfdqWBkvCuJTupLh0OEP4
+          TCsDa5pJGOK7blyfiAfcHajqyouACSVNlG63EPvB63h4H4F4HJnhDd4
+          z7pVC/WPB8w5GTBJNjELmeWfH7nj7lu8UkOdLhzTKL40RPs0k4l09yY
+          BmZqqExxGsSfvRBQcrwlAsvQ0E/cTNGbyzOKs3SbOM2WEHye6xNEsey
+          01icYcjfjqvEd6mw3+WOUeJAuDH9/EOloFM2iz5Xp31Ig3WT0RVy+lM
+          riG9GesPpFBs2xp9wQCXLNIkpbHKyYs3voMyBH
diff --git a/playbooks/vault/data-archive-in-asymmetric-vault.yml b/playbooks/vault/data-archive-in-asymmetric-vault.yml
index 5fd55dfe3115088e8a4cd89e7fcda561f63b5cf5..e05126c29f8fa73eb272f78b018dd46be62d812a 100644
--- a/playbooks/vault/data-archive-in-asymmetric-vault.yml
+++ b/playbooks/vault/data-archive-in-asymmetric-vault.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Archive data into asymmetric vault.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: asymvault
       username: user01
diff --git a/playbooks/vault/data-archive-in-symmetric-vault.yml b/playbooks/vault/data-archive-in-symmetric-vault.yml
index 3d4ae99fa91b904028e993d8b88ae0dc2a852c84..b2a5e25f5f7ec0753504643cde8c409053eddca1 100644
--- a/playbooks/vault/data-archive-in-symmetric-vault.yml
+++ b/playbooks/vault/data-archive-in-symmetric-vault.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Archieve data into symmetric vault.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: symvault
       username: admin
diff --git a/playbooks/vault/ensure-asymetric-vault-is-absent.yml b/playbooks/vault/ensure-asymetric-vault-is-absent.yml
index 7ee6cf39401de1b9eebf9644c62fbbfdbb7178f1..fc6d2fb3caf336927b43901ec0720038bea46910 100644
--- a/playbooks/vault/ensure-asymetric-vault-is-absent.yml
+++ b/playbooks/vault/ensure-asymetric-vault-is-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure asymmetric vault is absent.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: asymvault
       username: admin
diff --git a/playbooks/vault/ensure-asymetric-vault-is-present.yml b/playbooks/vault/ensure-asymetric-vault-is-present.yml
index 247f36fce1cbd4b766a6a69e5a8753639550c573..1c8629f1b65ec6e8cac2392de5e1101901f5e127 100644
--- a/playbooks/vault/ensure-asymetric-vault-is-present.yml
+++ b/playbooks/vault/ensure-asymetric-vault-is-present.yml
@@ -5,9 +5,17 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure asymmetric vault is present.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: asymvault
       username: admin
-      vault_public_key: LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCZ1FDdGFudjRkK3ptSTZ0T3ova1RXdGowY3AxRAowUENoYy8vR0pJMTUzTi9CN3UrN0h3SXlRVlZoNUlXZG1UcCtkWXYzd09yeVpPbzYvbHN5eFJaZ2pZRDRwQ3VGCjlxM295VTFEMnFOZERYeGtSaFFETXBiUEVSWWlHbE1jbzdhN0hIVDk1bGNQbmhObVFkb3VGdHlVbFBUVS96V1kKZldYWTBOeU1UbUtoeFRseUV3SURBUUFCCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=
+      vault_public_key: >
+        LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlHZk1BMEdDU3FHU0liM0RR
+        RUJBUVVBQTRHTkFEQ0JpUUtCZ1FDdGFudjRkK3ptSTZ0T3ova1RXdGowY3Ax
+        RAowUENoYy8vR0pJMTUzTi9CN3UrN0h3SXlRVlZoNUlXZG1UcCtkWXYzd09y
+        eVpPbzYvbHN5eFJaZ2pZRDRwQ3VGCjlxM295VTFEMnFOZERYeGtSaFFETXBi
+        UEVSWWlHbE1jbzdhN0hIVDk1bGNQbmhObVFkb3VGdHlVbFBUVS96V1kKZldY
+        WTBOeU1UbUtoeFRseUV3SURBUUFCCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0t
+        LQo=
       vault_type: asymmetric
diff --git a/playbooks/vault/ensure-service-vault-is-absent.yml b/playbooks/vault/ensure-service-vault-is-absent.yml
index 65c4c8d816d93b5b966ebc94bd03f3b005d7ab95..6643567071fea43f0b31464b19d8929e8756ea16 100644
--- a/playbooks/vault/ensure-service-vault-is-absent.yml
+++ b/playbooks/vault/ensure-service-vault-is-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure service vault is absent.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: svcvault
       service: "HTTP/{{ groups.ipaserver[0] }}"
diff --git a/playbooks/vault/ensure-service-vault-is-present.yml b/playbooks/vault/ensure-service-vault-is-present.yml
index cf6da2236d075f0ca27c1bedcfa023e54a8cfe99..a77739ed6ac3ad7897c447d68959b37bb89b17d1 100644
--- a/playbooks/vault/ensure-service-vault-is-present.yml
+++ b/playbooks/vault/ensure-service-vault-is-present.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure service vault is present.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: svcvault
       service: "HTTP/{{ groups.ipaserver[0] }}"
diff --git a/playbooks/vault/ensure-shared-vault-is-absent.yml b/playbooks/vault/ensure-shared-vault-is-absent.yml
index 0191ab1c3bfa5bd75e335f7873b91b7f1aaa5010..c54506ac5d46b597773fb14c2812fc1e174a38a4 100644
--- a/playbooks/vault/ensure-shared-vault-is-absent.yml
+++ b/playbooks/vault/ensure-shared-vault-is-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure shared vault is absent.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: sharedvault
       shared: True
diff --git a/playbooks/vault/ensure-shared-vault-is-present.yml b/playbooks/vault/ensure-shared-vault-is-present.yml
index c403afccce3bfde96fedc2e3b102d35a52f1e1c5..d47f84e1c10715f9bcd56a7eeb432fe6a1c3a236 100644
--- a/playbooks/vault/ensure-shared-vault-is-present.yml
+++ b/playbooks/vault/ensure-shared-vault-is-present.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure shared vault is present.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: sharedvault
       shared: True
diff --git a/playbooks/vault/ensure-standard-vault-is-absent.yml b/playbooks/vault/ensure-standard-vault-is-absent.yml
index 3d7cd8abeb9dc398f86017d247aaa9ebc07d15e3..9510eb23ffa57f510a608e9a05f76d9cd27ddae5 100644
--- a/playbooks/vault/ensure-standard-vault-is-absent.yml
+++ b/playbooks/vault/ensure-standard-vault-is-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure vault is absent.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: stdvault
       username: admin
diff --git a/playbooks/vault/ensure-standard-vault-is-present.yml b/playbooks/vault/ensure-standard-vault-is-present.yml
index 64d08fec65225f8d30601b0f62afce253558ce71..c0e5f3da0990cf2a1ced1b846aec24d196f2fc04 100644
--- a/playbooks/vault/ensure-standard-vault-is-present.yml
+++ b/playbooks/vault/ensure-standard-vault-is-present.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure standard vault is present.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: stdvault
       vault_type: standard
diff --git a/playbooks/vault/ensure-symetric-vault-is-absent.yml b/playbooks/vault/ensure-symetric-vault-is-absent.yml
index a0d5bbcda3c1571bc14ace2ad7387df68a9ec273..d8c0db620645cbfdaea8eedcdb08fcf087c3208d 100644
--- a/playbooks/vault/ensure-symetric-vault-is-absent.yml
+++ b/playbooks/vault/ensure-symetric-vault-is-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure symmetric vault is absent.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: symvault
       username: admin
diff --git a/playbooks/vault/ensure-symetric-vault-is-present.yml b/playbooks/vault/ensure-symetric-vault-is-present.yml
index 2418ced822e52148ba18e260566ae931fd1da6da..8f7e0fb4d10dbca74f6123ad8ca0e0540948c55e 100644
--- a/playbooks/vault/ensure-symetric-vault-is-present.yml
+++ b/playbooks/vault/ensure-symetric-vault-is-present.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure symmetric vault is present.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: symvault
       username: admin
diff --git a/playbooks/vault/ensure-vault-is-present-with-members.yml b/playbooks/vault/ensure-vault-is-present-with-members.yml
index ba96ad14e9a301a0c1aa895edddd77bfe8c84e69..c837b74b0172a1f0d1e8a2f217f32f3c22882ffe 100644
--- a/playbooks/vault/ensure-vault-is-present-with-members.yml
+++ b/playbooks/vault/ensure-vault-is-present-with-members.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure vault is present, with members.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: stdvault
       vault_type: standard
diff --git a/playbooks/vault/ensure-vault-member-group-is-absent.yml b/playbooks/vault/ensure-vault-member-group-is-absent.yml
index c5e7f7d5780874fe7bbcf1ddd4fa37f4a00df7a9..2df3dc618be395b92475fc43f3937b36a66472c5 100644
--- a/playbooks/vault/ensure-vault-member-group-is-absent.yml
+++ b/playbooks/vault/ensure-vault-member-group-is-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure vault member "group" is absent.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: keychain
       username: admin
diff --git a/playbooks/vault/ensure-vault-member-group-is-present.yml b/playbooks/vault/ensure-vault-member-group-is-present.yml
index 12b52613ad0e5b57560b6b0ff971ca6533baf9f6..eb368d8a32c7433078d076e7297dbf755871bb59 100644
--- a/playbooks/vault/ensure-vault-member-group-is-present.yml
+++ b/playbooks/vault/ensure-vault-member-group-is-present.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure vault member "group" is present.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: keychain
       username: admin
diff --git a/playbooks/vault/ensure-vault-member-user-is-absent.yml b/playbooks/vault/ensure-vault-member-user-is-absent.yml
index 7d0578a62307384483e6bb42ee311de3545afdfe..daf3b69303a3054ceda295f79192c6f6b439b928 100644
--- a/playbooks/vault/ensure-vault-member-user-is-absent.yml
+++ b/playbooks/vault/ensure-vault-member-user-is-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure vault member "user" is absent.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: keychain
       username: admin
diff --git a/playbooks/vault/ensure-vault-member-user-is-present.yml b/playbooks/vault/ensure-vault-member-user-is-present.yml
index a04e6e209ac13dbc3de1ecfcb1683f260256a545..d1a6cf37292b13e21b0b194e87a890097c190f7c 100644
--- a/playbooks/vault/ensure-vault-member-user-is-present.yml
+++ b/playbooks/vault/ensure-vault-member-user-is-present.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure vault member "user" is present.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: keychain
       username: admin
diff --git a/playbooks/vault/ensure-vault-owner-is-absent.yml b/playbooks/vault/ensure-vault-owner-is-absent.yml
index 817a324b43795ac58534b4bfa00bc21f4aa49fb2..2807c08c953b5954d44c9859a1f408436cfbf384 100644
--- a/playbooks/vault/ensure-vault-owner-is-absent.yml
+++ b/playbooks/vault/ensure-vault-owner-is-absent.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure vault owners and ownergroups are absent.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: symvault
       username: admin
diff --git a/playbooks/vault/ensure-vault-owner-is-present.yml b/playbooks/vault/ensure-vault-owner-is-present.yml
index 7c4cfb200746e50f7d38cfed03ad4b43e0cef949..31aba300deea2992b739b0de0b4dd0829ca09087 100644
--- a/playbooks/vault/ensure-vault-owner-is-present.yml
+++ b/playbooks/vault/ensure-vault-owner-is-present.yml
@@ -5,7 +5,8 @@
   gather_facts: false
 
   tasks:
-  - ipavault:
+  - name: Ensure vault owners and ownergroups are present.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: symvault
       username: admin
diff --git a/playbooks/vault/retrive-data-asymmetric-vault.yml b/playbooks/vault/retrive-data-asymmetric-vault.yml
index 0bda412de8f2dc69790cc2c21b9a74fb0f0b220c..35472d20addde667bd1011b289422e79bd818d13 100644
--- a/playbooks/vault/retrive-data-asymmetric-vault.yml
+++ b/playbooks/vault/retrive-data-asymmetric-vault.yml
@@ -14,5 +14,6 @@
         state: retrieved
       register: result
       no_log: true
-    - debug:
-       msg: "Data: {{ result.vault.data }}"
+    - name: Display retrieved data.
+      debug:
+        msg: "Data: {{ result.vault.data }}"
diff --git a/playbooks/vault/retrive-data-symmetric-vault.yml b/playbooks/vault/retrive-data-symmetric-vault.yml
index 609c5f5d7a2238ca5096df73844eab9a78624e26..98902a1bcb4f44d2ee8d666555476340fe9eaf7f 100644
--- a/playbooks/vault/retrive-data-symmetric-vault.yml
+++ b/playbooks/vault/retrive-data-symmetric-vault.yml
@@ -14,5 +14,6 @@
         state: retrieved
       register: result
       no_log: true
-    - debug:
-        msg: "{{ result.vault.data }}"
+    - name: Display retrieved data.
+      debug:
+        msg: "Data: {{ result.vault.data }}"
diff --git a/playbooks/vault/vault-is-present-with-password-file.yml b/playbooks/vault/vault-is-present-with-password-file.yml
index bedb75dfea5b31f37d84f1b85ff4ab3f600dea8a..c92e2a6bfcd7ba93429ddad589817776ab416eaa 100644
--- a/playbooks/vault/vault-is-present-with-password-file.yml
+++ b/playbooks/vault/vault-is-present-with-password-file.yml
@@ -5,18 +5,21 @@
   gather_facts: True
 
   tasks:
-  - copy:
+  - name: Copy file containing password to server.
+    copy:
       src: "{{ playbook_dir }}/password.txt"
       dest: "{{ ansible_facts['env'].HOME }}/password.txt"
       owner: "{{ ansible_user }}"
       group: "{{ ansible_user }}"
       mode: 0600
-  - ipavault:
+  - name: Ensure symmetric vault exists with password from file.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: symvault
       username: admin
       vault_type: symmetric
       vault_password_file: "{{ ansible_facts['env'].HOME }}/password.txt"
-  - file:
+  - name: Remove file containing password from server.
+    file:
       path: "{{ ansible_facts['env'].HOME }}/password.txt"
       state: absent
diff --git a/playbooks/vault/vault-is-present-with-public-key-file.yml b/playbooks/vault/vault-is-present-with-public-key-file.yml
index 5d7eda02ddba3a172de697d73143ed914d3ecf8c..cd1e7597cf1b8d0d6ac09772bc76023cf19d54a1 100644
--- a/playbooks/vault/vault-is-present-with-public-key-file.yml
+++ b/playbooks/vault/vault-is-present-with-public-key-file.yml
@@ -10,18 +10,21 @@
   gather_facts: True
 
   tasks:
-  - copy:
+  - name: Copy public key file to server.
+    copy:
       src: "{{ playbook_dir }}/public.pem"
       dest: "{{ ansible_facts['env'].HOME }}/public.pem"
       owner: "{{ ansible_user }}"
       group: "{{ ansible_user }}"
       mode: 0600
-  - ipavault:
+  - name: Ensure asymmetric vault exists with public key from file.
+    ipavault:
       ipaadmin_password: SomeADMINpassword
       name: asymvault
       username: admin
       vault_type: asymmetric
       vault_public_key_file: "{{ ansible_facts['env'].HOME }}/public.pem"
-  - file:
+  - name: Remove public key file from server.
+    file:
       path: "{{ ansible_facts['env'].HOME }}/public.pem"
       state: absent
diff --git a/plugins/modules/ipaconfig.py b/plugins/modules/ipaconfig.py
index 1d40890d1d129953054a2d4a3a212a4614c3b3ec..1239fbc3cf98e354ad1b7511e41cb68eaae7d848 100644
--- a/plugins/modules/ipaconfig.py
+++ b/plugins/modules/ipaconfig.py
@@ -159,7 +159,7 @@ EXAMPLES = '''
       register: result
     - name: display default login shell
       debug:
-        msg: '{{result.config.defaultshell[0] }}'
+        msg: '{{ result.config.defaultshell[0] }}'
 
     - name: set defaultshell and maxusername
       ipaconfig:
diff --git a/roles/ipabackup/meta/main.yml b/roles/ipabackup/meta/main.yml
index db6732af7d7f74b929f0f90fd16cde8494434c3a..6131e0d73d422b01c8a309f386e4f1356b8e3689 100644
--- a/roles/ipabackup/meta/main.yml
+++ b/roles/ipabackup/meta/main.yml
@@ -1,3 +1,4 @@
+---
 dependencies: []
 
 galaxy_info:
diff --git a/roles/ipabackup/vars/Fedora.yml b/roles/ipabackup/vars/Fedora.yml
index 7711204114f8840dfecd58b17c3fb23c5e607bd4..549f32bddf60bf5130e654aebe594cf3ac677fc9 100644
--- a/roles/ipabackup/vars/Fedora.yml
+++ b/roles/ipabackup/vars/Fedora.yml
@@ -1,3 +1,6 @@
+# defaults file for ipabackup
+# vars/Fedora.yml
+---
 ipaserver_packages: [ "freeipa-server" ]
 ipaserver_packages_dns: [ "freeipa-server-dns" ]
 ipaserver_packages_adtrust: [ "freeipa-server-trust-ad" ]
diff --git a/roles/ipabackup/vars/RedHat-7.yml b/roles/ipabackup/vars/RedHat-7.yml
index 1186375745dd9beab8e22733f7582dbb9eeb188d..126f0921368d7c193e84d09da85530ab11f5a914 100644
--- a/roles/ipabackup/vars/RedHat-7.yml
+++ b/roles/ipabackup/vars/RedHat-7.yml
@@ -1,6 +1,7 @@
-# defaults file for ipaserver
-# vars/rhel.yml
+# defaults file for ipabackup
+# vars/RedHat-7.yml
+---
 ipaserver_packages: [ "ipa-server", "libselinux-python" ]
 ipaserver_packages_dns: [ "ipa-server-dns" ]
 ipaserver_packages_adtrust: [ "ipa-server-trust-ad" ]
-ipaserver_packages_firewalld: [ "firewalld" ]
\ No newline at end of file
+ipaserver_packages_firewalld: [ "firewalld" ]
diff --git a/roles/ipabackup/vars/RedHat-8.yml b/roles/ipabackup/vars/RedHat-8.yml
index 7f5ae4644180195d9f956dd7fb2b641b992d67aa..55a154d85cd5994ad2801264c94a6f3d1b0300ac 100644
--- a/roles/ipabackup/vars/RedHat-8.yml
+++ b/roles/ipabackup/vars/RedHat-8.yml
@@ -1,5 +1,6 @@
-# defaults file for ipaserver
+# defaults file for ipabackup
 # vars/RedHat-8.yml
+---
 ipaserver_packages: [ "@idm:DL1/server" ]
 ipaserver_packages_dns: [ "@idm:DL1/dns" ]
 ipaserver_packages_adtrust: [ "@idm:DL1/adtrust" ]
diff --git a/roles/ipabackup/vars/Ubuntu.yml b/roles/ipabackup/vars/Ubuntu.yml
index d0e01ea8a0a20451821e1d0a0c043f1d78b2c3cb..ea6ea233a849d618580a0b6a826d16827320149b 100644
--- a/roles/ipabackup/vars/Ubuntu.yml
+++ b/roles/ipabackup/vars/Ubuntu.yml
@@ -1,4 +1,6 @@
+# defaults file for ipabackup
 # vars/Ubuntu.yml
+---
 ipaserver_packages: [ "freeipa-server" ]
 ipaserver_packages_dns: [ "freeipa-server-dns" ]
 ipaserver_packages_adtrust: [ "freeipa-server-trust-ad" ]
diff --git a/roles/ipabackup/vars/default.yml b/roles/ipabackup/vars/default.yml
index 4d28ac65f73bd3a1c5ca0ad9f6f7f874740c533e..0300948b6de96b9dead2ee8eb7a1a6a3ef0a3022 100644
--- a/roles/ipabackup/vars/default.yml
+++ b/roles/ipabackup/vars/default.yml
@@ -1,5 +1,6 @@
-# defaults file for ipaserver
+# defaults file for ipabackup
 # vars/default.yml
+---
 ipaserver_packages: [ "ipa-server" ]
 ipaserver_packages_dns: [ "ipa-server-dns" ]
 ipaserver_packages_adtrust: [ "freeipa-server-trust-ad" ]
diff --git a/roles/ipaclient/meta/main.yml b/roles/ipaclient/meta/main.yml
index 5c0cb49c53a54e55cb36ecb9133620af83ba5ded..356b2db01ceadba6783d7305ca8e3d6085d5161e 100644
--- a/roles/ipaclient/meta/main.yml
+++ b/roles/ipaclient/meta/main.yml
@@ -1,3 +1,4 @@
+---
 dependencies: []
 
 galaxy_info:
diff --git a/roles/ipaclient/vars/Debian.yml b/roles/ipaclient/vars/Debian.yml
index 96d9c326da3592cba52a8143886a404863a74b18..efa7c4d44d54dd1b25c1b7b2d138b29d99848e2f 100644
--- a/roles/ipaclient/vars/Debian.yml
+++ b/roles/ipaclient/vars/Debian.yml
@@ -1,2 +1,4 @@
+# defaults file for ipaclient
 # vars/Debian.yml
+---
 ipaclient_packages: [ "freeipa-client" ]
diff --git a/roles/ipaclient/vars/Fedora-25.yml b/roles/ipaclient/vars/Fedora-25.yml
index 1a62ffa2f7d3edd5bcd8acacd5bd4c4a4fc3bddf..9999b3317a634bc9e040a62f3389c17ab5fe8e8f 100644
--- a/roles/ipaclient/vars/Fedora-25.yml
+++ b/roles/ipaclient/vars/Fedora-25.yml
@@ -1,2 +1,5 @@
+# defaults file for ipaclient
+# vars/Fedora-25.yml
+---
 ipaclient_packages: [ "ipa-client", "libselinux-python" ]
-#ansible_python_interpreter: '/usr/bin/python2'
\ No newline at end of file
+#ansible_python_interpreter: '/usr/bin/python2'
diff --git a/roles/ipaclient/vars/Fedora-26.yml b/roles/ipaclient/vars/Fedora-26.yml
index 1a62ffa2f7d3edd5bcd8acacd5bd4c4a4fc3bddf..12722c8a829c4798c38c0b9ab43df575293c914f 100644
--- a/roles/ipaclient/vars/Fedora-26.yml
+++ b/roles/ipaclient/vars/Fedora-26.yml
@@ -1,2 +1,5 @@
+# defaults file for ipaclient
+# vars/Fedora-26.yml
+---
 ipaclient_packages: [ "ipa-client", "libselinux-python" ]
-#ansible_python_interpreter: '/usr/bin/python2'
\ No newline at end of file
+#ansible_python_interpreter: '/usr/bin/python2'
diff --git a/roles/ipaclient/vars/RedHat-7.3.yml b/roles/ipaclient/vars/RedHat-7.3.yml
index 2501eab533a301879d15b3027768a4aaf262fcaa..51d2b10d1f2c23a49b4779ff6df923f4135aa0f2 100644
--- a/roles/ipaclient/vars/RedHat-7.3.yml
+++ b/roles/ipaclient/vars/RedHat-7.3.yml
@@ -1,4 +1,5 @@
 # defaults file for ipaclient
-# vars/rhel.yml
+# vars/RedHat-7.3.yml
+---
 ipaclient_packages: [ "ipa-client", "ipa-admintools", "libselinux-python" ]
 #ansible_python_interpreter: '/usr/bin/python2'
diff --git a/roles/ipaclient/vars/RedHat-7.yml b/roles/ipaclient/vars/RedHat-7.yml
index 51ab7bfce86b6e0e81cfca4fb9d616936e18cd83..c2ea3ca58002b09f73bd37f41b7d5d76b0c96655 100644
--- a/roles/ipaclient/vars/RedHat-7.yml
+++ b/roles/ipaclient/vars/RedHat-7.yml
@@ -1,4 +1,5 @@
 # defaults file for ipaclient
-# vars/rhel.yml
+# vars/RedHat-7
+---
 ipaclient_packages: [ "ipa-client", "libselinux-python" ]
 #ansible_python_interpreter: '/usr/bin/python2'
diff --git a/roles/ipaclient/vars/RedHat-8.yml b/roles/ipaclient/vars/RedHat-8.yml
index f2b883c1c1a35f3a3d02177086e775eb66411a10..65b554e0ebb2ffed61ff74378b54ff5acc7617a4 100644
--- a/roles/ipaclient/vars/RedHat-8.yml
+++ b/roles/ipaclient/vars/RedHat-8.yml
@@ -1,3 +1,4 @@
 # defaults file for ipaclient
 # vars/RedHat-8.yml
+---
 ipaclient_packages: [ "@idm:DL1/client" ]
diff --git a/roles/ipaclient/vars/default.yml b/roles/ipaclient/vars/default.yml
index ff34748a4e40a07c413f4b4b3f845bd1c62aa4f5..a28d81a133a8b32cc31ad1d5797469419c03fc34 100644
--- a/roles/ipaclient/vars/default.yml
+++ b/roles/ipaclient/vars/default.yml
@@ -1,4 +1,5 @@
 # defaults file for ipaclient
 # vars/default.yml
+---
 ipaclient_packages: [ "ipa-client", "python3-libselinux" ]
 #ansible_python_interpreter: '/usr/bin/python3'
diff --git a/roles/ipareplica/meta/main.yml b/roles/ipareplica/meta/main.yml
index d7964820a92e4c5ccdae556cc2012cdc5ba2c185..6b1021ad4bd84f25555aa84ca76a72ec9915687d 100644
--- a/roles/ipareplica/meta/main.yml
+++ b/roles/ipareplica/meta/main.yml
@@ -1,3 +1,4 @@
+---
 dependencies: []
 
 galaxy_info:
diff --git a/roles/ipareplica/vars/Fedora-25.yml b/roles/ipareplica/vars/Fedora-25.yml
index ce981ff81f3a352532d0ac7f5bfb38db90a27fe4..3ed54d5a4f68e8f6c49ba3d98926cb6ea3b71fa8 100644
--- a/roles/ipareplica/vars/Fedora-25.yml
+++ b/roles/ipareplica/vars/Fedora-25.yml
@@ -1,6 +1,7 @@
-# Fedora-25 defaults file for ipareplica
+# defaults file for ipareplica
 # vars/Fedora-25.yml
+---
 ipareplica_packages: [ "ipa-server", "libselinux-python" ]
 ipareplica_packages_dns: [ "ipa-server-dns" ]
 ipareplica_packages_adtrust: [ "ipa-server-trust-ad" ]
-ipareplica_packages_firewalld: [ "firewalld" ]
\ No newline at end of file
+ipareplica_packages_firewalld: [ "firewalld" ]
diff --git a/roles/ipareplica/vars/Fedora-26.yml b/roles/ipareplica/vars/Fedora-26.yml
index 5a65e43a895cf3a1c41d3379f659652ba8096d02..df2d71623dc36c8bca75527377a7d52f752ce17e 100644
--- a/roles/ipareplica/vars/Fedora-26.yml
+++ b/roles/ipareplica/vars/Fedora-26.yml
@@ -1,6 +1,7 @@
-# Fedora defaults file for ipareplica
+# defaults file for ipareplica
 # vars/Fedora-26.yml
+---
 ipareplica_packages: [ "ipa-server", "libselinux-python" ]
 ipareplica_packages_dns: [ "ipa-server-dns" ]
 ipareplica_packages_adtrust: [ "ipa-server-trust-ad" ]
-ipareplica_packages_firewalld: [ "firewalld" ]
\ No newline at end of file
+ipareplica_packages_firewalld: [ "firewalld" ]
diff --git a/roles/ipareplica/vars/Fedora-27.yml b/roles/ipareplica/vars/Fedora-27.yml
index 5d6f02a1eaaf51f4cd2f3ad63d8d543bfa033bb6..c5ed279bf11fb395a693bc3f26404edc19b0cfb6 100644
--- a/roles/ipareplica/vars/Fedora-27.yml
+++ b/roles/ipareplica/vars/Fedora-27.yml
@@ -1,6 +1,7 @@
-# Fedora defaults file for ipareplica
-# vars/Fedora.yml
+# defaults file for ipareplica
+# vars/Fedora-27.yml
+---
 ipareplica_packages: [ "ipa-server", "libselinux-python" ]
 ipareplica_packages_dns: [ "ipa-server-dns" ]
 ipareplica_packages_adtrust: [ "ipa-server-trust-ad" ]
-ipareplica_packages_firewalld: [ "firewalld" ]
\ No newline at end of file
+ipareplica_packages_firewalld: [ "firewalld" ]
diff --git a/roles/ipareplica/vars/Fedora.yml b/roles/ipareplica/vars/Fedora.yml
index f19fb996943418c712a20402e6aad2e09433dc60..ffbdaeec4f5a49813f809ed5669368d3114997f4 100644
--- a/roles/ipareplica/vars/Fedora.yml
+++ b/roles/ipareplica/vars/Fedora.yml
@@ -1,6 +1,7 @@
-# Fedora defaults file for ipareplica
+# defaults file for ipareplica
 # vars/Fedora.yml
+---
 ipareplica_packages: [ "freeipa-server", "python3-libselinux" ]
 ipareplica_packages_dns: [ "freeipa-server-dns" ]
 ipareplica_packages_adtrust: [ "freeipa-server-trust-ad" ]
-ipareplica_packages_firewalld: [ "firewalld" ]
\ No newline at end of file
+ipareplica_packages_firewalld: [ "firewalld" ]
diff --git a/roles/ipareplica/vars/RedHat-7.yml b/roles/ipareplica/vars/RedHat-7.yml
index 614de3e5a4c20c71714a1a0c7dc96b8f7e4c8ff7..34843523ee22d5bfee5b75866ae0bc7e4e96d8d3 100644
--- a/roles/ipareplica/vars/RedHat-7.yml
+++ b/roles/ipareplica/vars/RedHat-7.yml
@@ -1,6 +1,7 @@
 # defaults file for ipareplica
 # vars/RedHat-7.yml
+---
 ipareplica_packages: [ "ipa-server", "libselinux-python" ]
 ipareplica_packages_dns: [ "ipa-server-dns" ]
 ipareplica_packages_adtrust: [ "ipa-server-trust-ad" ]
-ipareplica_packages_firewalld: [ "firewalld" ]
\ No newline at end of file
+ipareplica_packages_firewalld: [ "firewalld" ]
diff --git a/roles/ipareplica/vars/RedHat-8.yml b/roles/ipareplica/vars/RedHat-8.yml
index 025730253dfa65685d81a61da93de0eb4bab9634..a1b52994e14495e6420ac72c7986c08b31ac2f89 100644
--- a/roles/ipareplica/vars/RedHat-8.yml
+++ b/roles/ipareplica/vars/RedHat-8.yml
@@ -1,5 +1,6 @@
 # defaults file for ipareplica
 # vars/RedHat-8.yml
+---
 ipareplica_packages: [ "@idm:DL1/server" ]
 ipareplica_packages_dns: [ "@idm:DL1/dns" ]
 ipareplica_packages_adtrust: [ "@idm:DL1/adtrust" ]
diff --git a/roles/ipareplica/vars/Ubuntu.yml b/roles/ipareplica/vars/Ubuntu.yml
index 7cdabbfbde0e0f6d017db9e668b3550a37e0fa26..23c2e89db26f4ff0297c79463e81e06c76d19aa8 100644
--- a/roles/ipareplica/vars/Ubuntu.yml
+++ b/roles/ipareplica/vars/Ubuntu.yml
@@ -1,4 +1,6 @@
+# defaults file for ipareplica
 # vars/Ubuntu.yml
+---
 ipareplica_packages: [ "freeipa-server" ]
 ipareplica_packages_dns: [ "freeipa-server-dns" ]
 ipareplica_packages_adtrust: [ "freeipa-server-trust-ad" ]
diff --git a/roles/ipareplica/vars/default.yml b/roles/ipareplica/vars/default.yml
index ce7393a1b2ee4fa668f7b763716f61bf6414196e..0afedeb377e907e63adc1df1ef30dc90e713e868 100644
--- a/roles/ipareplica/vars/default.yml
+++ b/roles/ipareplica/vars/default.yml
@@ -1,5 +1,6 @@
 # defaults file for ipareplica
 # vars/default.yml
+---
 ipareplica_packages: [ "freeipa-server", "python3-libselinux" ]
 ipareplica_packages_dns: [ "freeipa-server-dns" ]
 ipareplica_packages_adtrust: [ "freeipa-server-trust-ad" ]
diff --git a/roles/ipaserver/meta/main.yml b/roles/ipaserver/meta/main.yml
index 99abca344839ae4d235ebb35f3cc2946f68f7d1d..86a05f9b73b9dcbd1fed6422a5fde26cefe50f41 100644
--- a/roles/ipaserver/meta/main.yml
+++ b/roles/ipaserver/meta/main.yml
@@ -1,3 +1,4 @@
+---
 dependencies: []
 
 galaxy_info:
diff --git a/roles/ipaserver/tasks/copy_external_cert.yml b/roles/ipaserver/tasks/copy_external_cert.yml
index 2d394a9687e0564c468265f004c9ae36620de685..7352f835cd99d6a59016b12a454d445e95a49296 100644
--- a/roles/ipaserver/tasks/copy_external_cert.yml
+++ b/roles/ipaserver/tasks/copy_external_cert.yml
@@ -1,3 +1,4 @@
+---
 - name: Install - Initialize ipaserver_external_cert_files
   set_fact:
      ipaserver_external_cert_files: []
@@ -6,6 +7,7 @@
   copy:
     src: "{{ item }}"
     dest: "/root/{{ item | basename }}"
+    mode: preserve
     force: yes
 - name: Install - Extend ipaserver_external_cert_files with "/root/{{ item | basename }}"
   set_fact:
diff --git a/roles/ipaserver/tasks/uninstall.yml b/roles/ipaserver/tasks/uninstall.yml
index 71de9faf1fe331c8ceea3c4d3f2d0f98ec952f50..27d8356aea11e031f53d166c3c288c94192cf344 100644
--- a/roles/ipaserver/tasks/uninstall.yml
+++ b/roles/ipaserver/tasks/uninstall.yml
@@ -8,7 +8,7 @@
     -U
     {{ '--ignore-topology-disconnect' if ipaserver_ignore_topology_disconnect
        | bool else '' }}
-    {{ '--ignore-last-of-role' if ipaserver_ignore_last_of_role | bool else ''}}
+    {{ '--ignore-last-of-role' if ipaserver_ignore_last_of_role | bool else '' }}
   register: uninstall
   # 1 means that uninstall failed because IPA server was not configured
   failed_when: uninstall.rc != 0 and uninstall.rc != 1
diff --git a/roles/ipaserver/vars/Fedora-25.yml b/roles/ipaserver/vars/Fedora-25.yml
index 374056c0aa3cdff4f8a350dcc64debf1e25fe4fb..eaf249d9bced6b499f49a8dcb3133c7455d61cc6 100644
--- a/roles/ipaserver/vars/Fedora-25.yml
+++ b/roles/ipaserver/vars/Fedora-25.yml
@@ -1,4 +1,7 @@
+# defaults file for ipaserver
+# vars/Fedora-25.yml
+---
 ipaserver_packages: [ "ipa-server", "libselinux-python" ]
 ipaserver_packages_dns: [ "ipa-server-dns" ]
 ipaserver_packages_adtrust: [ "ipa-server-trust-ad" ]
-ipaserver_packages_firewalld: [ "firewalld" ]
\ No newline at end of file
+ipaserver_packages_firewalld: [ "firewalld" ]
diff --git a/roles/ipaserver/vars/Fedora-26.yml b/roles/ipaserver/vars/Fedora-26.yml
index 374056c0aa3cdff4f8a350dcc64debf1e25fe4fb..9e9a4d68389a53768a792c1045d99776d9be342a 100644
--- a/roles/ipaserver/vars/Fedora-26.yml
+++ b/roles/ipaserver/vars/Fedora-26.yml
@@ -1,4 +1,7 @@
+# defaults file for ipaserver
+# vars/Fedora-26.yml
+---
 ipaserver_packages: [ "ipa-server", "libselinux-python" ]
 ipaserver_packages_dns: [ "ipa-server-dns" ]
 ipaserver_packages_adtrust: [ "ipa-server-trust-ad" ]
-ipaserver_packages_firewalld: [ "firewalld" ]
\ No newline at end of file
+ipaserver_packages_firewalld: [ "firewalld" ]
diff --git a/roles/ipaserver/vars/Fedora-27.yml b/roles/ipaserver/vars/Fedora-27.yml
index b8bfb5774bf5587ee8b908346f524e6ad73951fc..ffa2f0da5657a0d34596030212868ba91d21c5b7 100644
--- a/roles/ipaserver/vars/Fedora-27.yml
+++ b/roles/ipaserver/vars/Fedora-27.yml
@@ -1,3 +1,6 @@
+# defaults file for ipaserver
+# vars/Fedora-27.yml
+---
 ipaserver_packages: [ "ipa-server", "libselinux-python" ]
 ipaserver_packages_dns: [ "ipa-server-dns" ]
 ipaserver_packages_adtrust: [ "ipa-server-trust-ad" ]
diff --git a/roles/ipaserver/vars/Fedora.yml b/roles/ipaserver/vars/Fedora.yml
index 55a383828196a1b810c4a3faf600944d21deeffa..147013408771b49aaa5409064566624e652ad65a 100644
--- a/roles/ipaserver/vars/Fedora.yml
+++ b/roles/ipaserver/vars/Fedora.yml
@@ -1,4 +1,7 @@
+# defaults file for ipaserver
+# vars/Fedora.yml
+---
 ipaserver_packages: [ "freeipa-server", "python3-libselinux" ]
 ipaserver_packages_dns: [ "freeipa-server-dns" ]
 ipaserver_packages_adtrust: [ "freeipa-server-trust-ad" ]
-ipaserver_packages_firewalld: [ "firewalld" ]
\ No newline at end of file
+ipaserver_packages_firewalld: [ "firewalld" ]
diff --git a/roles/ipaserver/vars/RedHat-7.yml b/roles/ipaserver/vars/RedHat-7.yml
index 1186375745dd9beab8e22733f7582dbb9eeb188d..3c524898ae056fb79771214cb95a59e1a06bbcf2 100644
--- a/roles/ipaserver/vars/RedHat-7.yml
+++ b/roles/ipaserver/vars/RedHat-7.yml
@@ -1,6 +1,7 @@
 # defaults file for ipaserver
-# vars/rhel.yml
+# vars/RedHat-7.yml
+---
 ipaserver_packages: [ "ipa-server", "libselinux-python" ]
 ipaserver_packages_dns: [ "ipa-server-dns" ]
 ipaserver_packages_adtrust: [ "ipa-server-trust-ad" ]
-ipaserver_packages_firewalld: [ "firewalld" ]
\ No newline at end of file
+ipaserver_packages_firewalld: [ "firewalld" ]
diff --git a/roles/ipaserver/vars/RedHat-8.yml b/roles/ipaserver/vars/RedHat-8.yml
index 7f5ae4644180195d9f956dd7fb2b641b992d67aa..9efe0cff0fffd06cf12791e10b4d26294138b20a 100644
--- a/roles/ipaserver/vars/RedHat-8.yml
+++ b/roles/ipaserver/vars/RedHat-8.yml
@@ -1,5 +1,6 @@
 # defaults file for ipaserver
 # vars/RedHat-8.yml
+---
 ipaserver_packages: [ "@idm:DL1/server" ]
 ipaserver_packages_dns: [ "@idm:DL1/dns" ]
 ipaserver_packages_adtrust: [ "@idm:DL1/adtrust" ]
diff --git a/roles/ipaserver/vars/Ubuntu.yml b/roles/ipaserver/vars/Ubuntu.yml
index d0e01ea8a0a20451821e1d0a0c043f1d78b2c3cb..2d58f4715f22d357bfd7e9d6c073859b924988d4 100644
--- a/roles/ipaserver/vars/Ubuntu.yml
+++ b/roles/ipaserver/vars/Ubuntu.yml
@@ -1,4 +1,6 @@
+# defaults file for ipaserver
 # vars/Ubuntu.yml
+---
 ipaserver_packages: [ "freeipa-server" ]
 ipaserver_packages_dns: [ "freeipa-server-dns" ]
 ipaserver_packages_adtrust: [ "freeipa-server-trust-ad" ]
diff --git a/roles/ipaserver/vars/default.yml b/roles/ipaserver/vars/default.yml
index 9f6d58a432de19fb9864d7a635f5e31581293940..395bb075ebce834bdf901e1dbfce30771803750a 100644
--- a/roles/ipaserver/vars/default.yml
+++ b/roles/ipaserver/vars/default.yml
@@ -1,5 +1,6 @@
 # defaults file for ipaserver
 # vars/default.yml
+---
 ipaserver_packages: [ "ipa-server", "python3-libselinux" ]
 ipaserver_packages_dns: [ "ipa-server-dns" ]
 ipaserver_packages_adtrust: [ "freeipa-server-trust-ad" ]
diff --git a/setup.cfg b/setup.cfg
index f446224183f5f1b98233ddb1d02d69ef5e9fbbdc..15acf37745cf69e95f1025823666dc6ce8e29b1f 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -23,7 +23,7 @@ data_files =
 
 [flake8]
 extend-ignore = E203, D1, D212, D203, D400, D401
-exclude = .git,__pycache__,.tox,.venv
+exclude = .git,__pycache__,.tox,.venv,.cache,.ansible-freeipa-tests
 per-file-ignores =
     plugins/*:E402
     roles/*:E402
diff --git a/tests/azure/templates/build_container.yml b/tests/azure/templates/build_container.yml
index c77e274558e16adf9b85e265d37a2b1f1d3e028b..b474c9641d34b7bca18ebe10154b29261689f0a0 100644
--- a/tests/azure/templates/build_container.yml
+++ b/tests/azure/templates/build_container.yml
@@ -1,4 +1,4 @@
-
+---
 parameters:
   - name: job_name_suffix
     type: string
diff --git a/tests/azure/templates/group_tests.yml b/tests/azure/templates/group_tests.yml
index f0f11accc3adf8ed82a5823cac2f98e3920263f0..4cabeab17d209428c04e6f8242ec4070480064d8 100644
--- a/tests/azure/templates/group_tests.yml
+++ b/tests/azure/templates/group_tests.yml
@@ -1,4 +1,4 @@
-
+---
 parameters:
   - name: scenario
     type: string
diff --git a/tests/azure/templates/playbook_tests.yml b/tests/azure/templates/playbook_tests.yml
index 6a8ac787bd06fb385a3075f45b26b3cc0da53443..c5f2d160e13043635cca37f469dde6291a0100c9 100644
--- a/tests/azure/templates/playbook_tests.yml
+++ b/tests/azure/templates/playbook_tests.yml
@@ -1,4 +1,4 @@
-
+---
 parameters:
   - name: group_number
     type: number
diff --git a/tests/azure/templates/pytest_tests.yml b/tests/azure/templates/pytest_tests.yml
index 80db74f5813f2b1fa5d863d65d00dd148776b9ec..265a9191f24d00349f5d300520b9f5019f4eedf8 100644
--- a/tests/azure/templates/pytest_tests.yml
+++ b/tests/azure/templates/pytest_tests.yml
@@ -1,4 +1,4 @@
-
+---
 parameters:
 - name: build_number
   type: string
diff --git a/tests/ca-less/install_replica_without_ca.yml b/tests/ca-less/install_replica_without_ca.yml
index 83398b24596cc9be52b156d9d27ec1ff8fc4f18e..dc026220d66cf2a04e3f03551121209c40918063 100644
--- a/tests/ca-less/install_replica_without_ca.yml
+++ b/tests/ca-less/install_replica_without_ca.yml
@@ -48,6 +48,7 @@
       file:
         path: "/root/ca-less-test"
         state: directory
+        mode: 0775
 
     - name: Copy CA certificate
       copy:
diff --git a/tests/ca-less/install_server_without_ca.yml b/tests/ca-less/install_server_without_ca.yml
index ecb609c4fd17593e0352a5b2c37c28465266e394..add0f622ecf3f37aca092c115a39ac2f66085ccf 100644
--- a/tests/ca-less/install_server_without_ca.yml
+++ b/tests/ca-less/install_server_without_ca.yml
@@ -48,6 +48,7 @@
       file:
         path: "/root/ca-less-test"
         state: directory
+        mode: 0775
 
     - name: Copy CA certificate
       copy:
diff --git a/tests/config/test_config.yml b/tests/config/test_config.yml
index 01c1913f7192500a9498e6b62f695d7b433224c6..c3f26872f01a2efef8b63e2a2a4ec13b422f7f25 100644
--- a/tests/config/test_config.yml
+++ b/tests/config/test_config.yml
@@ -15,7 +15,8 @@
           ipaapi_context: "{{ ipa_context | default(omit) }}"
         register: previousconfig
 
-      - debug:
+      - name: Display current configuration.
+        debug:
           var: previousconfig
 
       # setup environment.
@@ -478,7 +479,8 @@
           ca_renewal_master_server: '{{ previousconfig.config.ca_renewal_master_server | default(omit) }}'
         register: result
 
-      - debug:
+      - name: "CA-Renewal server warning."
+        debug:
           msg: "Due to a test failure, IPA CA-Renewal Server might not be correctly be set. Check your configuration."
 
     always:
diff --git a/tests/dnsrecord/test_compatibility_with_ansible_module.yml b/tests/dnsrecord/test_compatibility_with_ansible_module.yml
index 8de18c15d5598f5530d21f644e38c4d0e92a2861..0940f9a8bd56a2623aa09a49dc308eb0eb1f0a16 100644
--- a/tests/dnsrecord/test_compatibility_with_ansible_module.yml
+++ b/tests/dnsrecord/test_compatibility_with_ansible_module.yml
@@ -197,7 +197,7 @@
     register: result
     failed_when: not result.changed or result.failed
 
-   # cleanup
+  # cleanup
   - name: Ensure that dns record 'host01' is absent
     ipadnsrecord:
       ipaadmin_password: SomeADMINpassword
diff --git a/tests/external-signed-ca-with-manual-copy/install-server-with-external-ca-with-manual-copy.yml b/tests/external-signed-ca-with-manual-copy/install-server-with-external-ca-with-manual-copy.yml
index 19cea6b866022615a1f40ade9fa24df0bb9864cd..9ab763bd67aa2f7269b7231451d695f6a55dc754 100644
--- a/tests/external-signed-ca-with-manual-copy/install-server-with-external-ca-with-manual-copy.yml
+++ b/tests/external-signed-ca-with-manual-copy/install-server-with-external-ca-with-manual-copy.yml
@@ -42,6 +42,7 @@
       src: "{{ groups.ipaserver[0] + '-chain.crt' }}"
       dest: "/root/chain.crt"
       force: yes
+      mode: preserve
 
   roles:
   - role: ipaserver
diff --git a/tests/host/certificate/test_hosts_certificate.yml b/tests/host/certificate/test_hosts_certificate.yml
index a2b7eca0a8d24bf1caf9adc5f805d1a2af4d88d2..a55c898819adf4baae1093bfcc8dde90e8a5c7da 100644
--- a/tests/host/certificate/test_hosts_certificate.yml
+++ b/tests/host/certificate/test_hosts_certificate.yml
@@ -72,8 +72,8 @@
         - "{{ lookup('file', 'cert3.b64', rstrip=False) }}"
       state: absent
       action: member
-    #register: result
-    #failed_when: not result.changed or result.failed
+    register: result
+    failed_when: not result.changed or result.failed
 
   - name: Host test cert members absent again
     ipahost:
diff --git a/tests/host/test_host_principal.yml b/tests/host/test_host_principal.yml
index 6c3e7c909a20cd61bab4ccc352550b6b2eb8a276..7dcbc42cb75ccdd09785c8b5d0809ace98c90543 100644
--- a/tests/host/test_host_principal.yml
+++ b/tests/host/test_host_principal.yml
@@ -31,7 +31,7 @@
       ipaadmin_password: SomeADMINpassword
       name: "{{ host1_fqdn }}"
       principal:
-      - "{{ 'host/testhost1.' + ipaserver_domain + '@' + ipaserver_realm }}" 
+      - "{{ 'host/testhost1.' + ipaserver_domain + '@' + ipaserver_realm }}"
       force: yes
     register: result
     failed_when: not result.changed or result.failed
diff --git a/tests/host/test_host_random.yml b/tests/host/test_host_random.yml
index b5b7a13ae71bd2c838e2f8e19567fcc4986b119d..8b9a2c081741a98ec45a81f5a0ad7ebbaec03edb 100644
--- a/tests/host/test_host_random.yml
+++ b/tests/host/test_host_random.yml
@@ -33,7 +33,8 @@
     register: ipahost
     failed_when: not ipahost.changed or ipahost.failed
 
-  - assert:
+  - name: Assert ipahost.host.randompassword is defined.
+    assert:
       that:
       - ipahost.host.randompassword is defined
 
@@ -62,20 +63,21 @@
     register: ipahost
     failed_when: not ipahost.changed or ipahost.failed
 
-  - assert:
+  - name: Assert randompassword is defined for host1 and host2.
+    assert:
       that:
-      - ipahost.host["{{host1_fqdn }}"].randompassword is
+      - ipahost.host["{{ host1_fqdn }}"].randompassword is
         defined
-      - ipahost.host["{{host2_fqdn }}"].randompassword is
+      - ipahost.host["{{ host2_fqdn }}"].randompassword is
         defined
 
-  - name: Print generated random password for "{{host1_fqdn }}"
+  - name: Print generated random password for "{{ host1_fqdn }}"
     debug:
-      var: ipahost.host["{{host1_fqdn }}"].randompassword
+      var: ipahost.host["{{ host1_fqdn }}"].randompassword
 
-  - name: Print generated random password for "{{host2_fqdn }}"
+  - name: Print generated random password for "{{ host2_fqdn }}"
     debug:
-      var: ipahost.host["{{host2_fqdn }}"].randompassword
+      var: ipahost.host["{{ host2_fqdn }}"].randompassword
 
   - name: Enrolled host "{{ ansible_facts['fqdn'] }}" fails to set random password with update_password always
     ipahost:
@@ -87,7 +89,8 @@
     register: ipahost
     failed_when: ipahost.changed or not ipahost.failed
 
-  - assert:
+  - name: Assert randompassword is not defined for 'ansible_fqdn'.
+    assert:
       that:
       - ipahost.host["{{ ansible_facts['fqdn'] }}"].randompassword is
         not defined
diff --git a/tests/host/test_hosts_principal.yml b/tests/host/test_hosts_principal.yml
index 4276da61a70a612bfcf124dbc355eddcc1c444ec..973afdc4a69d098b89eca83af3d1eecf7992bb60 100644
--- a/tests/host/test_hosts_principal.yml
+++ b/tests/host/test_hosts_principal.yml
@@ -34,11 +34,11 @@
       hosts:
       - name: "{{ host1_fqdn }}"
         principal:
-        - "{{ 'host/testhost1.' + ipaserver_domain + '@' + ipaserver_realm }}" 
+        - "{{ 'host/testhost1.' + ipaserver_domain + '@' + ipaserver_realm }}"
         force: yes
       - name: "{{ host2_fqdn }}"
         principal:
-        - "{{ 'host/testhost2.' + ipaserver_domain + '@' + ipaserver_realm }}" 
+        - "{{ 'host/testhost2.' + ipaserver_domain + '@' + ipaserver_realm }}"
         force: yes
     register: result
     failed_when: not result.changed or result.failed
diff --git a/tests/privilege/test_privilege_client_context.yml b/tests/privilege/test_privilege_client_context.yml
index cd125f754ed28d7f9356815afa287d2f96e0aa01..4970caf6de31927c659d9fb4d352b91b6ce1328a 100644
--- a/tests/privilege/test_privilege_client_context.yml
+++ b/tests/privilege/test_privilege_client_context.yml
@@ -35,4 +35,3 @@
 - name: Test privilege using client context, in server host.
   import_playbook: test_privilege.yml
   when: groups['ipaclients'] is not defined or not groups['ipaclients']
- 
diff --git a/tests/pwpolicy/test_pwpolicy_client_context.yml b/tests/pwpolicy/test_pwpolicy_client_context.yml
index 362f567fd82c744bfa59a546ae49771d8ae4c6a6..c6d90fff49f13e09d8a421599e506cf90faf70b9 100644
--- a/tests/pwpolicy/test_pwpolicy_client_context.yml
+++ b/tests/pwpolicy/test_pwpolicy_client_context.yml
@@ -35,4 +35,3 @@
 - name: Test pwpolicy using client context, in server host.
   import_playbook: test_pwpolicy.yml
   when: groups['ipaclients'] is not defined or not groups['ipaclients']
-  
diff --git a/tests/pytests/dnszone/playbooks/dnszone_add_multiple_ipv4_ipv6_forwarders.yaml b/tests/pytests/dnszone/playbooks/dnszone_add_multiple_ipv4_ipv6_forwarders.yaml
index 6f42ded5bc08728f7727f9f40a5bea89e00da039..3607d4404c75888fe56faafb66e11947404b09aa 100644
--- a/tests/pytests/dnszone/playbooks/dnszone_add_multiple_ipv4_ipv6_forwarders.yaml
+++ b/tests/pytests/dnszone/playbooks/dnszone_add_multiple_ipv4_ipv6_forwarders.yaml
@@ -3,7 +3,8 @@
   hosts: ipaserver
 
   tasks:
-  - ipadnszone:
+  - name: Ensure DNS zone is present with multiple forwarders
+    ipadnszone:
       ipaadmin_password: SomeADMINpassword
       name: 04testzone.test
       forwarders:
diff --git a/tests/pytests/dnszone/playbooks/dnszone_add_without_forwarder.yaml b/tests/pytests/dnszone/playbooks/dnszone_add_without_forwarder.yaml
index d6ad54de68aad763a772abf9d97f6689a1dc327f..2446c57669fec6b77c40bb05be142d7a79e61efd 100644
--- a/tests/pytests/dnszone/playbooks/dnszone_add_without_forwarder.yaml
+++ b/tests/pytests/dnszone/playbooks/dnszone_add_without_forwarder.yaml
@@ -3,7 +3,8 @@
   hosts: ipaserver
 
   tasks:
-  - ipadnszone:
+  - name: Ensure DNS zone is present without forwarders
+    ipadnszone:
       ipaadmin_password: SomeADMINpassword
       name: 01testzone.test
       forwarders: []
diff --git a/tests/pytests/dnszone/playbooks/dnszone_del_multiple.yaml b/tests/pytests/dnszone/playbooks/dnszone_del_multiple.yaml
index 2b631e1d95901b0d930eea1dce78ea4cefe5fbbe..0de57cc9ae3b8fc7a0f2c55f8ac51c1d99db4531 100644
--- a/tests/pytests/dnszone/playbooks/dnszone_del_multiple.yaml
+++ b/tests/pytests/dnszone/playbooks/dnszone_del_multiple.yaml
@@ -4,7 +4,8 @@
   become: true
 
   tasks:
-  - ipadnszone:
+  - name: Ensure multiple DNS are absent
+    ipadnszone:
       ipaadmin_password: SomeADMINpassword
       name: delzone1.com,delzone2.com,delzone3.com
       state: absent
diff --git a/tests/pytests/dnszone/playbooks/dnszone_disable.yaml b/tests/pytests/dnszone/playbooks/dnszone_disable.yaml
index c10a249730e388148f10a2974eace76d7c7c4e12..a97674a2194dce80ab08589792c999b838cb451c 100644
--- a/tests/pytests/dnszone/playbooks/dnszone_disable.yaml
+++ b/tests/pytests/dnszone/playbooks/dnszone_disable.yaml
@@ -3,7 +3,8 @@
   hosts: ipaserver
 
   tasks:
-  - ipadnszone:
+  - name: Ensure DNS zone is disabled
+    ipadnszone:
       ipaadmin_password: SomeADMINpassword
       name: 26testzone.test
       state: disabled
diff --git a/tests/pytests/dnszone/playbooks/dnszone_enable.yaml b/tests/pytests/dnszone/playbooks/dnszone_enable.yaml
index 47783a54ff9c533a1ec60703434a0d05ee4f597d..8f6a3a98c7c55de4568740c1ff45da80c86b6508 100644
--- a/tests/pytests/dnszone/playbooks/dnszone_enable.yaml
+++ b/tests/pytests/dnszone/playbooks/dnszone_enable.yaml
@@ -3,7 +3,8 @@
   hosts: ipaserver
 
   tasks:
-  - ipadnszone:
+  - name: Ensure DNS zone is enabled
+    ipadnszone:
       ipaadmin_password: SomeADMINpassword
       name: 26testzone.test
       state: enabled
diff --git a/tests/pytests/dnszone/playbooks/dnszone_invalid_ip.yaml b/tests/pytests/dnszone/playbooks/dnszone_invalid_ip.yaml
index 59142bfdbf49462da0d90cfe78df5926e78524c3..d16cff7594913b834843f641b88e31a4beff49df 100644
--- a/tests/pytests/dnszone/playbooks/dnszone_invalid_ip.yaml
+++ b/tests/pytests/dnszone/playbooks/dnszone_invalid_ip.yaml
@@ -4,7 +4,8 @@
   become: true
 
   tasks:
-  - ipadnszone:
+  - name: Test adding a DNS zone with an invalid forwarder
+    ipadnszone:
       ipaadmin_password: SomeADMINpassword
       name: invalidzone.test
       forwarders:
diff --git a/tests/pytests/dnszone/playbooks/dnszone_invalid_serial.yaml b/tests/pytests/dnszone/playbooks/dnszone_invalid_serial.yaml
index 32c87695ff808dda8c566ddd9f0f9e13c3ba2003..1611035a60edb0a0f950db72266d45fc5c1051be 100644
--- a/tests/pytests/dnszone/playbooks/dnszone_invalid_serial.yaml
+++ b/tests/pytests/dnszone/playbooks/dnszone_invalid_serial.yaml
@@ -4,7 +4,8 @@
   become: true
 
   tasks:
-  - ipadnszone:
+  - name: Test adding a DNS zone with an invalid serial
+    ipadnszone:
       ipaadmin_password: SomeADMINpassword
       name: invalidserialzone.test
       serial: 429496729599
diff --git a/tests/pytests/dnszone/playbooks/dnszone_name_from_ip.yaml b/tests/pytests/dnszone/playbooks/dnszone_name_from_ip.yaml
index df8498a67cfaf5c7d632be0da431418b387a08af..c8fb026e85cd2b6228a7c8d7ff8065410ee59183 100644
--- a/tests/pytests/dnszone/playbooks/dnszone_name_from_ip.yaml
+++ b/tests/pytests/dnszone/playbooks/dnszone_name_from_ip.yaml
@@ -3,6 +3,7 @@
   hosts: ipaserver
 
   tasks:
-  - ipadnszone:
+  - name: Ensure a reverse DNS Zone with name inferred form an IP address
+    ipadnszone:
       ipaadmin_password: SomeADMINpassword
       name_from_ip: 192.8.2.0/22
diff --git a/tests/pytests/dnszone/playbooks/dnszone_with_forward_policy_only.yaml b/tests/pytests/dnszone/playbooks/dnszone_with_forward_policy_only.yaml
index d71c3904ea81a879cfc1f502c6e802247773ef16..a32d0bb59d1521b28fe924007c04a8247a6bed7c 100644
--- a/tests/pytests/dnszone/playbooks/dnszone_with_forward_policy_only.yaml
+++ b/tests/pytests/dnszone/playbooks/dnszone_with_forward_policy_only.yaml
@@ -3,7 +3,8 @@
   hosts: ipaserver
 
   tasks:
-  - ipadnszone:
+  - name: Ensure DNS Zone is present with forward policy `only`
+    ipadnszone:
       ipaadmin_password: SomeADMINpassword
       name: 26testzone.test
       forward_policy: only
diff --git a/tests/server/test_server.yml b/tests/server/test_server.yml
index 0f97b2ac56bd97f8b7f0c0fa2afa866a1ad6fc0a..d5ec0d8947ce60af0efca7df27f2c5cd9114cedf 100644
--- a/tests/server/test_server.yml
+++ b/tests/server/test_server.yml
@@ -48,7 +48,7 @@
       name: mylocation
       state: absent
 
-# CREATE TEST ITEMS
+  # CREATE TEST ITEMS
 
   - name: Ensure location "mylocation" is present
     ipalocation:
diff --git a/tests/sudorule/test_sudorule.yml b/tests/sudorule/test_sudorule.yml
index dc37e77ad705fd0a023f2bcfd43db2672e2ec084..92ea773f1ec28bce1db7bde3d51e8ba339296316 100644
--- a/tests/sudorule/test_sudorule.yml
+++ b/tests/sudorule/test_sudorule.yml
@@ -756,7 +756,7 @@
     failed_when: result.changed or result.failed
 
   # cleanup
-  - name : Ensure sudocmdgroup is absent
+  - name: Ensure sudocmdgroup is absent
     ipasudocmdgroup:
       ipaadmin_password: SomeADMINpassword
       ipaapi_context: "{{ ipa_context | default(omit) }}"
diff --git a/tests/trust/test_trust_client_context.yml b/tests/trust/test_trust_client_context.yml
index 0b53cc53db9db6e8cceebb1e1a47082df6622554..e6ed772667e217e806b07dd3c1edd4e78c849e21 100644
--- a/tests/trust/test_trust_client_context.yml
+++ b/tests/trust/test_trust_client_context.yml
@@ -35,4 +35,3 @@
 - name: Test trust using client context, in server host.
   import_playbook: test_trust.yml
   when: groups['ipaclients'] is not defined or not groups['ipaclients']
-  
diff --git a/tests/user/certificate/test_users_certificate.yml b/tests/user/certificate/test_users_certificate.yml
index 406e6030e55c559db62d4206c3d97ab05e492a8e..313a826f1c188b7a5c7155a17d76d98b2e891057 100644
--- a/tests/user/certificate/test_users_certificate.yml
+++ b/tests/user/certificate/test_users_certificate.yml
@@ -67,8 +67,8 @@
         - "{{ lookup('file', 'cert3.b64', rstrip=False) }}"
       state: absent
       action: member
-    #register: result
-    #failed_when: not result.changed or result.failed
+    register: result
+    failed_when: not result.changed or result.failed
 
   - name: User test cert members absent again
     ipauser:
diff --git a/tests/user/test_user.yml b/tests/user/test_user.yml
index 571a7bab82c09890ec29973d795eda9eff02d48c..e9eaaa3f47b4b450dc975974c55e4a11426fcb47 100644
--- a/tests/user/test_user.yml
+++ b/tests/user/test_user.yml
@@ -96,8 +96,10 @@
       manager: []
       principal: []
       sshpubkey:
-      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqmVDpEX5gnSjKuv97AyzOhaUMMKz8ahOA3GY77tVC4o68KNgMCmDSEG1/kOIaElngNLaCha3p/2iAcU9Bi1tLKUlm2bbO5NHNwHfRxY/3cJtq+/7D1vxJzqThYwI4F9vr1WxyY2+mMTv3pXbfAJoR8Mu06XaEY5PDetlDKjHLuNWF+/O7ZU8PsULTa1dJZFrtXeFpmUoLoGxQBvlrlcPI1zDciCSU24t27Zan5Py2l5QchyI7yhCyMM77KDtj5+AFVpmkb9+zq50rYJAyFVeyUvwjzErvQrKJzYpA0NyBp7vskWbt36M16/M/LxEK7HA6mkcakO3ESWx5MT1LAjvdlnxbWG3787MxweHXuB8CZU+9bZPFBaJ+VQtOfJ7I8eH0S16moPC4ak8FlcFvOH8ERDPWLFDqfy09yaZ7bVIF0//5ZI7Nf3YDe3S7GrBX5ieYuECyP6UNkTx9BRsAQeVvXEc6otzB7iCSnYBMGUGzCqeigoAWaVQUONsSR3Uatks= pinky@ipaserver.el81.local
-      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDc8MIjaSrxLYHvu+hduoF4m6NUFSlXZWzYbd3BK4L47/U4eiXoOS6dcfuZJDjmLfOipc7XVp7NADwAgA1yBOAjbeVpXr2tC8w8saZibl75WBOEjDfNroiOh/f/ojrwwHg05QTVSZHs27sU1HBPyCQM/FHVM6EnRfmyiBkEBA/3ca0PJ9UJhWb2XisCaz6y6QcTh4gQnvHzgmEmK31GwiKnmBSEQuj8P5NGCO8RlN3cq3zpRpMDEoBRCjQYicllf/5P43r5OGvS1LhTiAMfyqE37URezNQa7aozBpH1GhIwAmjAtm84jXQjxUgZPYC0aSLuADYErScOP4792r6koH9t/DM5/M+jG2c4PNWynDczUw6Eaxl5E3hU0Ee9UN0Oee7iBnVenS/QMeZNyo5lMA/HXT5lrYiJGTYM0shRjGXXYBbJZhWerguSWDAdUd1gvuGP1nb7/+/Cvb46+HX7zYouS5Ojo0yPzMZ07X142jnKAfx9LnKdMUCwBJzbtoJ91Zc= pinky@ipaserver.el81.local
+      # yamllint disable-line rule:line-length
+      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqmVDpEX5gnSjKuv97AyzOhaUMMKz8ahOA3GY77tVC4o68KNgMCmDSEG1/kOIaElngNLaCha3p/2iAcU9Bi1tLKUlm2bbO5NHNwHfRxY/3cJtq+/7D1vxJzqThYwI4F9vr1WxyY2+mMTv3pXbfAJoR8Mu06XaEY5PDetlDKjHLuNWF+/O7ZU8PsULTa1dJZFrtXeFpmUoLoGxQBvlrlcPI1zDciCSU24t27Zan5Py2l5QchyI7yhCyMM77KDtj5+AFVpmkb9+zq50rYJAyFVeyUvwjzErvQrKJzYpA0NyBp7vskWbt36M16/M/LxEK7HA6mkcakO3ESWx5MT1LAjvdlnxbWG3787MxweHXuB8CZU+9bZPFBaJ+VQtOfJ7I8eH0S16moPC4ak8FlcFvOH8ERDPWLFDqfy09yaZ7bVIF0//5ZI7Nf3YDe3S7GrBX5ieYuECyP6UNkTx9BRsAQeVvXEc6otzB7iCSnYBMGUGzCqeigoAWaVQUONsSR3Uatks= pinky@ipaserver.el81.local  # noqa 204
+      # yamllint disable-line rule:line-length
+      - AAAAB3NzaC1yc2EAAAADAQABAAABgQDc8MIjaSrxLYHvu+hduoF4m6NUFSlXZWzYbd3BK4L47/U4eiXoOS6dcfuZJDjmLfOipc7XVp7NADwAgA1yBOAjbeVpXr2tC8w8saZibl75WBOEjDfNroiOh/f/ojrwwHg05QTVSZHs27sU1HBPyCQM/FHVM6EnRfmyiBkEBA/3ca0PJ9UJhWb2XisCaz6y6QcTh4gQnvHzgmEmK31GwiKnmBSEQuj8P5NGCO8RlN3cq3zpRpMDEoBRCjQYicllf/5P43r5OGvS1LhTiAMfyqE37URezNQa7aozBpH1GhIwAmjAtm84jXQjxUgZPYC0aSLuADYErScOP4792r6koH9t/DM5/M+jG2c4PNWynDczUw6Eaxl5E3hU0Ee9UN0Oee7iBnVenS/QMeZNyo5lMA/HXT5lrYiJGTYM0shRjGXXYBbJZhWerguSWDAdUd1gvuGP1nb7/+/Cvb46+HX7zYouS5Ojo0yPzMZ07X142jnKAfx9LnKdMUCwBJzbtoJ91Zc= pinky@ipaserver.el81.local  # noqa 204
     register: result
     failed_when: not result.changed or result.failed
 
diff --git a/tests/user/test_users.yml b/tests/user/test_users.yml
index 65713931667b44e7d16f6cfc634cb3e98e8810f5..3b457d42bffe97eb395ea78bf6284bcd246df1d4 100644
--- a/tests/user/test_users.yml
+++ b/tests/user/test_users.yml
@@ -230,8 +230,10 @@
       manager: []
       principal: []
       sshpubkey:
-      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqmVDpEX5gnSjKuv97AyzOhaUMMKz8ahOA3GY77tVC4o68KNgMCmDSEG1/kOIaElngNLaCha3p/2iAcU9Bi1tLKUlm2bbO5NHNwHfRxY/3cJtq+/7D1vxJzqThYwI4F9vr1WxyY2+mMTv3pXbfAJoR8Mu06XaEY5PDetlDKjHLuNWF+/O7ZU8PsULTa1dJZFrtXeFpmUoLoGxQBvlrlcPI1zDciCSU24t27Zan5Py2l5QchyI7yhCyMM77KDtj5+AFVpmkb9+zq50rYJAyFVeyUvwjzErvQrKJzYpA0NyBp7vskWbt36M16/M/LxEK7HA6mkcakO3ESWx5MT1LAjvdlnxbWG3787MxweHXuB8CZU+9bZPFBaJ+VQtOfJ7I8eH0S16moPC4ak8FlcFvOH8ERDPWLFDqfy09yaZ7bVIF0//5ZI7Nf3YDe3S7GrBX5ieYuECyP6UNkTx9BRsAQeVvXEc6otzB7iCSnYBMGUGzCqeigoAWaVQUONsSR3Uatks= pinky@ipaserver.el81.local
-      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDc8MIjaSrxLYHvu+hduoF4m6NUFSlXZWzYbd3BK4L47/U4eiXoOS6dcfuZJDjmLfOipc7XVp7NADwAgA1yBOAjbeVpXr2tC8w8saZibl75WBOEjDfNroiOh/f/ojrwwHg05QTVSZHs27sU1HBPyCQM/FHVM6EnRfmyiBkEBA/3ca0PJ9UJhWb2XisCaz6y6QcTh4gQnvHzgmEmK31GwiKnmBSEQuj8P5NGCO8RlN3cq3zpRpMDEoBRCjQYicllf/5P43r5OGvS1LhTiAMfyqE37URezNQa7aozBpH1GhIwAmjAtm84jXQjxUgZPYC0aSLuADYErScOP4792r6koH9t/DM5/M+jG2c4PNWynDczUw6Eaxl5E3hU0Ee9UN0Oee7iBnVenS/QMeZNyo5lMA/HXT5lrYiJGTYM0shRjGXXYBbJZhWerguSWDAdUd1gvuGP1nb7/+/Cvb46+HX7zYouS5Ojo0yPzMZ07X142jnKAfx9LnKdMUCwBJzbtoJ91Zc= pinky@ipaserver.el81.local
+      # yamllint disable-line rule:line-length
+      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqmVDpEX5gnSjKuv97AyzOhaUMMKz8ahOA3GY77tVC4o68KNgMCmDSEG1/kOIaElngNLaCha3p/2iAcU9Bi1tLKUlm2bbO5NHNwHfRxY/3cJtq+/7D1vxJzqThYwI4F9vr1WxyY2+mMTv3pXbfAJoR8Mu06XaEY5PDetlDKjHLuNWF+/O7ZU8PsULTa1dJZFrtXeFpmUoLoGxQBvlrlcPI1zDciCSU24t27Zan5Py2l5QchyI7yhCyMM77KDtj5+AFVpmkb9+zq50rYJAyFVeyUvwjzErvQrKJzYpA0NyBp7vskWbt36M16/M/LxEK7HA6mkcakO3ESWx5MT1LAjvdlnxbWG3787MxweHXuB8CZU+9bZPFBaJ+VQtOfJ7I8eH0S16moPC4ak8FlcFvOH8ERDPWLFDqfy09yaZ7bVIF0//5ZI7Nf3YDe3S7GrBX5ieYuECyP6UNkTx9BRsAQeVvXEc6otzB7iCSnYBMGUGzCqeigoAWaVQUONsSR3Uatks= pinky@ipaserver.el81.local  # noqa 204
+      # yamllint disable-line rule:line-length
+      - AAAAB3NzaC1yc2EAAAADAQABAAABgQDc8MIjaSrxLYHvu+hduoF4m6NUFSlXZWzYbd3BK4L47/U4eiXoOS6dcfuZJDjmLfOipc7XVp7NADwAgA1yBOAjbeVpXr2tC8w8saZibl75WBOEjDfNroiOh/f/ojrwwHg05QTVSZHs27sU1HBPyCQM/FHVM6EnRfmyiBkEBA/3ca0PJ9UJhWb2XisCaz6y6QcTh4gQnvHzgmEmK31GwiKnmBSEQuj8P5NGCO8RlN3cq3zpRpMDEoBRCjQYicllf/5P43r5OGvS1LhTiAMfyqE37URezNQa7aozBpH1GhIwAmjAtm84jXQjxUgZPYC0aSLuADYErScOP4792r6koH9t/DM5/M+jG2c4PNWynDczUw6Eaxl5E3hU0Ee9UN0Oee7iBnVenS/QMeZNyo5lMA/HXT5lrYiJGTYM0shRjGXXYBbJZhWerguSWDAdUd1gvuGP1nb7/+/Cvb46+HX7zYouS5Ojo0yPzMZ07X142jnKAfx9LnKdMUCwBJzbtoJ91Zc= pinky@ipaserver.el81.local  # noqa 204
     register: result
     failed_when: not result.changed or result.failed
 
diff --git a/tests/user/test_users_absent.yml b/tests/user/test_users_absent.yml
index d211816c961fcecf719bb03846ac66ed0f1010d5..6195374d312807c3b3f886fc35aefc23cdb210fb 100644
--- a/tests/user/test_users_absent.yml
+++ b/tests/user/test_users_absent.yml
@@ -10,7 +10,7 @@
   tasks:
   - name: Include users.json
     include_vars:
-      file: users.json
+      file: users.json  # noqa 505
 
   - name: Create dict with user names
     set_fact:
diff --git a/tests/user/test_users_invalid_cert.yml b/tests/user/test_users_invalid_cert.yml
index 9139a54cb9bb31c3897502691ef5dd359ffefe26..0d75159a85a6e76666cba8a7b522225ff319d8b6 100644
--- a/tests/user/test_users_invalid_cert.yml
+++ b/tests/user/test_users_invalid_cert.yml
@@ -51,8 +51,8 @@
         - "{{ lookup('file', 'cert2.b64', rstrip=False) }}"
       state: absent
       action: member
-    #register: result
-    #failed_when: not result.changed or result.failed
+    register: result
+    failed_when: not result.changed or result.failed
 
   - name: Remove certificate files.
     shell:
diff --git a/tests/user/test_users_present.yml b/tests/user/test_users_present.yml
index e63ea1eefc5fddbc836836d8c9c48ca1c4c989a7..75dfdbfd7537245303e0f128b096949d14f60a7a 100644
--- a/tests/user/test_users_present.yml
+++ b/tests/user/test_users_present.yml
@@ -10,7 +10,7 @@
   tasks:
   - name: Include users.json
     include_vars:
-      file: users.json
+      file: users.json  # noqa 505
 
   - name: Users present len:{{ users | length }}
     ipauser:
diff --git a/tests/user/test_users_present_slice.yml b/tests/user/test_users_present_slice.yml
index 90f08c5c072700fd41b86f9b602788a1b27ba9ee..8f1c6dd4e1a2f16bdfccdaeb15f42cc074673206 100644
--- a/tests/user/test_users_present_slice.yml
+++ b/tests/user/test_users_present_slice.yml
@@ -12,8 +12,9 @@
   tasks:
   - name: Include users.json
     include_vars:
-      file: users.json
-  - debug:
+      file: users.json  # noqa 505
+  - name: Size of users slice.
+    debug:
       msg: "{{ users | length }}"
   - name: Users present
     ipauser:
diff --git a/tests/vault/env_cleanup.yml b/tests/vault/env_cleanup.yml
index e545e791b190122833d8a4b4c1b1abe6a38b553b..85f4d10c9e9d6eb912295aaeb5766ffd538e71f6 100644
--- a/tests/vault/env_cleanup.yml
+++ b/tests/vault/env_cleanup.yml
@@ -1,5 +1,5 @@
-# Tasks executed to clean up test environment for Vault module.
-
+---
+  # Tasks executed to clean up test environment for Vault module.
   - name: Ensure user vaults are absent
     ipavault:
       ipaadmin_password: SomeADMINpassword
@@ -7,7 +7,7 @@
       - stdvault
       - symvault
       - asymvault
-      username: "{{username}}"
+      username: "{{ username }}"
       state: absent
     loop:
       - admin
diff --git a/tests/vault/env_setup.yml b/tests/vault/env_setup.yml
index 4e2d40e84e8cea5cb3cb5e95bf724fd283ecfd7b..69e9cb71589cf49707e549bdc8e432b6f1405b5c 100644
--- a/tests/vault/env_setup.yml
+++ b/tests/vault/env_setup.yml
@@ -20,6 +20,7 @@
     copy:
       src: "{{ playbook_dir }}/{{ item }}"
       dest: "{{ ansible_facts['env'].HOME }}/{{ item }}"
+      mode: 0644
     with_items:
     - A_private.pem
     - A_public.pem
diff --git a/tests/vault/tasks_vault_members.yml b/tests/vault/tasks_vault_members.yml
index b293713ce10dfc2cc7e8bf3460f896358c12891a..d3af934727fc20c5e75b36eb518c6e11fdcd9404 100644
--- a/tests/vault/tasks_vault_members.yml
+++ b/tests/vault/tasks_vault_members.yml
@@ -1,13 +1,13 @@
 ---
-# Tasks to test member management for Vault module.
+  # Tasks to test member management for Vault module.
   - name: Setup testing environment.
     import_tasks: env_setup.yml
 
   - name: Ensure vault is present
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
-      vault_type: "{{vault.vault_type}}"
+      name: "{{ vault.name }}"
+      vault_type: "{{ vault.vault_type }}"
     register: result
     failed_when: not result.changed or result.failed
     when: vault.vault_type == 'standard'
@@ -15,9 +15,9 @@
   - name: Ensure vault is present
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       vault_password: SomeVAULTpassword
-      vault_type: "{{vault.vault_type}}"
+      vault_type: "{{ vault.vault_type }}"
     register: result
     failed_when: not result.changed or result.failed
     when: vault.vault_type == 'symmetric'
@@ -27,7 +27,7 @@
       ipaadmin_password: SomeADMINpassword
       name: "{{ vault.name }}"
       vault_type: "{{ vault.vault_type }}"
-      public_key: "{{lookup('file', 'A_private.b64')}}"
+      public_key: "{{ lookup('file', 'A_private.b64') }}"
     register: result
     failed_when: not result.changed or result.failed
     when: vault.vault_type == 'asymmetric'
@@ -35,7 +35,7 @@
   - name: Ensure vault member user is present.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       users:
       - user02
@@ -45,7 +45,7 @@
   - name: Ensure vault member user is present, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       users:
       - user02
@@ -55,7 +55,7 @@
   - name: Ensure more vault member users are present.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       users:
       - admin
@@ -66,7 +66,7 @@
   - name: Ensure vault member user is still present.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       users:
       - user02
@@ -76,7 +76,7 @@
   - name: Ensure vault users are absent.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       users:
       - admin
@@ -88,7 +88,7 @@
   - name: Ensure vault users are absent, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       users:
       - admin
@@ -100,7 +100,7 @@
   - name: Ensure vault user is absent, once more.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       users:
       - admin
@@ -111,7 +111,7 @@
   - name: Ensure vault member group is present.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       groups: vaultgroup
     register: result
@@ -120,7 +120,7 @@
   - name: Ensure vault member group is present, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       groups: vaultgroup
     register: result
@@ -129,7 +129,7 @@
   - name: Ensure vault member group is absent.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       groups: vaultgroup
       state: absent
@@ -139,7 +139,7 @@
   - name: Ensure vault member group is absent, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       groups: vaultgroup
       state: absent
@@ -149,7 +149,7 @@
   - name: Ensure vault member service is present.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       services: "HTTP/{{ ansible_facts['fqdn'] }}"
     register: result
@@ -158,7 +158,7 @@
   - name: Ensure vault member service is present, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       services: "HTTP/{{ ansible_facts['fqdn'] }}"
     register: result
@@ -167,7 +167,7 @@
   - name: Ensure vault member service is absent.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       services: "HTTP/{{ ansible_facts['fqdn'] }}"
       state: absent
@@ -177,7 +177,7 @@
   - name: Ensure vault member service is absent, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       action: member
       services: "HTTP/{{ ansible_facts['fqdn'] }}"
       state: absent
@@ -187,7 +187,7 @@
   - name: Ensure user03 is an owner of vault.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       owners: user03
       action: member
     register: result
@@ -196,7 +196,7 @@
   - name: Ensure user03 is an owner of vault, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       owners: user03
       action: member
     register: result
@@ -205,7 +205,7 @@
   - name: Ensure user03 is not owner of vault.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       owners: user03
       state: absent
       action: member
@@ -215,7 +215,7 @@
   - name: Ensure user03 is not owner of vault, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       owners: user03
       state: absent
       action: member
@@ -225,7 +225,7 @@
   - name: Ensure vaultgroup is an ownergroup of vault.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       ownergroups: vaultgroup
       action: member
     register: result
@@ -234,7 +234,7 @@
   - name: Ensure vaultgroup is an ownergroup of vault, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       ownergroups: vaultgroup
       action: member
     register: result
@@ -243,7 +243,7 @@
   - name: Ensure vaultgroup is not ownergroup of vault.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       ownergroups: vaultgroup
       state: absent
       action: member
@@ -253,7 +253,7 @@
   - name: Ensure vaultgroup is not ownergroup of vault, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       ownergroups: vaultgroup
       state: absent
       action: member
@@ -263,7 +263,7 @@
   - name: Ensure service is an owner of vault.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       ownerservices: "HTTP/{{ ansible_facts['fqdn'] }}"
       action: member
     register: result
@@ -272,7 +272,7 @@
   - name: Ensure service is an owner of vault, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       ownerservices: "HTTP/{{ ansible_facts['fqdn'] }}"
       action: member
     register: result
@@ -281,7 +281,7 @@
   - name: Ensure service is not owner of vault.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       ownerservices: "HTTP/{{ ansible_facts['fqdn'] }}"
       state: absent
       action: member
@@ -291,25 +291,25 @@
   - name: Ensure service is not owner of vault, again.
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       ownerservices: "HTTP/{{ ansible_facts['fqdn'] }}"
       state: absent
       action: member
     register: result
     failed_when: result.changed or result.failed
 
-  - name: Ensure {{vault.vault_type}} vault is absent
+  - name: Ensure {{ vault.vault_type }} vault is absent
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       state: absent
     register: result
     failed_when: not result.changed or result.failed
 
-  - name: Ensure {{vault.vault_type}} vault is absent, again
+  - name: Ensure {{ vault.vault_type }} vault is absent, again
     ipavault:
       ipaadmin_password: SomeADMINpassword
-      name: "{{vault.name}}"
+      name: "{{ vault.name }}"
       state: absent
     register: result
     failed_when: result.changed or result.failed
diff --git a/utils/lint_check.sh b/utils/lint_check.sh
index d7bfadc3b53d34a1c245a9252c928e7c35282276..27060b272c4a99315f8d041a178b168b2f062455 100755
--- a/utils/lint_check.sh
+++ b/utils/lint_check.sh
@@ -1,29 +1,41 @@
 #!/bin/bash
 
-topdir="`dirname $(dirname $0)`"
-
-flake8 .
-pydocstyle .
-pylint plugins
-
-ANSIBLE_LIBRARY=${ANSIBLE_LIBRARY:-"${topdir}/plugins/modules"}
-ANSIBLE_MODULE_UTILS=${ANSIBLE_MODULE_UTILS:-"${topdir}/plugins/module_utils"}
+INFO="\033[37;1m"
+WARN="\033[33;1m"
+RST="\033[0m"
+
+pushd "`dirname $0`/.." >/dev/null 2>&1
+
+echo -e "${INFO}Running 'flake8'...${RST}"
+flake8 plugins utils roles *.py
+echo -e "${INFO}Running 'pydocstyle'...${RST}"
+pydocstyle plugins utils roles *.py
+echo -e "${INFO}Running 'pylint'...${RST}"
+pylint plugins *.py
+
+ANSIBLE_LIBRARY="${ANSIBLE_LIBRARY:-plugins/modules}"
+ANSIBLE_MODULE_UTILS="${ANSIBLE_MODULE_UTILS:-plugins/module_utils}"
+ANSIBLE_DOC_FRAGMENT_PLUGINS="${ANSIBLE_DOC_FRAGMENT_PLUGINS:-plugins/doc_fragments}"
+export ANSIBLE_LIBRARY ANSIBLE_MODULE_UTILS ANSIBLE_DOC_FRAGMENT_PLUGINS
+
+echo -e "${WARN}Missing file warnings are expected and can be ignored.${RST}"
+echo -e "${INFO}Running 'ansible-lint'...${RST}"
+playbook_dirs=(
+    "tests"
+    "playbooks"
+)
+ansible-lint --force-color "${playbook_dirs[@]}"
 
-export ANSIBLE_LIBRARY ANSIBLE_MODULE_UTILS
+echo -e "${INFO}Running 'ansible-doc-test'...${RST}"
+python "`dirname $0`/ansible-doc-test" -v roles plugins
 
+echo -e "${INFO}Running 'yamllint'...${RST}"
 yaml_dirs=(
-    "${topdir}/tests"
-    "${topdir}/playbooks"
-    "${topdir}/molecule"
+    "tests"
+    "playbooks"
+    "molecule"
+    "roles"
 )
+yamllint -f colored "${yaml_dirs[@]}"
 
-for dir in "${yaml_dirs[@]}"
-do
-    find "${dir}" -type f -name "*.yml" | xargs ansible-lint --force-color
-done
-
-
-for dir in "${yaml_dirs[@]}"
-do
-    find "${dir}" -type f -name "*.yml" | xargs yamllint
-done
+popd >/dev/null 2>&1