public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
* [PATCH RFC 0/3] Run Ansible Lint Across Playbooks
@ 2025-08-01 16:23 Daniel Gomez
  2025-08-01 16:23 ` [PATCH RFC 1/3] playbooks: fix include_tasks paths in kdc and krb5 roles Daniel Gomez
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Daniel Gomez @ 2025-08-01 16:23 UTC (permalink / raw)
  To: Luis Chamberlain, Chuck Lever; +Cc: kdevops, Daniel Gomez

In line with the motivation behind "[PATCH v2 0/9] kdevops: add support
for A/B testing" [1], this change runs ansible-lint across all playbooks
to enforce a more consistent and standardized formatting of Ansible
code.

https://lore.kernel.org/kdevops/91f83d54-8375-4016-ab53-7a210437d39b@kernel.org/T/#u [1]

This helps auto-fix several issues, but some rule violations still
require manual resolution. Below is a summary of the remaining issues:

Rule Violation Summary

  1 syntax-check profile:min tags:core,unskippable
 16 command-instead-of-module profile:min tags:command-shell,idiom
  2 deprecated-local-action profile:min tags:deprecations
  2 inline-env-var profile:min tags:command-shell,idiom
  6 jinja profile:min tags:formatting
  8 schema profile:min tags:core
 11 name profile:min tags:idiom
  1 name profile:min tags:idiom
461 var-naming profile:min tags:idiom
 30 yaml profile:min tags:formatting,yaml
  1 yaml profile:min tags:formatting,yaml
 70 name profile:min tags:idiom
  3 latest profile:min tags:idempotency
  1 package-latest profile:min tags:idempotency
119 risky-file-permissions profile:min tags:unpredictability
 10 risky-shell-pipe profile:min tags:command-shell
 45 ignore-errors profile:min tags:unpredictability
162 no-changed-when profile:min tags:command-shell,idempotency
  2 fqcn profile:min tags:formatting

Failed: 945 failure(s), 6 warning(s) on 562 files.
<sys>:0: DeprecationWarning: builtin type swigvarlink has no __module__ attribute

Full log:
https://gist.github.com/dkruces/bc63122aa1145562157ced72cd3ed408

This structured output may serve as a useful input for generative AI in
future clean-up efforts.

This has been tested in current kdevops CI (fstests) and manually with
nfstests workflow.

An additional note is that not always ansible-lint will produce a valid
fix. I run into the following issue that affected bringup:

- name: Check if the developer has a git config
delegate_to: localhost
- stat:
- path={{ dev_gitconfig_src }}
+ ansible.builtin.stat:
+ path: "{{"
+ cmd: dev_gitconfig_src }}
run_once: true
register: dev_git_config_file

The same pattern repeated in different tasks for the same file. So I
manually fix these and let Generative AI verify more files.

Signed-off-by: Daniel Gomez <da.gomez@samsung.com>
---
Daniel Gomez (3):
      playbooks: fix include_tasks paths in kdc and krb5 roles
      playbooks: ansible-lint: fix FileNotFoundError
      ansible-lint: comprehensive linting and manual fixes

 playbooks/bootlinux.yml                            |    2 +-
 playbooks/cxl.yml                                  |    2 +-
 playbooks/devconfig.yml                            |    2 +-
 playbooks/roles/ansible_cfg/tasks/main.yml         |    4 +-
 playbooks/roles/blktests/defaults/main.yml         |    8 +-
 playbooks/roles/blktests/handlers/main.yml         |    5 +-
 .../blktests/tasks/install-deps/debian/main.yml    |   26 +-
 .../roles/blktests/tasks/install-deps/main.yml     |   15 +-
 .../blktests/tasks/install-deps/redhat/main.yml    |    8 +-
 .../blktests/tasks/install-deps/suse/main.yml      |  144 +--
 playbooks/roles/blktests/tasks/main.yml            |  361 +++----
 playbooks/roles/bootlinux/defaults/main.yml        |   26 +-
 playbooks/roles/bootlinux/tasks/build/9p.yml       |   77 +-
 playbooks/roles/bootlinux/tasks/build/builder.yml  |    4 +-
 playbooks/roles/bootlinux/tasks/build/targets.yml  |   52 +-
 .../bootlinux/tasks/install-deps/debian/main.yml   |   14 +-
 .../bootlinux/tasks/install-deps/redhat/main.yml   |   22 +-
 .../bootlinux/tasks/install-deps/suse/main.yml     |    8 +-
 .../tasks/install-minimal-deps/debian/main.yml     |   14 +-
 .../tasks/install-minimal-deps/redhat/main.yml     |   12 +-
 .../tasks/install-minimal-deps/suse/main.yml       |    6 +-
 .../roles/bootlinux/tasks/install/packages.yml     |    2 +-
 playbooks/roles/bootlinux/tasks/main.yml           |  178 ++--
 .../roles/bootlinux/tasks/update-grub/debian.yml   |   11 +-
 .../roles/bootlinux/tasks/update-grub/install.yml  |   57 +-
 .../roles/bootlinux/tasks/update-grub/main.yml     |   10 +-
 .../roles/bootlinux/tasks/update-grub/redhat.yml   |   37 +-
 .../roles/bootlinux/tasks/update-grub/suse.yml     |   11 +-
 playbooks/roles/btrfs_progs/defaults/main.yml      |    2 +-
 .../btrfs_progs/tasks/install-deps/debian/main.yml |   18 +-
 .../roles/btrfs_progs/tasks/install-deps/main.yml  |   12 +-
 .../btrfs_progs/tasks/install-deps/redhat/main.yml |    6 +-
 .../btrfs_progs/tasks/install-deps/suse/main.yml   |    6 +-
 playbooks/roles/btrfs_progs/tasks/main.yml         |   65 +-
 playbooks/roles/build_qemu/defaults/main.yml       |    4 +-
 .../build_qemu/tasks/install-deps/debian/main.yml  |   18 +-
 .../build_qemu/tasks/install-deps/fedora/main.yml  |   10 +-
 .../roles/build_qemu/tasks/install-deps/main.yml   |   22 +-
 .../build_qemu/tasks/install-deps/redhat/main.yml  |    6 +-
 .../build_qemu/tasks/install-deps/suse/main.yml    |    6 +-
 playbooks/roles/build_qemu/tasks/main.yml          |   64 +-
 playbooks/roles/common/defaults/main.yml           |    2 +-
 playbooks/roles/common/tasks/main.yml              |   28 +-
 playbooks/roles/compile_dbench/defaults/main.yml   |    2 +-
 .../tasks/install-deps/debian/main.yml             |   22 +-
 .../compile_dbench/tasks/install-deps/main.yml     |    7 +-
 playbooks/roles/compile_dbench/tasks/main.yml      |   47 +-
 .../roles/create_data_partition/tasks/main.yml     |   14 +-
 playbooks/roles/create_nfs_mount/tasks/main.yml    |    7 +-
 .../tasks/install-deps/debian/main.yml             |    8 +-
 .../create_partition/tasks/install-deps/main.yml   |   12 +-
 .../tasks/install-deps/redhat/main.yml             |   16 +-
 .../tasks/install-deps/suse/main.yml               |   40 +-
 playbooks/roles/create_partition/tasks/main.yml    |  101 +-
 playbooks/roles/create_tmpfs/tasks/main.yml        |    5 +-
 playbooks/roles/cxl/defaults/main.yml              |    4 +-
 .../roles/cxl/tasks/cxl-create-dc-region/main.yml  |   35 +-
 playbooks/roles/cxl/tasks/cxl-dcd-setup/main.yml   |   97 +-
 playbooks/roles/cxl/tasks/cxl-mem-setup/main.yml   |   35 +-
 .../roles/cxl/tasks/install-deps/debian/main.yml   |   18 +-
 playbooks/roles/cxl/tasks/install-deps/generic.yml |    4 +-
 playbooks/roles/cxl/tasks/install-deps/main.yml    |   14 +-
 .../roles/cxl/tasks/install-deps/redhat/main.yml   |    8 +-
 .../roles/cxl/tasks/install-deps/suse/main.yml     |   42 +-
 playbooks/roles/cxl/tasks/main.yml                 |  197 ++--
 playbooks/roles/devconfig/defaults/main.yml        |   49 +-
 .../roles/devconfig/tasks/check-apt-mirrors.yml    |   37 +-
 .../config-custom-repos-and-packages/main.yml      |    3 +-
 .../redhat/main.yml                                |   15 +-
 .../devconfig/tasks/install-deps/debian/main.yml   |  173 ++--
 .../roles/devconfig/tasks/install-deps/main.yml    |   14 +-
 .../devconfig/tasks/install-deps/redhat/main.yml   |   88 +-
 .../devconfig/tasks/install-deps/suse/main.yml     |  338 +++----
 .../tasks/kotd-rev-kernel/debian/main.yml          |   28 +-
 .../roles/devconfig/tasks/kotd-rev-kernel/main.yml |   54 +-
 .../tasks/kotd-rev-kernel/redhat/main.yml          |   40 +-
 .../devconfig/tasks/kotd-rev-kernel/suse/main.yml  |   82 +-
 playbooks/roles/devconfig/tasks/main.yml           |  532 +++++-----
 playbooks/roles/fstests/defaults/main.yml          |  262 +++--
 playbooks/roles/fstests/handlers/main.yml          |    5 +-
 .../fstests/tasks/install-deps/debian/main.yml     |   42 +-
 .../roles/fstests/tasks/install-deps/main.yml      |   21 +-
 .../fstests/tasks/install-deps/redhat/main.yml     |   34 +-
 .../roles/fstests/tasks/install-deps/suse/main.yml |  116 +--
 playbooks/roles/fstests/tasks/main.yml             | 1029 ++++++++++----------
 .../roles/fstests_prep_localhost/defaults/main.yml |    2 +-
 .../tasks/install-deps/debian/main.yml             |    6 +-
 .../tasks/install-deps/main.yml                    |   12 +-
 .../tasks/install-deps/redhat/main.yml             |   16 +-
 .../tasks/install-deps/suse/main.yml               |   22 +-
 .../roles/fstests_prep_localhost/tasks/main.yml    |   12 +-
 playbooks/roles/gen_hosts/defaults/main.yml        |   36 +-
 playbooks/roles/gen_hosts/tasks/main.yml           |  203 ++--
 playbooks/roles/gen_nodes/defaults/main.yml        |  111 ++-
 playbooks/roles/gen_nodes/tasks/main.yml           |  199 ++--
 playbooks/roles/gen_pci_kconfig/defaults/main.yml  |    2 +-
 playbooks/roles/gen_pci_kconfig/tasks/main.yml     |    5 +-
 playbooks/roles/gen_tfvars/defaults/main.yml       |    6 +-
 playbooks/roles/gen_tfvars/tasks/main.yml          |   34 +-
 playbooks/roles/gitr/defaults/main.yml             |    4 +-
 .../roles/gitr/tasks/install-deps/debian/main.yml  |    2 +-
 playbooks/roles/gitr/tasks/install-deps/main.yml   |    6 +-
 .../roles/gitr/tasks/install-deps/redhat/main.yml  |    6 +-
 .../roles/gitr/tasks/install-deps/suse/main.yml    |    2 +-
 playbooks/roles/gitr/tasks/main.yml                |   51 +-
 playbooks/roles/guestfs/defaults/main.yml          |    2 +-
 .../guestfs/tasks/bringup/console-permissions.yml  |    4 +-
 playbooks/roles/guestfs/tasks/bringup/main.yml     |    6 +-
 playbooks/roles/guestfs/tasks/bringup/network.yml  |    8 +-
 .../guestfs/tasks/bringup/storage-pool-path.yml    |   10 +-
 .../roles/hypervisor-tuning/defaults/main.yml      |    6 +-
 playbooks/roles/hypervisor-tuning/tasks/main.yml   |   77 +-
 .../install-menuconfig-deps/defaults/main.yml      |    2 +-
 .../tasks/install-deps/debian/main.yml             |   18 +-
 .../tasks/install-deps/fedora/main.yml             |    6 +-
 .../tasks/install-deps/main.yml                    |   22 +-
 .../tasks/install-deps/redhat/main.yml             |    6 +-
 .../tasks/install-deps/suse/main.yml               |    8 +-
 .../roles/install-menuconfig-deps/tasks/main.yml   |   12 +-
 .../defaults/main.yml                              |    4 +-
 .../tasks/install-deps/debian/main.yml             |    6 +-
 .../tasks/install-deps/main.yml                    |   12 +-
 .../tasks/install-deps/redhat/main.yml             |    8 +-
 .../tasks/install-deps/suse/main.yml               |    4 +-
 .../install_systemd_journal_remote/tasks/main.yml  |   81 +-
 .../install_systemd_timesyncd/defaults/main.yml    |   10 +-
 .../tasks/install-deps/debian/main.yml             |    6 +-
 .../tasks/install-deps/main.yml                    |   12 +-
 .../tasks/install-deps/redhat/main.yml             |    8 +-
 .../tasks/install-deps/suse/main.yml               |    4 +-
 .../roles/install_systemd_timesyncd/tasks/main.yml |   51 +-
 .../roles/install_terraform/defaults/main.yml      |    4 +-
 .../tasks/install-deps/debian/main.yml             |   14 +-
 .../install_terraform/tasks/install-deps/main.yml  |   12 +-
 .../tasks/install-deps/redhat/main.yml             |   12 +-
 .../tasks/install-deps/suse/main.yml               |   20 +-
 playbooks/roles/install_terraform/tasks/main.yml   |   12 +-
 playbooks/roles/iscsi/tasks/add_initiator.yml      |   16 +-
 playbooks/roles/iscsi/tasks/add_lun.yml            |   10 +-
 playbooks/roles/iscsi/tasks/main.yml               |   26 +-
 .../roles/kdc/tasks/install-deps/debian/main.yml   |    8 +-
 playbooks/roles/kdc/tasks/install-deps/main.yml    |    6 +-
 .../roles/kdc/tasks/install-deps/redhat/main.yml   |    8 +-
 .../roles/kdc/tasks/install-deps/suse/main.yml     |    4 +-
 playbooks/roles/kdc/tasks/main.yml                 |   74 +-
 playbooks/roles/kdc/vars/RedHat.yml                |    3 +-
 playbooks/roles/kdc/vars/default.yml               |    3 +-
 playbooks/roles/kdevops_archive/defaults/main.yml  |    4 +-
 playbooks/roles/kdevops_archive/tasks/main.yml     |  164 ++--
 .../roles/krb5/tasks/install-deps/debian/main.yml  |    8 +-
 playbooks/roles/krb5/tasks/install-deps/main.yml   |    6 +-
 .../roles/krb5/tasks/install-deps/redhat/main.yml  |    8 +-
 .../roles/krb5/tasks/install-deps/suse/main.yml    |   10 +-
 playbooks/roles/krb5/tasks/main.yml                |   36 +-
 .../roles/ktls/tasks/install-deps/debian/main.yml  |    8 +-
 playbooks/roles/ktls/tasks/install-deps/main.yml   |   12 +-
 .../roles/ktls/tasks/install-deps/redhat/main.yml  |    8 +-
 .../roles/ktls/tasks/install-deps/suse/main.yml    |    4 +-
 playbooks/roles/ktls/tasks/main.yml                |   42 +-
 .../libvirt_pcie_passthrough/defaults/main.yml     |    2 +-
 .../roles/libvirt_pcie_passthrough/tasks/main.yml  |   52 +-
 .../libvirt_storage_pool_create/defaults/main.yml  |    4 +-
 .../libvirt_storage_pool_create/tasks/main.yml     |   74 +-
 playbooks/roles/libvirt_user/defaults/main.yml     |   10 +-
 .../libvirt_user/tasks/enable-user/debian/main.yml |   39 +-
 .../libvirt_user/tasks/enable-user/redhat/main.yml |   39 +-
 .../libvirt_user/tasks/enable-user/suse/main.yml   |   29 +-
 .../tasks/install-deps/debian/main.yml             |   30 +-
 .../tasks/install-deps/fedora/main.yml             |   38 +-
 .../roles/libvirt_user/tasks/install-deps/main.yml |   22 +-
 .../tasks/install-deps/redhat/main.yml             |   22 +-
 .../libvirt_user/tasks/install-deps/suse/main.yml  |   20 +-
 playbooks/roles/libvirt_user/tasks/main.yml        |   22 +-
 playbooks/roles/linux-mirror/defaults/main.yml     |    4 +-
 .../tasks/install-deps/fedora/main.yml             |   10 +-
 playbooks/roles/linux-mirror/tasks/main.yml        |  145 ++-
 playbooks/roles/ltp/defaults/main.yml              |    2 +-
 playbooks/roles/ltp/tasks/main.yml                 |  105 +-
 playbooks/roles/mmtests/defaults/main.yml          |   18 +-
 .../mmtests/tasks/install-deps/debian/main.yml     |   42 +-
 .../roles/mmtests/tasks/install-deps/main.yml      |    9 +-
 .../mmtests/tasks/install-deps/redhat/main.yml     |   34 +-
 .../roles/mmtests/tasks/install-deps/suse/main.yml |   34 +-
 playbooks/roles/mmtests/tasks/main.yaml            |  173 ++--
 .../roles/nfsd/tasks/install-deps/debian/main.yml  |   22 +-
 .../roles/nfsd/tasks/install-deps/redhat/main.yml  |   18 +-
 .../roles/nfsd/tasks/install-deps/suse/main.yml    |   18 +-
 playbooks/roles/nfsd/tasks/main.yml                |   80 +-
 playbooks/roles/nfsd_add_export/tasks/main.yml     |   61 +-
 .../roles/nfsd_add_export/tasks/storage/iscsi.yml  |   12 +-
 .../roles/nfsd_add_export/tasks/storage/local.yml  |    8 +-
 .../roles/nfsd_add_export/tasks/storage/tmpfs.yml  |    4 +-
 playbooks/roles/nfstest/defaults/main.yml          |    2 +-
 playbooks/roles/nfstest/tasks/main.yml             |   51 +-
 playbooks/roles/pkg/tasks/debian.yml               |    9 +-
 playbooks/roles/pkg/tasks/main.yml                 |    5 +-
 .../roles/postfix_relay_host/defaults/main.yml     |    4 +-
 playbooks/roles/postfix_relay_host/tasks/main.yml  |   46 +-
 playbooks/roles/pynfs/defaults/main.yml            |    4 +-
 .../roles/pynfs/tasks/install-deps/debian/main.yml |   10 +-
 playbooks/roles/pynfs/tasks/install-deps/main.yml  |   12 +-
 .../roles/pynfs/tasks/install-deps/redhat/main.yml |    8 +-
 .../roles/pynfs/tasks/install-deps/suse/main.yml   |    4 +-
 playbooks/roles/pynfs/tasks/main.yml               |  153 +--
 playbooks/roles/reboot-limit/defaults/main.yml     |    4 +-
 playbooks/roles/reboot-limit/tasks/do-reboot.yml   |  125 +--
 playbooks/roles/reboot-limit/tasks/main.yml        |   85 +-
 playbooks/roles/selftests/defaults/main.yml        |   36 +-
 .../selftests/tasks/install-deps/debian/main.yml   |   18 +-
 .../roles/selftests/tasks/install-deps/main.yml    |   12 +-
 .../selftests/tasks/install-deps/redhat/main.yml   |    8 +-
 .../selftests/tasks/install-deps/suse/main.yml     |   36 +-
 playbooks/roles/selftests/tasks/main.yml           |  407 ++++----
 playbooks/roles/siw/tasks/main.yml                 |   19 +-
 .../roles/smbd/tasks/install-deps/debian/main.yml  |   20 +-
 playbooks/roles/smbd/tasks/install-deps/main.yml   |    6 +-
 .../roles/smbd/tasks/install-deps/redhat/main.yml  |   18 +-
 .../roles/smbd/tasks/install-deps/suse/main.yml    |   14 +-
 playbooks/roles/smbd/tasks/main.yml                |   52 +-
 playbooks/roles/smbd_add_share/tasks/main.yml      |   73 +-
 playbooks/roles/steady_state/defaults/main.yml     |    4 +-
 playbooks/roles/steady_state/tasks/main.yaml       |  196 ++--
 playbooks/roles/sysbench/defaults/main.yml         |   14 +-
 .../sysbench/tasks/install-deps/debian/main.yml    |   52 +-
 .../roles/sysbench/tasks/install-deps/main.yml     |   15 +-
 .../sysbench/tasks/install-deps/redhat/main.yml    |    8 +-
 .../sysbench/tasks/install-deps/suse/main.yml      |   44 +-
 playbooks/roles/sysbench/tasks/main.yaml           |   15 +-
 .../roles/sysbench/tasks/mysql-docker/main.yaml    |  594 +++++------
 .../sysbench/tasks/postgresql-native/main.yaml     |  207 ++--
 playbooks/roles/update_etc_hosts/defaults/main.yml |    3 +-
 playbooks/roles/update_etc_hosts/tasks/main.yml    |   59 +-
 .../roles/update_ssh_config_guestfs/tasks/main.yml |   26 +-
 playbooks/roles/volume_group/tasks/main.yml        |    2 +-
 .../roles/volume_group/tasks/terraform/aws.yml     |    5 +-
 playbooks/steady_state.yml                         |    3 +-
 playbooks/update_etc_hosts.yml                     |    2 +-
 237 files changed, 5329 insertions(+), 5119 deletions(-)
---
base-commit: dcf0bf2f2e84f70e837d58fff5b7e1f30cc5fccb
change-id: 20250801-ansible-lint-b3c24c730661
prerequisite-message-id: <20250730060147.182140-1-mcgrof@kernel.org>
prerequisite-patch-id: 50f79a11048c50868761159da6fe62333a29c240
prerequisite-patch-id: ad111073df43efaf3b01d152f2373eac336e853a
prerequisite-patch-id: d2346975a8b8d591c46ae663f9c929ae9c06ca59
prerequisite-patch-id: f4d441fbc68a86700fe2d2d6a965c0b17fb4f75a
prerequisite-patch-id: 94bd9a4acb30ab538453f86618fa46f81077754a
prerequisite-patch-id: 33960d80fed42967be4f74ff96e94deaf040c7ff
prerequisite-patch-id: 3a53db06663d497c56400e27ce8a1bad3729774f
prerequisite-patch-id: 8b5f23178d9e004d648dd318de09cedf8267949e
prerequisite-patch-id: 5c1a775dd0faf30bd31be0ec71f415875889b27e

Best regards,
--  
Daniel Gomez <da.gomez@samsung.com>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH RFC 1/3] playbooks: fix include_tasks paths in kdc and krb5 roles
  2025-08-01 16:23 [PATCH RFC 0/3] Run Ansible Lint Across Playbooks Daniel Gomez
@ 2025-08-01 16:23 ` Daniel Gomez
  2025-08-01 16:23 ` [PATCH RFC 2/3] playbooks: ansible-lint: fix FileNotFoundError Daniel Gomez
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Gomez @ 2025-08-01 16:23 UTC (permalink / raw)
  To: Luis Chamberlain, Chuck Lever; +Cc: kdevops, Daniel Gomez

From: Daniel Gomez <da.gomez@samsung.com>

Fix incorrect absolute paths in include_tasks directives that were
causing ansible-lint FileNotFoundError. Changed paths to use relative
references from the current task file location.

- kdc role: roles/tasks/kdc/install-deps/* → */main.yml
- krb5 role: roles/krb5/tasks/install-deps/* → install-deps/*/main.yml
- krb5 role: roles/tasks/krb5/install-deps/* → */main.yml

Generated-by: Claude AI
Signed-off-by: Daniel Gomez <da.gomez@samsung.com>
---
 playbooks/roles/kdc/tasks/install-deps/main.yml  | 6 +++---
 playbooks/roles/krb5/tasks/install-deps/main.yml | 6 +++---
 playbooks/roles/krb5/tasks/main.yml              | 6 +++---
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/playbooks/roles/kdc/tasks/install-deps/main.yml b/playbooks/roles/kdc/tasks/install-deps/main.yml
index a1bd1da..b62e919 100644
--- a/playbooks/roles/kdc/tasks/install-deps/main.yml
+++ b/playbooks/roles/kdc/tasks/install-deps/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Debian-specific set up
-  ansible.builtin.include_tasks: roles/tasks/kdc/install-deps/debian/main.yml
+  ansible.builtin.include_tasks: debian/main.yml
   when: ansible_os_family == 'Debian'
 
 - name: SuSE-specific set up
-  ansible.builtin.include_tasks: roles/tasks/kdc/install-deps/suse/main.yml
+  ansible.builtin.include_tasks: suse/main.yml
   when: ansible_os_family == 'Suse'
 
 - name: Red Hat-specific set up
-  ansible.builtin.include_tasks: roles/tasks/kdc/install-deps/redhat/main.yml
+  ansible.builtin.include_tasks: redhat/main.yml
   when: ansible_os_family == 'RedHat'
diff --git a/playbooks/roles/krb5/tasks/install-deps/main.yml b/playbooks/roles/krb5/tasks/install-deps/main.yml
index ab31e2d..b62e919 100644
--- a/playbooks/roles/krb5/tasks/install-deps/main.yml
+++ b/playbooks/roles/krb5/tasks/install-deps/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Debian-specific set up
-  ansible.builtin.include_tasks: roles/tasks/krb5/install-deps/debian/main.yml
+  ansible.builtin.include_tasks: debian/main.yml
   when: ansible_os_family == 'Debian'
 
 - name: SuSE-specific set up
-  ansible.builtin.include_tasks: roles/tasks/krb5/install-deps/suse/main.yml
+  ansible.builtin.include_tasks: suse/main.yml
   when: ansible_os_family == 'Suse'
 
 - name: Red Hat-specific set up
-  ansible.builtin.include_tasks: roles/tasks/krb5/install-deps/redhat/main.yml
+  ansible.builtin.include_tasks: redhat/main.yml
   when: ansible_os_family == 'RedHat'
diff --git a/playbooks/roles/krb5/tasks/main.yml b/playbooks/roles/krb5/tasks/main.yml
index 968b065..b009267 100644
--- a/playbooks/roles/krb5/tasks/main.yml
+++ b/playbooks/roles/krb5/tasks/main.yml
@@ -1,14 +1,14 @@
 ---
 - name: Debian-specific setup
-  ansible.builtin.include_tasks: roles/krb5/tasks/install-deps/debian/main.yml
+  ansible.builtin.include_tasks: install-deps/debian/main.yml
   when: ansible_os_family == 'Debian'
 
 - name: SuSE-specific setup
-  ansible.builtin.include_tasks: roles/krb5/tasks/install-deps/suse/main.yml
+  ansible.builtin.include_tasks: install-deps/suse/main.yml
   when: ansible_os_family == 'Suse'
 
 - name: Red Hat-specific setup
-  ansible.builtin.include_tasks: roles/krb5/tasks/install-deps/redhat/main.yml
+  ansible.builtin.include_tasks: install-deps/redhat/main.yml
   when: ansible_os_family == 'RedHat'
 
 - name: Configure /etc/krb5.conf

-- 
2.50.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH RFC 2/3] playbooks: ansible-lint: fix FileNotFoundError
  2025-08-01 16:23 [PATCH RFC 0/3] Run Ansible Lint Across Playbooks Daniel Gomez
  2025-08-01 16:23 ` [PATCH RFC 1/3] playbooks: fix include_tasks paths in kdc and krb5 roles Daniel Gomez
@ 2025-08-01 16:23 ` Daniel Gomez
  2025-08-01 16:23 ` [PATCH RFC 3/3] ansible-lint: comprehensive linting and manual fixes Daniel Gomez
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Gomez @ 2025-08-01 16:23 UTC (permalink / raw)
  To: Luis Chamberlain, Chuck Lever; +Cc: kdevops, Daniel Gomez

From: Daniel Gomez <da.gomez@samsung.com>

Fix Python traceback caused by incorrect absolute paths in include_tasks
directives. Changed absolute role paths to relative references to prevent
ansible-lint from looking for non-existent files.

Fixed include_tasks paths in:
- blktests/tasks/main.yml: tasks/install-deps/main.yml → install-deps/main.yml
- kdc/tasks/main.yml: roles/kdc/tasks/install-deps/* → install-deps/*
- ktls/tasks/install-deps/main.yml: tasks/install-deps/* → *
- nfsd/tasks/main.yml: roles/nfsd/tasks/install-deps/* → install-deps/*
- selftests/tasks/main.yml: tasks/install-deps/main.yml → install-deps/main.yml
- smbd/tasks/install-deps/main.yml: roles/tasks/nfsd/* → *
- smbd/tasks/main.yml: roles/smbd/tasks/install-deps/* → install-deps/*

Generated-by: Claude AI
Signed-off-by: Daniel Gomez <da.gomez@samsung.com>
---
 playbooks/roles/blktests/tasks/main.yml          | 2 +-
 playbooks/roles/kdc/tasks/main.yml               | 6 +++---
 playbooks/roles/ktls/tasks/install-deps/main.yml | 6 +++---
 playbooks/roles/nfsd/tasks/main.yml              | 6 +++---
 playbooks/roles/selftests/tasks/main.yml         | 2 +-
 playbooks/roles/smbd/tasks/install-deps/main.yml | 6 +++---
 playbooks/roles/smbd/tasks/main.yml              | 6 +++---
 7 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/playbooks/roles/blktests/tasks/main.yml b/playbooks/roles/blktests/tasks/main.yml
index 775b534..7ca492c 100644
--- a/playbooks/roles/blktests/tasks/main.yml
+++ b/playbooks/roles/blktests/tasks/main.yml
@@ -15,7 +15,7 @@
   tags: [ 'data_partition' ]
 
 # Distro specific
-- include_tasks: tasks/install-deps/main.yml
+- include_tasks: install-deps/main.yml
 
 - name: git clone kdevops
   environment:
diff --git a/playbooks/roles/kdc/tasks/main.yml b/playbooks/roles/kdc/tasks/main.yml
index b67f38d..dbcb309 100644
--- a/playbooks/roles/kdc/tasks/main.yml
+++ b/playbooks/roles/kdc/tasks/main.yml
@@ -11,15 +11,15 @@
         - 'vars'
 
 - name: Debian-specific setup
-  ansible.builtin.include_tasks: roles/kdc/tasks/install-deps/debian/main.yml
+  ansible.builtin.include_tasks: install-deps/debian/main.yml
   when: ansible_os_family == 'Debian'
 
 - name: SuSE-specific setup
-  ansible.builtin.include_tasks: roles/kdc/tasks/install-deps/suse/main.yml
+  ansible.builtin.include_tasks: install-deps/suse/main.yml
   when: ansible_os_family == 'Suse'
 
 - name: Red Hat-specific setup
-  ansible.builtin.include_tasks: roles/kdc/tasks/install-deps/redhat/main.yml
+  ansible.builtin.include_tasks: install-deps/redhat/main.yml
   when: ansible_os_family == 'RedHat'
 
 - name: Configure /etc/krb5.conf
diff --git a/playbooks/roles/ktls/tasks/install-deps/main.yml b/playbooks/roles/ktls/tasks/install-deps/main.yml
index a5b88cb..d9da53d 100644
--- a/playbooks/roles/ktls/tasks/install-deps/main.yml
+++ b/playbooks/roles/ktls/tasks/install-deps/main.yml
@@ -1,9 +1,9 @@
 ---
 # tasks to install dependencies for pynfs
 - name: oscheck distribution ospecific setup
-  include_tasks: tasks/install-deps/debian/main.yml
+  include_tasks: debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- include_tasks: tasks/install-deps/suse/main.yml
+- include_tasks: suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- include_tasks: tasks/install-deps/redhat/main.yml
+- include_tasks: redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/nfsd/tasks/main.yml b/playbooks/roles/nfsd/tasks/main.yml
index 21446f2..123dbc2 100644
--- a/playbooks/roles/nfsd/tasks/main.yml
+++ b/playbooks/roles/nfsd/tasks/main.yml
@@ -1,14 +1,14 @@
 ---
 - name: Debian-specific setup
-  ansible.builtin.include_tasks: roles/nfsd/tasks/install-deps/debian/main.yml
+  ansible.builtin.include_tasks: install-deps/debian/main.yml
   when: ansible_os_family == 'Debian'
 
 - name: SuSE-specific setup
-  ansible.builtin.include_tasks: roles/nfsd/tasks/install-deps/suse/main.yml
+  ansible.builtin.include_tasks: install-deps/suse/main.yml
   when: ansible_os_family == 'Suse'
 
 - name: Red Hat-specific setup
-  ansible.builtin.include_tasks: roles/nfsd/tasks/install-deps/redhat/main.yml
+  ansible.builtin.include_tasks: install-deps/redhat/main.yml
   when: ansible_os_family == 'RedHat'
 
 - name: Generate /etc/nfs.conf
diff --git a/playbooks/roles/selftests/tasks/main.yml b/playbooks/roles/selftests/tasks/main.yml
index 657f93b..1e1fe8c 100644
--- a/playbooks/roles/selftests/tasks/main.yml
+++ b/playbooks/roles/selftests/tasks/main.yml
@@ -15,7 +15,7 @@
 # the target node and the localhost because we first need to build
 # the target selftests for the nodes and then actually use them.
 - name: Install dependencies
-  include_tasks: tasks/install-deps/main.yml
+  include_tasks: install-deps/main.yml
 
 - name: Install dependencies to build Linux selftests on host
   tags: [ 'deps' ]
diff --git a/playbooks/roles/smbd/tasks/install-deps/main.yml b/playbooks/roles/smbd/tasks/install-deps/main.yml
index c4d2ed1..b62e919 100644
--- a/playbooks/roles/smbd/tasks/install-deps/main.yml
+++ b/playbooks/roles/smbd/tasks/install-deps/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Debian-specific set up
-  ansible.builtin.include_tasks: roles/tasks/nfsd/install-deps/debian/main.yml
+  ansible.builtin.include_tasks: debian/main.yml
   when: ansible_os_family == 'Debian'
 
 - name: SuSE-specific set up
-  ansible.builtin.include_tasks: roles/tasks/nfsd/install-deps/suse/main.yml
+  ansible.builtin.include_tasks: suse/main.yml
   when: ansible_os_family == 'Suse'
 
 - name: Red Hat-specific set up
-  ansible.builtin.include_tasks: roles/tasks/nfsd/install-deps/redhat/main.yml
+  ansible.builtin.include_tasks: redhat/main.yml
   when: ansible_os_family == 'RedHat'
diff --git a/playbooks/roles/smbd/tasks/main.yml b/playbooks/roles/smbd/tasks/main.yml
index 83e8a6e..042c308 100644
--- a/playbooks/roles/smbd/tasks/main.yml
+++ b/playbooks/roles/smbd/tasks/main.yml
@@ -1,14 +1,14 @@
 ---
 - name: Debian-specific setup
-  ansible.builtin.include_tasks: roles/smbd/tasks/install-deps/debian/main.yml
+  ansible.builtin.include_tasks: install-deps/debian/main.yml
   when: ansible_os_family == 'Debian'
 
 - name: SuSE-specific setup
-  ansible.builtin.include_tasks: roles/smbd/tasks/install-deps/suse/main.yml
+  ansible.builtin.include_tasks: install-deps/suse/main.yml
   when: ansible_os_family == 'Suse'
 
 - name: Red Hat-specific setup
-  ansible.builtin.include_tasks: roles/smbd/tasks/install-deps/redhat/main.yml
+  ansible.builtin.include_tasks: install-deps/redhat/main.yml
   when: ansible_os_family == 'RedHat'
 
 - name: Create smb.conf

-- 
2.50.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH RFC 3/3] ansible-lint: comprehensive linting and manual fixes
  2025-08-01 16:23 [PATCH RFC 0/3] Run Ansible Lint Across Playbooks Daniel Gomez
  2025-08-01 16:23 ` [PATCH RFC 1/3] playbooks: fix include_tasks paths in kdc and krb5 roles Daniel Gomez
  2025-08-01 16:23 ` [PATCH RFC 2/3] playbooks: ansible-lint: fix FileNotFoundError Daniel Gomez
@ 2025-08-01 16:23 ` Daniel Gomez
  2025-08-02 17:16 ` [PATCH RFC 0/3] Run Ansible Lint Across Playbooks Luis Chamberlain
  2025-08-21  8:36 ` Daniel Gomez
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Gomez @ 2025-08-01 16:23 UTC (permalink / raw)
  To: Luis Chamberlain, Chuck Lever; +Cc: kdevops, Daniel Gomez

From: Daniel Gomez <da.gomez@samsung.com>

This commit addresses systematic ansible-lint violations across the entire
kdevops playbook infrastructure using both automated tools and manual fixes.

Manual fixes performed:

1. Fixed ansible-lint --fix corruption
- Resolved DuplicateKeyError in linux-mirror/tasks/main.yml where duplicate
  failed_when keys were incorrectly added by automated fixing
- Corrected malformed YAML patterns in devconfig/tasks/main.yml where
  ansible-lint --fix corrupted variable syntax (path: "{{" -> path: "{{ var }}")

2. Systematic rule violation fixes
- no-changed-when: Added changed_when: false to information-gathering
  commands (git status, systemctl is-active, uname, etc.) that don't modify
  system state
- ignore-errors: Replaced ignore_errors: true with appropriate failed_when
  conditions for connectivity checks and optional operations
- name[missing]: Added descriptive names to all unnamed tasks across
  200+ playbook files, including distribution-specific setup tasks and
  package management role inclusions
- yaml[truthy]: Standardized boolean values to use true/false instead
  of yes/no for consistency

3. Enhanced error handling
- Replaced blanket ignore_errors with specific failed_when conditions for:
  - Network connectivity checks (failed_when: false)
  - Firewall status checks (failed_when: firewalld_status.rc not in [0, 3, 4])
  - APT mirror connectivity checks
  - Optional git operations and file checks

4. Improved task clarity
- Added meaningful task names following "action + target" pattern
- Improved debugging capability by making all operations clearly identifiable
- Enhanced maintainability for future development
- Added proper spacing between tasks for better readability

5. Automated tooling created
- Scripts for systematic fixing of common patterns
- Validation tools to ensure consistency across roles
- Pattern matching for bulk updates while preserving manual customizations

6. Additional missing task names fixed
- Fixed 20 additional install-deps/main.yml files with missing task names
- Added consistent naming for distribution-specific setup tasks:
  - "Include package management role" for ansible.builtin.include_role
  - "Debian/Ubuntu distribution specific setup" for debian import_tasks
  - "SUSE distribution specific setup" for suse import_tasks
  - "RedHat distribution specific setup" for redhat import_tasks
  - "Fedora distribution specific setup" for fedora import_tasks
- Ensured proper blank line spacing between consecutive tasks

The result is a more maintainable, debuggable, and reliable automation
infrastructure that follows Ansible best practices while preserving all
existing functionality.

Generated-by: Claude AI
Signed-off-by: Daniel Gomez <da.gomez@samsung.com>
---
 playbooks/bootlinux.yml                            |    2 +-
 playbooks/cxl.yml                                  |    2 +-
 playbooks/devconfig.yml                            |    2 +-
 playbooks/roles/ansible_cfg/tasks/main.yml         |    4 +-
 playbooks/roles/blktests/defaults/main.yml         |    8 +-
 playbooks/roles/blktests/handlers/main.yml         |    5 +-
 .../blktests/tasks/install-deps/debian/main.yml    |   26 +-
 .../roles/blktests/tasks/install-deps/main.yml     |   15 +-
 .../blktests/tasks/install-deps/redhat/main.yml    |    8 +-
 .../blktests/tasks/install-deps/suse/main.yml      |  144 +--
 playbooks/roles/blktests/tasks/main.yml            |  361 +++----
 playbooks/roles/bootlinux/defaults/main.yml        |   26 +-
 playbooks/roles/bootlinux/tasks/build/9p.yml       |   77 +-
 playbooks/roles/bootlinux/tasks/build/builder.yml  |    4 +-
 playbooks/roles/bootlinux/tasks/build/targets.yml  |   52 +-
 .../bootlinux/tasks/install-deps/debian/main.yml   |   14 +-
 .../bootlinux/tasks/install-deps/redhat/main.yml   |   22 +-
 .../bootlinux/tasks/install-deps/suse/main.yml     |    8 +-
 .../tasks/install-minimal-deps/debian/main.yml     |   14 +-
 .../tasks/install-minimal-deps/redhat/main.yml     |   12 +-
 .../tasks/install-minimal-deps/suse/main.yml       |    6 +-
 .../roles/bootlinux/tasks/install/packages.yml     |    2 +-
 playbooks/roles/bootlinux/tasks/main.yml           |  178 ++--
 .../roles/bootlinux/tasks/update-grub/debian.yml   |   11 +-
 .../roles/bootlinux/tasks/update-grub/install.yml  |   57 +-
 .../roles/bootlinux/tasks/update-grub/main.yml     |   10 +-
 .../roles/bootlinux/tasks/update-grub/redhat.yml   |   37 +-
 .../roles/bootlinux/tasks/update-grub/suse.yml     |   11 +-
 playbooks/roles/btrfs_progs/defaults/main.yml      |    2 +-
 .../btrfs_progs/tasks/install-deps/debian/main.yml |   18 +-
 .../roles/btrfs_progs/tasks/install-deps/main.yml  |   12 +-
 .../btrfs_progs/tasks/install-deps/redhat/main.yml |    6 +-
 .../btrfs_progs/tasks/install-deps/suse/main.yml   |    6 +-
 playbooks/roles/btrfs_progs/tasks/main.yml         |   65 +-
 playbooks/roles/build_qemu/defaults/main.yml       |    4 +-
 .../build_qemu/tasks/install-deps/debian/main.yml  |   18 +-
 .../build_qemu/tasks/install-deps/fedora/main.yml  |   10 +-
 .../roles/build_qemu/tasks/install-deps/main.yml   |   22 +-
 .../build_qemu/tasks/install-deps/redhat/main.yml  |    6 +-
 .../build_qemu/tasks/install-deps/suse/main.yml    |    6 +-
 playbooks/roles/build_qemu/tasks/main.yml          |   64 +-
 playbooks/roles/common/defaults/main.yml           |    2 +-
 playbooks/roles/common/tasks/main.yml              |   28 +-
 playbooks/roles/compile_dbench/defaults/main.yml   |    2 +-
 .../tasks/install-deps/debian/main.yml             |   22 +-
 .../compile_dbench/tasks/install-deps/main.yml     |    7 +-
 playbooks/roles/compile_dbench/tasks/main.yml      |   47 +-
 .../roles/create_data_partition/tasks/main.yml     |   14 +-
 playbooks/roles/create_nfs_mount/tasks/main.yml    |    7 +-
 .../tasks/install-deps/debian/main.yml             |    8 +-
 .../create_partition/tasks/install-deps/main.yml   |   12 +-
 .../tasks/install-deps/redhat/main.yml             |   16 +-
 .../tasks/install-deps/suse/main.yml               |   40 +-
 playbooks/roles/create_partition/tasks/main.yml    |  101 +-
 playbooks/roles/create_tmpfs/tasks/main.yml        |    5 +-
 playbooks/roles/cxl/defaults/main.yml              |    4 +-
 .../roles/cxl/tasks/cxl-create-dc-region/main.yml  |   35 +-
 playbooks/roles/cxl/tasks/cxl-dcd-setup/main.yml   |   97 +-
 playbooks/roles/cxl/tasks/cxl-mem-setup/main.yml   |   35 +-
 .../roles/cxl/tasks/install-deps/debian/main.yml   |   18 +-
 playbooks/roles/cxl/tasks/install-deps/generic.yml |    4 +-
 playbooks/roles/cxl/tasks/install-deps/main.yml    |   14 +-
 .../roles/cxl/tasks/install-deps/redhat/main.yml   |    8 +-
 .../roles/cxl/tasks/install-deps/suse/main.yml     |   42 +-
 playbooks/roles/cxl/tasks/main.yml                 |  197 ++--
 playbooks/roles/devconfig/defaults/main.yml        |   49 +-
 .../roles/devconfig/tasks/check-apt-mirrors.yml    |   37 +-
 .../config-custom-repos-and-packages/main.yml      |    3 +-
 .../redhat/main.yml                                |   15 +-
 .../devconfig/tasks/install-deps/debian/main.yml   |  173 ++--
 .../roles/devconfig/tasks/install-deps/main.yml    |   14 +-
 .../devconfig/tasks/install-deps/redhat/main.yml   |   88 +-
 .../devconfig/tasks/install-deps/suse/main.yml     |  338 +++----
 .../tasks/kotd-rev-kernel/debian/main.yml          |   28 +-
 .../roles/devconfig/tasks/kotd-rev-kernel/main.yml |   54 +-
 .../tasks/kotd-rev-kernel/redhat/main.yml          |   40 +-
 .../devconfig/tasks/kotd-rev-kernel/suse/main.yml  |   82 +-
 playbooks/roles/devconfig/tasks/main.yml           |  532 +++++-----
 playbooks/roles/fstests/defaults/main.yml          |  262 +++--
 playbooks/roles/fstests/handlers/main.yml          |    5 +-
 .../fstests/tasks/install-deps/debian/main.yml     |   42 +-
 .../roles/fstests/tasks/install-deps/main.yml      |   21 +-
 .../fstests/tasks/install-deps/redhat/main.yml     |   34 +-
 .../roles/fstests/tasks/install-deps/suse/main.yml |  116 +--
 playbooks/roles/fstests/tasks/main.yml             | 1029 ++++++++++----------
 .../roles/fstests_prep_localhost/defaults/main.yml |    2 +-
 .../tasks/install-deps/debian/main.yml             |    6 +-
 .../tasks/install-deps/main.yml                    |   12 +-
 .../tasks/install-deps/redhat/main.yml             |   16 +-
 .../tasks/install-deps/suse/main.yml               |   22 +-
 .../roles/fstests_prep_localhost/tasks/main.yml    |   12 +-
 playbooks/roles/gen_hosts/defaults/main.yml        |   36 +-
 playbooks/roles/gen_hosts/tasks/main.yml           |  203 ++--
 playbooks/roles/gen_nodes/defaults/main.yml        |  111 ++-
 playbooks/roles/gen_nodes/tasks/main.yml           |  199 ++--
 playbooks/roles/gen_pci_kconfig/defaults/main.yml  |    2 +-
 playbooks/roles/gen_pci_kconfig/tasks/main.yml     |    5 +-
 playbooks/roles/gen_tfvars/defaults/main.yml       |    6 +-
 playbooks/roles/gen_tfvars/tasks/main.yml          |   34 +-
 playbooks/roles/gitr/defaults/main.yml             |    4 +-
 .../roles/gitr/tasks/install-deps/debian/main.yml  |    2 +-
 playbooks/roles/gitr/tasks/install-deps/main.yml   |    6 +-
 .../roles/gitr/tasks/install-deps/redhat/main.yml  |    6 +-
 .../roles/gitr/tasks/install-deps/suse/main.yml    |    2 +-
 playbooks/roles/gitr/tasks/main.yml                |   51 +-
 playbooks/roles/guestfs/defaults/main.yml          |    2 +-
 .../guestfs/tasks/bringup/console-permissions.yml  |    4 +-
 playbooks/roles/guestfs/tasks/bringup/main.yml     |    6 +-
 playbooks/roles/guestfs/tasks/bringup/network.yml  |    8 +-
 .../guestfs/tasks/bringup/storage-pool-path.yml    |   10 +-
 .../roles/hypervisor-tuning/defaults/main.yml      |    6 +-
 playbooks/roles/hypervisor-tuning/tasks/main.yml   |   77 +-
 .../install-menuconfig-deps/defaults/main.yml      |    2 +-
 .../tasks/install-deps/debian/main.yml             |   18 +-
 .../tasks/install-deps/fedora/main.yml             |    6 +-
 .../tasks/install-deps/main.yml                    |   22 +-
 .../tasks/install-deps/redhat/main.yml             |    6 +-
 .../tasks/install-deps/suse/main.yml               |    8 +-
 .../roles/install-menuconfig-deps/tasks/main.yml   |   12 +-
 .../defaults/main.yml                              |    4 +-
 .../tasks/install-deps/debian/main.yml             |    6 +-
 .../tasks/install-deps/main.yml                    |   12 +-
 .../tasks/install-deps/redhat/main.yml             |    8 +-
 .../tasks/install-deps/suse/main.yml               |    4 +-
 .../install_systemd_journal_remote/tasks/main.yml  |   81 +-
 .../install_systemd_timesyncd/defaults/main.yml    |   10 +-
 .../tasks/install-deps/debian/main.yml             |    6 +-
 .../tasks/install-deps/main.yml                    |   12 +-
 .../tasks/install-deps/redhat/main.yml             |    8 +-
 .../tasks/install-deps/suse/main.yml               |    4 +-
 .../roles/install_systemd_timesyncd/tasks/main.yml |   51 +-
 .../roles/install_terraform/defaults/main.yml      |    4 +-
 .../tasks/install-deps/debian/main.yml             |   14 +-
 .../install_terraform/tasks/install-deps/main.yml  |   12 +-
 .../tasks/install-deps/redhat/main.yml             |   12 +-
 .../tasks/install-deps/suse/main.yml               |   20 +-
 playbooks/roles/install_terraform/tasks/main.yml   |   12 +-
 playbooks/roles/iscsi/tasks/add_initiator.yml      |   16 +-
 playbooks/roles/iscsi/tasks/add_lun.yml            |   10 +-
 playbooks/roles/iscsi/tasks/main.yml               |   26 +-
 .../roles/kdc/tasks/install-deps/debian/main.yml   |    8 +-
 .../roles/kdc/tasks/install-deps/redhat/main.yml   |    8 +-
 .../roles/kdc/tasks/install-deps/suse/main.yml     |    4 +-
 playbooks/roles/kdc/tasks/main.yml                 |   68 +-
 playbooks/roles/kdc/vars/RedHat.yml                |    3 +-
 playbooks/roles/kdc/vars/default.yml               |    3 +-
 playbooks/roles/kdevops_archive/defaults/main.yml  |    4 +-
 playbooks/roles/kdevops_archive/tasks/main.yml     |  164 ++--
 .../roles/krb5/tasks/install-deps/debian/main.yml  |    8 +-
 .../roles/krb5/tasks/install-deps/redhat/main.yml  |    8 +-
 .../roles/krb5/tasks/install-deps/suse/main.yml    |   10 +-
 playbooks/roles/krb5/tasks/main.yml                |   30 +-
 .../roles/ktls/tasks/install-deps/debian/main.yml  |    8 +-
 playbooks/roles/ktls/tasks/install-deps/main.yml   |   12 +-
 .../roles/ktls/tasks/install-deps/redhat/main.yml  |    8 +-
 .../roles/ktls/tasks/install-deps/suse/main.yml    |    4 +-
 playbooks/roles/ktls/tasks/main.yml                |   42 +-
 .../libvirt_pcie_passthrough/defaults/main.yml     |    2 +-
 .../roles/libvirt_pcie_passthrough/tasks/main.yml  |   52 +-
 .../libvirt_storage_pool_create/defaults/main.yml  |    4 +-
 .../libvirt_storage_pool_create/tasks/main.yml     |   74 +-
 playbooks/roles/libvirt_user/defaults/main.yml     |   10 +-
 .../libvirt_user/tasks/enable-user/debian/main.yml |   39 +-
 .../libvirt_user/tasks/enable-user/redhat/main.yml |   39 +-
 .../libvirt_user/tasks/enable-user/suse/main.yml   |   29 +-
 .../tasks/install-deps/debian/main.yml             |   30 +-
 .../tasks/install-deps/fedora/main.yml             |   38 +-
 .../roles/libvirt_user/tasks/install-deps/main.yml |   22 +-
 .../tasks/install-deps/redhat/main.yml             |   22 +-
 .../libvirt_user/tasks/install-deps/suse/main.yml  |   20 +-
 playbooks/roles/libvirt_user/tasks/main.yml        |   22 +-
 playbooks/roles/linux-mirror/defaults/main.yml     |    4 +-
 .../tasks/install-deps/fedora/main.yml             |   10 +-
 playbooks/roles/linux-mirror/tasks/main.yml        |  145 ++-
 playbooks/roles/ltp/defaults/main.yml              |    2 +-
 playbooks/roles/ltp/tasks/main.yml                 |  105 +-
 playbooks/roles/mmtests/defaults/main.yml          |   18 +-
 .../mmtests/tasks/install-deps/debian/main.yml     |   42 +-
 .../roles/mmtests/tasks/install-deps/main.yml      |    9 +-
 .../mmtests/tasks/install-deps/redhat/main.yml     |   34 +-
 .../roles/mmtests/tasks/install-deps/suse/main.yml |   34 +-
 playbooks/roles/mmtests/tasks/main.yaml            |  173 ++--
 .../roles/nfsd/tasks/install-deps/debian/main.yml  |   22 +-
 .../roles/nfsd/tasks/install-deps/redhat/main.yml  |   18 +-
 .../roles/nfsd/tasks/install-deps/suse/main.yml    |   18 +-
 playbooks/roles/nfsd/tasks/main.yml                |   74 +-
 playbooks/roles/nfsd_add_export/tasks/main.yml     |   61 +-
 .../roles/nfsd_add_export/tasks/storage/iscsi.yml  |   12 +-
 .../roles/nfsd_add_export/tasks/storage/local.yml  |    8 +-
 .../roles/nfsd_add_export/tasks/storage/tmpfs.yml  |    4 +-
 playbooks/roles/nfstest/defaults/main.yml          |    2 +-
 playbooks/roles/nfstest/tasks/main.yml             |   51 +-
 playbooks/roles/pkg/tasks/debian.yml               |    9 +-
 playbooks/roles/pkg/tasks/main.yml                 |    5 +-
 .../roles/postfix_relay_host/defaults/main.yml     |    4 +-
 playbooks/roles/postfix_relay_host/tasks/main.yml  |   46 +-
 playbooks/roles/pynfs/defaults/main.yml            |    4 +-
 .../roles/pynfs/tasks/install-deps/debian/main.yml |   10 +-
 playbooks/roles/pynfs/tasks/install-deps/main.yml  |   12 +-
 .../roles/pynfs/tasks/install-deps/redhat/main.yml |    8 +-
 .../roles/pynfs/tasks/install-deps/suse/main.yml   |    4 +-
 playbooks/roles/pynfs/tasks/main.yml               |  153 +--
 playbooks/roles/reboot-limit/defaults/main.yml     |    4 +-
 playbooks/roles/reboot-limit/tasks/do-reboot.yml   |  125 +--
 playbooks/roles/reboot-limit/tasks/main.yml        |   85 +-
 playbooks/roles/selftests/defaults/main.yml        |   36 +-
 .../selftests/tasks/install-deps/debian/main.yml   |   18 +-
 .../roles/selftests/tasks/install-deps/main.yml    |   12 +-
 .../selftests/tasks/install-deps/redhat/main.yml   |    8 +-
 .../selftests/tasks/install-deps/suse/main.yml     |   36 +-
 playbooks/roles/selftests/tasks/main.yml           |  407 ++++----
 playbooks/roles/siw/tasks/main.yml                 |   19 +-
 .../roles/smbd/tasks/install-deps/debian/main.yml  |   20 +-
 .../roles/smbd/tasks/install-deps/redhat/main.yml  |   18 +-
 .../roles/smbd/tasks/install-deps/suse/main.yml    |   14 +-
 playbooks/roles/smbd/tasks/main.yml                |   46 +-
 playbooks/roles/smbd_add_share/tasks/main.yml      |   73 +-
 playbooks/roles/steady_state/defaults/main.yml     |    4 +-
 playbooks/roles/steady_state/tasks/main.yaml       |  196 ++--
 playbooks/roles/sysbench/defaults/main.yml         |   14 +-
 .../sysbench/tasks/install-deps/debian/main.yml    |   52 +-
 .../roles/sysbench/tasks/install-deps/main.yml     |   15 +-
 .../sysbench/tasks/install-deps/redhat/main.yml    |    8 +-
 .../sysbench/tasks/install-deps/suse/main.yml      |   44 +-
 playbooks/roles/sysbench/tasks/main.yaml           |   15 +-
 .../roles/sysbench/tasks/mysql-docker/main.yaml    |  594 +++++------
 .../sysbench/tasks/postgresql-native/main.yaml     |  207 ++--
 playbooks/roles/update_etc_hosts/defaults/main.yml |    3 +-
 playbooks/roles/update_etc_hosts/tasks/main.yml    |   59 +-
 .../roles/update_ssh_config_guestfs/tasks/main.yml |   26 +-
 playbooks/roles/volume_group/tasks/main.yml        |    2 +-
 .../roles/volume_group/tasks/terraform/aws.yml     |    5 +-
 playbooks/steady_state.yml                         |    3 +-
 playbooks/update_etc_hosts.yml                     |    2 +-
 234 files changed, 5308 insertions(+), 5098 deletions(-)

diff --git a/playbooks/bootlinux.yml b/playbooks/bootlinux.yml
index 676469d..5477d8f 100644
--- a/playbooks/bootlinux.yml
+++ b/playbooks/bootlinux.yml
@@ -1,5 +1,5 @@
 ---
-- name: bootlinux
+- name: Bootlinux
   hosts: all
   roles:
     - role: bootlinux
diff --git a/playbooks/cxl.yml b/playbooks/cxl.yml
index 8880ee7..641b580 100644
--- a/playbooks/cxl.yml
+++ b/playbooks/cxl.yml
@@ -1,5 +1,5 @@
 ---
-- name: cxl
+- name: Cxl
   hosts: baseline:dev
   roles:
     - role: cxl
diff --git a/playbooks/devconfig.yml b/playbooks/devconfig.yml
index b0b9d42..cebaa87 100644
--- a/playbooks/devconfig.yml
+++ b/playbooks/devconfig.yml
@@ -1,6 +1,6 @@
 ---
 - name: Configure developer environment on target systems
   hosts: baseline:dev
-  gather_facts: no
+  gather_facts: false
   roles:
     - role: devconfig
diff --git a/playbooks/roles/ansible_cfg/tasks/main.yml b/playbooks/roles/ansible_cfg/tasks/main.yml
index c2b0db1..0ff0e45 100644
--- a/playbooks/roles/ansible_cfg/tasks/main.yml
+++ b/playbooks/roles/ansible_cfg/tasks/main.yml
@@ -15,10 +15,10 @@
   ansible.builtin.template:
     src: "ansible.cfg.j2"
     dest: "{{ ansible_cfg_file }}"
-    mode: '0755'
+    mode: "0755"
 
 - name: Update ansible.cfg access modification time so make sees it updated
   ansible.builtin.file:
     path: "{{ topdir_path }}/ansible.cfg"
     state: touch
-    mode: '0755'
+    mode: "0755"
diff --git a/playbooks/roles/blktests/defaults/main.yml b/playbooks/roles/blktests/defaults/main.yml
index 8c50bf6..7054424 100644
--- a/playbooks/roles/blktests/defaults/main.yml
+++ b/playbooks/roles/blktests/defaults/main.yml
@@ -3,9 +3,9 @@
 # Our sensible defaults for the blktests role.
 #
 # We default to not run tests.
-kdevops_run_blktests: False
-run_tests_on_failures: False
-blktests_skip_run: False
+kdevops_run_blktests: false
+run_tests_on_failures: false
+blktests_skip_run: false
 
 # Ror instance you can use "-g quick" but note that this may produce
 # not results as all quick tests may be expunded.
@@ -21,5 +21,5 @@ nbd_git: "https://github.com/NetworkBlockDevice/nbd.git"
 nbd_version: "nbd-3.21"
 nbd_data: "{{data_path}}/nbd"
 
-compile_dbench: False
+compile_dbench: false
 blktests_dbench_git: "https://github.com/linux-kdevops/dbench.git"
diff --git a/playbooks/roles/blktests/handlers/main.yml b/playbooks/roles/blktests/handlers/main.yml
index 0b2342d..9eb4af1 100644
--- a/playbooks/roles/blktests/handlers/main.yml
+++ b/playbooks/roles/blktests/handlers/main.yml
@@ -1,3 +1,6 @@
+---
 # SPDX-License-Identifier GPL-2.0+ OR MIT
 - name: Restart watchdog daemon
-  service: name="{{watchdog_service_name}}" state=restarted
+  ansible.builtin.service:
+    name: "{{ watchdog_service_name }}"
+    state: restarted
diff --git a/playbooks/roles/blktests/tasks/install-deps/debian/main.yml b/playbooks/roles/blktests/tasks/install-deps/debian/main.yml
index 4afa429..308e89c 100644
--- a/playbooks/roles/blktests/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/blktests/tasks/install-deps/debian/main.yml
@@ -1,23 +1,23 @@
 ---
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
   tags: linux
 
 - name: Install nvme tools
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - nvme-cli
-    update_cache: yes
+    update_cache: true
 
 - name: Install blktests build dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - bison
       - flex
@@ -65,5 +65,5 @@
       - libnl-utils
       - zlib1g-dev
     state: present
-    update_cache: yes
-  tags: [ 'blktests', 'deps' ]
+    update_cache: true
+  tags: ["blktests", "deps"]
diff --git a/playbooks/roles/blktests/tasks/install-deps/main.yml b/playbooks/roles/blktests/tasks/install-deps/main.yml
index 4e01d57..053c3c3 100644
--- a/playbooks/roles/blktests/tasks/install-deps/main.yml
+++ b/playbooks/roles/blktests/tasks/install-deps/main.yml
@@ -1,12 +1,17 @@
 ---
-- include_role:
+- name: Include package management role
+  ansible.builtin.include_role:
     name: pkg
 
 # tasks to install dependencies for oscheck
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: tasks/install-deps/suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: tasks/install-deps/redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/blktests/tasks/install-deps/redhat/main.yml b/playbooks/roles/blktests/tasks/install-deps/redhat/main.yml
index 3b321e7..fafd444 100644
--- a/playbooks/roles/blktests/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/blktests/tasks/install-deps/redhat/main.yml
@@ -1,9 +1,9 @@
 ---
 - name: Install build dependencies for blktests
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   vars:
     packages:
diff --git a/playbooks/roles/blktests/tasks/install-deps/suse/main.yml b/playbooks/roles/blktests/tasks/install-deps/suse/main.yml
index 22c9253..a11bf4b 100644
--- a/playbooks/roles/blktests/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/blktests/tasks/install-deps/suse/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
 
 - name: Set SLE specific version labels to make checks easier
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle10: '{{ ansible_distribution_major_version == "10" }}'
     is_sle11: '{{ ansible_distribution_major_version == "11" }}'
     is_sle12: '{{ ansible_distribution_major_version == "12" }}'
@@ -24,48 +24,48 @@
     - is_sle|bool
 
 - name: Set SLE specific version labels to make checks easier when not SLE
-  set_fact:
-    is_sle10: False
-    is_sle11: False
-    is_sle12: False
-    is_sle12sp5: False
-    is_sle15: False
-    is_sle10sp3: False
-    is_sle11sp1: False
-    is_sle11sp4: False
-    is_sle12sp1: False
-    is_sle12sp3: False
-    is_sle15sp2: False
-    is_sle15sp3: False
-    is_sle15sp4: False
+  ansible.builtin.set_fact:
+    is_sle10: false
+    is_sle11: false
+    is_sle12: false
+    is_sle12sp5: false
+    is_sle15: false
+    is_sle10sp3: false
+    is_sle11sp1: false
+    is_sle11sp4: false
+    is_sle12sp1: false
+    is_sle12sp3: false
+    is_sle15sp2: false
+    is_sle15sp3: false
+    is_sle15sp4: false
   when:
     - not is_sle|bool
 
 - name: By default we assume we have figured out how to add repos on a release
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: true
 
 - name: Lets us disable things which require a zypper repo present
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: false
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
 
 - name: The default is to assume all distros supports nvme-utils
-  set_fact:
+  ansible.builtin.set_fact:
     lacks_nvme_utils: false
 
 - name: Does this release lack nvme-utils
-  set_fact:
+  ansible.builtin.set_fact:
     lacks_nvme_utils: true
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool or is_sle12sp1|bool
 
 - name: Install NVMe tools
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - nvme-cli
@@ -75,8 +75,8 @@
     - not lacks_nvme_utils|bool
 
 - name: Install build dependencies for blktests
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - bison
@@ -120,8 +120,8 @@
     - repos_present|bool
 
 - name: Install tumblweed packages
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - libgdbm6
@@ -131,8 +131,8 @@
     - is_tumbleweed|bool
 
 - name: Install leap packages
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - libgdbm4
@@ -143,8 +143,8 @@
     - is_tumbleweed|bool
 
 - name: Install libgdbm4
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - libgdbm4
@@ -156,8 +156,8 @@
 # to find way to get autoconf-archive for sles15sp4
 # as it is required...
 - name: Install autoconf-archive for building nbd
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - autoconf-archive
@@ -167,42 +167,42 @@
     - is_sle15sp2|bool or is_sle15sp3|bool
 
 - name: The default is to assume we do not want to add the benchmark repo
-  set_fact:
-    add_benchmark_repo: False
+  ansible.builtin.set_fact:
+    add_benchmark_repo: false
 
 - name: Does this release require the benchmark repo
-  set_fact:
-    add_benchmark_repo: True
+  ansible.builtin.set_fact:
+    add_benchmark_repo: true
   when:
     - is_sle15sp2|bool or is_sle15sp3|bool or is_sle15sp4|bool or is_sle12sp5|bool
 
 - name: Add benchmark sles12sp5 opensuse repo when needed
-  become: yes
-  become_method: sudo
-  script:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.script:
     cmd: "{{ role_path }}/scripts/add-suse-repo-if-not-found.sh http://download.opensuse.org/repositories/benchmark/SLE_12_SP5/ benchmark benchmark"
   when:
     - is_sle12sp5|bool
 
 - name: Add benchmark sles15sp2 opensuse repo when needed
-  become: yes
-  become_method: sudo
-  script:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.script:
     cmd: "{{ role_path }}/scripts/add-suse-repo-if-not-found.sh http://download.opensuse.org/repositories/benchmark/SLE_15_SP2/ benchmark benchmark"
   when:
     - is_sle15sp2|bool
 
 - name: Add benchmark sles15sp3 opensuse repo when needed
-  become: yes
-  become_method: sudo
-  script:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.script:
     cmd: "{{ role_path }}/scripts/add-suse-repo-if-not-found.sh http://download.opensuse.org/repositories/benchmark/SLE_15_SP3/ benchmark benchmark"
   when:
     - is_sle15sp3|bool or is_sle15sp4|bool
 
 - name: Install dbench when needed
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - dbench
@@ -211,18 +211,18 @@
     - add_benchmark_repo|bool
 
 - name: The default is to assume we do not want to to compile nbd manually
-  set_fact:
-    compile_nbd: False
+  ansible.builtin.set_fact:
+    compile_nbd: false
 
 - name: Set when we need to compile nbd
-  set_fact:
-    compile_nbd: True
+  ansible.builtin.set_fact:
+    compile_nbd: true
   when:
     - is_sle15sp2|bool or is_sle15sp3|bool or is_sle15sp4|bool or is_leap|bool
 
 - name: Install build dependencies for nbd
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - glib2-devel
@@ -231,19 +231,19 @@
     - repos_present|bool
     - compile_nbd|bool
 
-- name: git clone nbd
-  git:
+- name: Git clone nbd
+  ansible.builtin.git:
     repo: "{{ nbd_git }}"
     dest: "{{ nbd_data }}"
-    update: yes
+    update: true
     version: "{{ nbd_version }}"
   when:
     - repos_present|bool
     - compile_nbd|bool
-  tags: [ 'git', 'blktests', 'nbd' ]
+  tags: ["git", "blktests", "nbd"]
 
 - name: Skip documentation for nbd as we lack the requirement of docbook2man
-  file:
+  ansible.builtin.file:
     path: "{{ nbd_data }}/man/{{ item }}"
     state: touch
   with_items:
@@ -254,39 +254,39 @@
     - "nbdtab.5.sh.in"
   loop_control:
     label: "Faking generation of documentation for nbd{{ item }}"
-  tags: [ 'blktests', 'nbd' ]
+  tags: ["blktests", "nbd"]
   when:
     - repos_present|bool
     - compile_nbd|bool
 
 - name: Run autogen for nbd
-  command: "./autogen.sh"
-  tags: [ 'blktests', 'nbd' ]
+  ansible.builtin.command: "./autogen.sh"
+  tags: ["blktests", "nbd"]
   args:
     chdir: "{{ nbd_data }}"
 
 - name: Run configure for nbd
-  command: "./configure"
-  tags: [ 'blktests', 'nbd' ]
+  ansible.builtin.command: "./configure"
+  tags: ["blktests", "nbd"]
   args:
     chdir: "{{ nbd_data }}"
 
 - name: Get nproc
-  command: "{{ num_jobs }}"
-  tags: [ 'git', 'blktests', 'nbd' ]
+  ansible.builtin.command: "{{ num_jobs }}"
+  tags: ["git", "blktests", "nbd"]
   register: nproc
 
 - name: Build nbd
-  tags: [ 'git', 'blktests', 'nbd' ]
-  make:
+  tags: ["git", "blktests", "nbd"]
+  community.general.make:
     chdir: "{{ nbd_data }}"
     jobs: "{{ nproc.stdout }}"
 
 - name: Install nbd
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{  make }} install"
-  tags: [ 'git', 'blktests', 'nbd' ]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{  make }} install"
+  tags: ["git", "blktests", "nbd"]
   args:
     chdir: "{{ nbd_data }}"
diff --git a/playbooks/roles/blktests/tasks/main.yml b/playbooks/roles/blktests/tasks/main.yml
index 7ca492c..d864f09 100644
--- a/playbooks/roles/blktests/tasks/main.yml
+++ b/playbooks/roles/blktests/tasks/main.yml
@@ -1,133 +1,134 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  failed_when: false
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
-- include_role:
+- name: Include role
+  ansible.builtin.include_role:
     name: create_data_partition
-  tags: [ 'data_partition' ]
+  tags: ["data_partition"]
 
 # Distro specific
-- include_tasks: install-deps/main.yml
-
-- name: git clone kdevops
+- name: Include tasks
+  ansible.builtin.include_tasks: install-deps/main.yml
+- name: Git clone kdevops
   environment:
-    GIT_SSL_NO_VERIFY:  true
-  git:
+    GIT_SSL_NO_VERIFY: true
+  ansible.builtin.git:
     repo: "{{ kdevops_git }}"
     dest: "{{ kdevops_data }}"
-    update: yes
+    update: true
     version: main
-  tags: [ 'install', 'git']
+  tags: ["install", "git"]
 
 - name: Copy over our .config
-  copy:
+  ansible.builtin.copy:
     src: "{{ playbook_dir }}/../.config"
     dest: "{{ kdevops_dir }}"
-  tags: [ 'install', 'root', 'config']
+  tags: ["install", "root", "config"]
 
 # We do this *after* the /data/ partition is set up so
 # we can house the dbench source code there and so that
 # we don't have to bother with the setup of that partition
 # in the dbench role.
 - name: Compile dbench from source if needed by the distribution
-  include_role:
+  ansible.builtin.include_role:
     name: compile_dbench
   vars:
     dbench_data: "{{ data_path }}/dbench"
     dbench_git: "{{ blktests_dbench_git }}"
-  tags: [ 'oscheck', 'git', 'dbench']
+  tags: ["oscheck", "git", "dbench"]
 
 - name: Remove any old blktrace as we always clone a fresh tree
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ blktrace_data }}"
     state: absent
-  tags: [ 'git', 'blktests', 'blktrace' ]
+  tags: ["git", "blktests", "blktrace"]
 
-- name: git clone blktrace
-  git:
+- name: Git clone blktrace
+  ansible.builtin.git:
     repo: "{{ blktrace_git }}"
     dest: "{{ blktrace_data }}"
-    update: yes
+    update: true
     version: master
-  tags: [ 'git', 'blktests', 'blktrace' ]
+  tags: ["git", "blktests", "blktrace"]
 
 - name: Get nproc
-  command: "{{ num_jobs }}"
-  tags: [ 'blktests', 'build', 'bltkrace' ]
+  ansible.builtin.command: "{{ num_jobs }}"
+  tags: ["blktests", "build", "bltkrace"]
   register: nproc
 
 - name: Build blktrace
-  tags: [ 'blktests', 'build', 'bltkrace' ]
-  make:
+  tags: ["blktests", "build", "bltkrace"]
+  community.general.make:
     chdir: "{{ blktrace_data }}"
     jobs: "{{ nproc.stdout }}"
 
 - name: Install blktrace
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{  make }} install"
-  tags: [ 'blktests', 'install', 'root', 'blktrace' ]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{  make }} install"
+  tags: ["blktests", "install", "root", "blktrace"]
   args:
     chdir: "{{ blktrace_data }}"
 
 - name: Remove any old blktets as we always clone a fresh tree
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ blktests_data }}"
     state: absent
-  tags: [ 'git', 'blktests']
+  tags: ["git", "blktests"]
 
-- name: git clone blktests
-  git:
+- name: Git clone blktests
+  ansible.builtin.git:
     repo: "{{ blktests_git }}"
     dest: "{{ blktests_data }}"
-    update: yes
+    update: true
     version: master
-  tags: [ 'git', 'blktests']
+  tags: ["git", "blktests"]
 
 - name: Build blktests
-  tags: [ 'blktests', 'build']
-  make:
+  tags: ["blktests", "build"]
+  community.general.make:
     chdir: "{{ blktests_data }}"
     jobs: "{{ nproc.stdout }}"
 
 - name: Install blktests
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{  make }} install"
-  tags: [ 'blktests', 'install', 'root']
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{  make }} install"
+  tags: ["blktests", "install", "root"]
   args:
     chdir: "{{ blktests_data }}"
 
-- name: git pull latest kdevops to ensure expunge list is up to date
+- name: Git pull latest kdevops to ensure expunge list is up to date
   environment:
-    GIT_SSL_NO_VERIFY:  true
-  git:
+    GIT_SSL_NO_VERIFY: true
+  ansible.builtin.git:
     repo: "{{ kdevops_git }}"
     dest: "{{ kdevops_data }}"
-    update: yes
+    update: true
     version: main
-  tags: [ 'install', 'git', 'git_update', 'run_tests' ]
+  tags: ["install", "git", "git_update", "run_tests"]
 
 - name: Create a symbolic links needed
-  become: yes
-  become_method: sudo
-  file:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     src: "{{ kdevops_dir }}/workflows/blktests/scripts/{{ item }}"
     dest: "{{ blktests_data_target }}/{{ item }}"
     state: link
@@ -135,57 +136,58 @@
     - "oscheck.sh"
   loop_control:
     label: "{{ item }}"
-  tags: [ 'blktests', 'install' ]
+  tags: ["blktests", "install"]
 
 - name: Disable multipathd service for srp blktests tests
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: multipathd
-    enabled: no
+    enabled: false
     state: stopped
   tags: multipathd
 
 - name: Reboot system before our test so we know everything is sane
-  tags: [ 'blktests', 'run_tests', 'reboot' ]
-  become: yes
-  become_method: sudo
-  reboot:
+  tags: ["blktests", "run_tests", "reboot"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
     post_reboot_delay: 10
 
 - name: Set the path to blktests workflow
-  set_fact:
+  ansible.builtin.set_fact:
     blktests_workflow_target: "../workflows/blktests/"
-  tags: [ 'blktests', 'run_tests', 'copy_results', 'prior_run', 'print_results' , 'augment_expunge_list' ]
+  tags: ["blktests", "run_tests", "copy_results", "prior_run", "print_results", "augment_expunge_list"]
 
 - name: Set the path where we collect our blktests results
-  set_fact:
+  ansible.builtin.set_fact:
     blktests_results_target: "../workflows/blktests/results/"
     blktests_results_full_path: "{{ topdir_path }}/workflows/blktests/results/"
-  tags: [ 'blktests', 'run_tests', 'copy_results', 'prior_run', 'print_results' , 'augment_expunge_list' ]
+  tags: ["blktests", "run_tests", "copy_results", "prior_run", "print_results", "augment_expunge_list"]
 
 - name: Set the path where we collect blktests expunges
-  set_fact:
+  ansible.builtin.set_fact:
     blktests_expunges_target: "../workflows/blktests/expunges/"
-  tags: [ 'blktests', 'run_tests', 'copy_results', 'prior_run', 'print_results' , 'augment_expunge_list' ]
+  tags: ["blktests", "run_tests", "copy_results", "prior_run", "print_results", "augment_expunge_list"]
 
 - name: Print uname for each host
-  tags: [ 'blktests', 'run_tests' ]
-  debug: var=ansible_kernel
-
+  tags: ["blktests", "run_tests"]
+  ansible.builtin.debug:
+    var: ansible_kernel
 - name: Get used target kernel version
-  tags: [ 'blktests', 'copy_results', 'augment_expunge_list' ]
-  command: "uname -r"
+  tags: ["blktests", "copy_results", "augment_expunge_list"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Store last kernel variable
-  set_fact:
-    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\",'') }}"
-  tags: [ 'blktests', 'copy_results', 'augment_expunge_list' ]
+  ansible.builtin.set_fact:
+    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\", '') }}"
+  tags: ["blktests", "copy_results", "augment_expunge_list"]
   run_once: true
 
 - name: Create {{ blktests_results_target }} if it does not exist
-  tags: [ 'blktests', 'copy_results', 'augment_expunge_list' ]
+  tags: ["blktests", "copy_results", "augment_expunge_list"]
   delegate_to: localhost
   ansible.builtin.file:
     path: "{{ blktests_results_target }}"
@@ -193,51 +195,54 @@
   run_once: true
 
 - name: Document used target kernel version
-  local_action: "shell echo {{ last_kernel }} > {{ blktests_results_target }}/last-kernel.txt"
-  tags: [ 'blktests', 'copy_results', 'augment_expunge_list' ]
+  ansible.builtin.shell: echo {{ last_kernel }} > {{ blktests_results_target }}/last-kernel.txt
+  changed_when: false
+  delegate_to: localhost
+  tags: ["blktests", "copy_results", "augment_expunge_list"]
   run_once: true
 
 - name: Load configfs module
-  tags: [ 'blktests', 'run_tests', 'configfs' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "modprobe configfs"
+  tags: ["blktests", "run_tests", "configfs"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "modprobe configfs"
   when:
     - kdevops_run_blktests|bool
 
 - name: Clear out old results directory on target hosts
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     state: absent
     path: "{{ blktests_data_target }}/results/"
-  tags: [ 'blktests', 'run_tests', 'clean_results' ]
+  tags: ["blktests", "run_tests", "clean_results"]
 
 - name: Verify target test devices are defined
-  fail:
+  ansible.builtin.fail:
     msg: "The variable blktests_test_devs must be defined to run"
   when:
     - kdevops_run_blktests|bool
     - blktests_test_devs is not defined
-  tags: [ 'blktests', 'run_tests' ]
+  tags: ["blktests", "run_tests"]
 
 - name: Verify target test device is not /dev/null
-  fail:
+  ansible.builtin.fail:
     msg: "The variable blktests_test_devs must not be /dev/null"
   when:
     - blktests_test_devs == "/dev/null"
-  tags: [ 'blktests', 'run_tests' ]
+  tags: ["blktests", "run_tests"]
 
 - name: Verify target test devices exist {{ blktests_test_devs }}
   vars:
     verify_dev_list: "{{ blktests_test_devs | regex_replace(' ', ' -a -e ') }}"
-  tags: [ 'blktests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "test -e {{ verify_dev_list }}"
+  tags: ["blktests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "test -e {{ verify_dev_list }}"
+  changed_when: false
   when:
     - kdevops_run_blktests|bool
     - blktests_test_devs|length != 0
@@ -245,41 +250,43 @@
 - name: Verify target test devices are block devices {{ blktests_test_devs }}
   vars:
     verify_dev_list: "{{ blktests_test_devs | regex_replace(' ', ' -a -b ') }}"
-  tags: [ 'blktests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "test -b {{ verify_dev_list }}"
+  tags: ["blktests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "test -b {{ verify_dev_list }}"
   when:
     - kdevops_run_blktests|bool
     - blktests_test_devs is defined
     - blktests_test_devs|length != 0
 
 - name: Hint to watchdog tests are about to kick off
-  local_action: file path="{{ blktests_workflow_target }}/.begin" state=touch
-  tags: [ 'blktests', 'run_tests' ]
+  ansible.builtin.file:
+    path: "{{ blktests_workflow_target }}/.begin"
+    state: touch
+  delegate_to: localhost
+  tags: ["blktests", "run_tests"]
   when:
     - kdevops_run_blktests|bool
   run_once: true
 
 - name: Enable low-level messages on console
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: sysctl kernel.printk="8 8 1 7"
-
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: sysctl kernel.printk="8 8 1 7"
 - name: Check to see if dynamic test limit scope was set
-  set_fact:
+  ansible.builtin.set_fact:
     dynamic_limit_tests: "{{ lookup('ansible.builtin.env', 'LIMIT_TESTS') }}"
-  tags: [ 'blktests', 'run_tests', 'limit-tests' ]
+  tags: ["blktests", "run_tests", "limit-tests"]
   when:
     - not run_tests_on_failures|bool
     - kdevops_run_blktests|bool
 
 - name: Allow dynamic test override
-  set_fact:
+  ansible.builtin.set_fact:
     all_limit_tests: "{{ dynamic_limit_tests }}"
-  tags: [ 'blktests', 'run_tests', 'limit-tests' ]
+  tags: ["blktests", "run_tests", "limit-tests"]
   when:
     - not run_tests_on_failures|bool
     - kdevops_run_blktests|bool
@@ -288,9 +295,9 @@
     - dynamic_limit_tests | length > 0
 
 - name: Empty out test limit if None is set
-  set_fact:
+  ansible.builtin.set_fact:
     all_limit_tests: ""
-  tags: [ 'blktests', 'run_tests', 'limit-tests' ]
+  tags: ["blktests", "run_tests", "limit-tests"]
   when:
     - not run_tests_on_failures|bool
     - kdevops_run_blktests|bool
@@ -298,9 +305,9 @@
     - all_limit_tests == None
 
 - name: Empty out test no limits have been set
-  set_fact:
+  ansible.builtin.set_fact:
     all_limit_tests: ""
-  tags: [ 'blktests', 'run_tests', 'limit-tests' ]
+  tags: ["blktests", "run_tests", "limit-tests"]
   when:
     - not run_tests_on_failures|bool
     - kdevops_run_blktests|bool
@@ -309,8 +316,8 @@
 - name: Run oscheck-get-failures.sh to get list of known failed tests
   vars:
     group: "{{ ansible_host | regex_replace('blktests-') | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') | regex_replace('-', '_') }}"
-  tags: [ 'blktests', 'run_tests' ]
-  command: "{{ kdevops_data }}/workflows/blktests/scripts/oscheck-get-failures.sh --test-group {{ group }}"
+  tags: ["blktests", "run_tests"]
+  ansible.builtin.command: "{{ kdevops_data }}/workflows/blktests/scripts/oscheck-get-failures.sh --test-group {{ group }}"
   args:
     chdir: "{{ blktests_data_target }}"
   register: failed_tests_limit
@@ -319,26 +326,26 @@
     - kdevops_run_blktests|bool
 
 - name: Inform user no failures are known
-  fail:
+  ansible.builtin.fail:
     msg: "No known failures for this run! Go find bugs!"
-  tags: [ 'blktests', 'run_tests' ]
+  tags: ["blktests", "run_tests"]
   when:
     - run_tests_on_failures|bool
     - kdevops_run_blktests|bool
     - failed_tests_limit.stdout | replace('\n', ' ') | length == 0
 
 - name: Set test limit to known failed tests
-  set_fact:
+  ansible.builtin.set_fact:
     all_limit_tests: "{{ failed_tests_limit.stdout | replace('\n', ' ') }}"
-  tags: [ 'blktests', 'run_tests' ]
+  tags: ["blktests", "run_tests"]
   when:
     - run_tests_on_failures|bool
     - kdevops_run_blktests|bool
 
 - name: Print list of test limits for this run
-  debug:
+  ansible.builtin.debug:
     msg: "all_limit_tests: {{ all_limit_tests }}"
-  tags: [ 'blktests', 'run_tests', 'limit-tests' ]
+  tags: ["blktests", "run_tests", "limit-tests"]
   when:
     - kdevops_run_blktests|bool
     - all_limit_tests is defined
@@ -347,20 +354,20 @@
 
 - name: Stop blktests if we're debbugging limit_tests
   ansible.builtin.meta: end_play
-  tags: [ 'blktests', 'run_tests' ]
+  tags: ["blktests", "run_tests"]
   when:
     - blktests_skip_run|bool
 
 - name: Run blktests using oscheck.sh
   vars:
     group: "{{ ansible_host | regex_replace('blktests-') | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') | regex_replace('-', '_') }}"
-  tags: [ 'blktests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "./oscheck.sh --print-start --print-done --test-group {{ group }} {{ oscheck_extra_args }} {{ all_limit_tests }}"
-  ignore_errors: yes
-  no_log: True
+  tags: ["blktests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "./oscheck.sh --print-start --print-done --test-group {{ group }} {{ oscheck_extra_args }} {{ all_limit_tests }}"
+  failed_when: false # Tests may fail, continue with result collection
+  no_log: true
   args:
     chdir: "{{ blktests_data_target }}"
   environment:
@@ -370,41 +377,47 @@
     - kdevops_run_blktests|bool
 
 - name: Remove watchdog hint that tests have started
-  local_action: file path="{{ blktests_workflow_target }}/.begin" state=absent
-  tags: [ 'blktests', 'run_tests' ]
+  ansible.builtin.file:
+    path: "{{ blktests_workflow_target }}/.begin"
+    state: absent
+  delegate_to: localhost
+  tags: ["blktests", "run_tests"]
   when:
     - kdevops_run_blktests|bool
   run_once: true
 
 - name: Clean up our localhost results/last-run directory
-  local_action: file path="{{ blktests_results_target }}/{{ item }}" state=absent
+  ansible.builtin.file:
+    path: "{{ blktests_results_target }}/{{ item }}"
+    state: absent
+  delegate_to: localhost
   with_items:
     - "last-run"
   loop_control:
     label: "{{ item }}"
   run_once: true
-  tags: [ 'blktests', 'copy_results', 'clean_local_results' ]
+  tags: ["blktests", "copy_results", "clean_local_results"]
 
 - name: Look for results for the last run
-  tags: [ 'blktests', 'copy_results' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  find:
+  tags: ["blktests", "copy_results"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.find:
     paths: "{{ blktests_data_target }}/results/"
-    recurse: yes
+    recurse: true
     patterns: "*"
   register: last_run_results
 
 - name: Copy all test results
-  tags: [ 'blktests', 'copy_results' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  fetch:
+  tags: ["blktests", "copy_results"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.fetch:
     src: "{{ item.path }}"
     dest: "{{ blktests_results_target }}/last-run/{{ item.path | regex_replace(blktests_data_target + 'results/' | regex_escape()) | regex_replace('^/', '') }}"
-    flat: yes
+    flat: true
   with_items: "{{ last_run_results.files }}"
   loop_control:
     label: "{{ item.path | regex_replace(blktests_data_target + 'results/' | regex_escape()) | regex_replace('^/', '') }}"
@@ -412,53 +425,57 @@
     - last_run_results.matched > 0
 
 - name: Augment expunge list just run git diff after this to see new failures found
-  local_action: "shell ./python/workflows/blktests/augment_expunge_list.py {{ blktests_results_target }}/last-run/ {{ blktests_expunges_target }}"
-  tags: [ 'blktests', 'copy_results', 'augment_expunge_list' ]
+  ansible.builtin.command: ./python/workflows/blktests/augment_expunge_list.py {{ blktests_results_target }}/last-run/ {{ blktests_expunges_target }}
+  delegate_to: localhost
+  tags: ["blktests", "copy_results", "augment_expunge_list"]
   run_once: true
 
 - name: Copy last-run files to results directory for target kernel and in place only bad and dmesg files
-  local_action: "shell ./python/workflows/blktests/gen-results-dir.py"
-  tags: [ 'blktests', 'copy_results', 'print_results', 'augment_expunge_list' ]
+  ansible.builtin.command: ./python/workflows/blktests/gen-results-dir.py
+  delegate_to: localhost
+  tags: ["blktests", "copy_results", "print_results", "augment_expunge_list"]
   run_once: true
   when:
     - not blktests_results_all
 
 - name: Copy all last-run files to results directory for full results
-  local_action: "shell ./python/workflows/blktests/gen-results-dir.py --copy-all"
-  tags: [ 'blktests', 'copy_results', 'print_results', 'augment_expunge_list' ]
+  ansible.builtin.command: ./python/workflows/blktests/gen-results-dir.py --copy-all
+  delegate_to: localhost
+  tags: ["blktests", "copy_results", "print_results", "augment_expunge_list"]
   run_once: true
   when:
     - blktests_results_all | bool
 
 - name: Print blktests new expunge files for which are not yet committed
-  local_action: "shell ./python/workflows/blktests/get_new_expunge_files.py {{ blktests_expunges_target }}"
+  ansible.builtin.command: ./python/workflows/blktests/get_new_expunge_files.py {{ blktests_expunges_target }}
+  delegate_to: localhost
   register: new_expunges
-  tags: [ 'blktests', 'copy_results', 'print_results', 'augment_expunge_list' ]
+  tags: ["blktests", "copy_results", "print_results", "augment_expunge_list"]
   run_once: true
 
 - name: Inform user if new expunge files have been found
   run_once: true
-  tags: [ 'blktests', 'copy_results', 'augment_expunge_list' ]
-  debug:
+  tags: ["blktests", "copy_results", "augment_expunge_list"]
+  ansible.builtin.debug:
     msg: "New expunge files found: {{ new_expunges.stdout_lines }}"
   when:
     - new_expunges.stdout != 0
 
 - name: Check if results directory is empty
-  find:
+  ansible.builtin.find:
     paths: "{{ blktests_results_full_path }}/{{ last_kernel }}"
     file_type: any
   register: result_dir_check
   delegate_to: localhost
   run_once: true
-  tags: [ 'blktests', 'copy_results', 'augment_expunge_list' ]
+  tags: ["blktests", "copy_results", "augment_expunge_list"]
 
 - name: Inform user if results directory is empty
-  debug:
+  ansible.builtin.debug:
     msg: "Skipping compression: {{ blktests_results_full_path }}/{{ last_kernel }} is empty."
   when: result_dir_check.matched == 0
   run_once: true
-  tags: [ 'blktests', 'copy_results', 'augment_expunge_list' ]
+  tags: ["blktests", "copy_results", "augment_expunge_list"]
   delegate_to: localhost
 
 # You are encouraged to commit the compressed results of failed tests
@@ -470,5 +487,5 @@
     format: xz
   when: result_dir_check.matched != 0
   run_once: true
-  tags: [ 'blktests', 'copy_results', 'augment_expunge_list' ]
+  tags: ["blktests", "copy_results", "augment_expunge_list"]
   delegate_to: localhost
diff --git a/playbooks/roles/bootlinux/defaults/main.yml b/playbooks/roles/bootlinux/defaults/main.yml
index bbb85f0..84b61b8 100644
--- a/playbooks/roles/bootlinux/defaults/main.yml
+++ b/playbooks/roles/bootlinux/defaults/main.yml
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier copyleft-next-0.3.1
 ---
-kdevops_bootlinux: False
-infer_uid_and_group: False
+kdevops_bootlinux: false
+infer_uid_and_group: false
 
 data_path: "/data"
 data_user: "root"
@@ -19,7 +19,7 @@ target_linux_git: "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.
 target_linux_shallow_depth: 0
 target_linux_tree: "linux-stable"
 target_linux_dir_path: "{{ data_path }}/{{ target_linux_tree }}"
-kdevops_baseline_and_dev: False
+kdevops_baseline_and_dev: false
 
 target_linux_ref: "v4.19.133"
 target_linux_delta_file:
@@ -33,36 +33,36 @@ make: "make"
 target_linux_make_cmd: "{{ make }} -j{{ ansible_processor_vcpus }}"
 target_linux_make_install_cmd: "{{ target_linux_make_cmd }} modules_install install"
 
-uninstall_kernel_enable: False
+uninstall_kernel_enable: false
 
 # If defined we'll apply this delta for you.
 # target_linux_extra_patch: foo.patch
 
-bootlinux_b4_am_this_host: False
+bootlinux_b4_am_this_host: false
 
-bootlinux_9p: False
+bootlinux_9p: false
 bootlinux_targets: false
 bootlinux_builder: false
 
-kdevops_workflow_enable_cxl: False
+kdevops_workflow_enable_cxl: false
 
-bootlinux_cxl_test: False
-bootlinux_tree_set_by_cli: False
+bootlinux_cxl_test: false
+bootlinux_tree_set_by_cli: false
 
 bootlinux_artifacts_dir: "{{ topdir_path }}/workflows/linux/artifacts"
 kernel_packages: []
 workflow_linux_packaged: false
 
 # A/B testing defaults
-bootlinux_ab_same_ref: True
-bootlinux_ab_different_ref: False
+bootlinux_ab_same_ref: true
+bootlinux_ab_different_ref: false
 
 # Development kernel settings (used when bootlinux_ab_different_ref is True)
 bootlinux_dev_tree: ""
 target_linux_dev_ref: "master"
 target_linux_dev_kernelrelease: ""
 target_linux_dev_localversion: ""
-bootlinux_tree_custom_kernelrelease: False
+bootlinux_tree_custom_kernelrelease: false
 bootlinux_tree_custom_localversion: false
-bootlinux_is_dev_node: False
+bootlinux_is_dev_node: false
 bootlinux_debug_ref: "{{ lookup('env', 'DEBUG_REF') | default(false, true) | bool }}"
diff --git a/playbooks/roles/bootlinux/tasks/build/9p.yml b/playbooks/roles/bootlinux/tasks/build/9p.yml
index 1951e50..f13ae8a 100644
--- a/playbooks/roles/bootlinux/tasks/build/9p.yml
+++ b/playbooks/roles/bootlinux/tasks/build/9p.yml
@@ -6,9 +6,9 @@
     file: install-deps/main.yml
 
 - name: Install b4 on host
-  become: yes
-  become_method: sudo
-  pip:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.pip:
     name:
       - b4
   when:
@@ -19,15 +19,15 @@
   delegate_to: localhost
 
 - name: Add safe exception for a clone
-  command: "git config --global --add safe.directory {{ target_linux_git }}"
-  tags: [ 'clone']
+  ansible.builtin.command: "git config --global --add safe.directory {{ target_linux_git }}"
+  tags: ["clone"]
   when:
     - target_linux_git is string and target_linux_git.startswith('/')
   run_once: true
   delegate_to: localhost
 
 - name: Check if target directory exists when using 9p and Linux CLI was set
-  stat:
+  ansible.builtin.stat:
     path: "{{ bootlinux_9p_host_path }}"
   register: target_directory_stat
   run_once: true
@@ -36,7 +36,7 @@
     - bootlinux_tree_set_by_cli|bool
 
 - name: Fail if target directory does not exist when using 9p and Linux CLI was set
-  fail:
+  ansible.builtin.fail:
     msg: "The target directory {{ bootlinux_9p_host_path }} does not exist."
   run_once: true
   delegate_to: localhost
@@ -44,35 +44,35 @@
     - bootlinux_tree_set_by_cli|bool
     - not target_directory_stat.stat.exists
 
-- name: git clone {{ target_linux_tree }} on the control node
-  git:
+- name: Git clone {{ target_linux_tree }} on the control node
+  ansible.builtin.git:
     repo: "{{ target_linux_git }}"
     dest: "{{ bootlinux_9p_host_path }}"
-    update: yes
+    update: true
     depth: "{{ target_linux_shallow_depth }}"
     version: "{{ active_linux_ref | default(target_linux_ref) }}"
   retries: 3
   delay: 5
   register: result
   until: not result.failed
-  tags: [ 'clone']
+  tags: ["clone"]
   when:
     - not bootlinux_tree_set_by_cli|bool
   run_once: true
   delegate_to: localhost
 
 - name: Copy kernel delta if requested on the control node
-  template:
+  ansible.builtin.template:
     src: "{{ target_linux_extra_patch }}"
     dest: "{{ bootlinux_9p_host_path }}/{{ target_linux_extra_patch }}"
-    mode: 0644
+    mode: "0644"
   when:
     - target_linux_extra_patch is defined
   run_once: true
   delegate_to: localhost
 
 - name: Apply kernel delta if requested on the control node
-  command: "git am {{ target_linux_extra_patch }}"
+  ansible.builtin.command: "git am {{ target_linux_extra_patch }}"
   args:
     chdir: "{{ bootlinux_9p_host_path }}"
   when:
@@ -81,13 +81,14 @@
   delegate_to: localhost
 
 - name: Variable values
-  debug:
+  ansible.builtin.debug:
     msg: "{{ target_linux_apply_patch_message_id }}"
   when:
     - target_linux_apply_patch_message_id is defined
 
 - name: Apply message patch set if requested on the control node
-  shell: b4 am -o - {{target_linux_apply_patch_message_id}} | git am
+  ansible.builtin.shell: b4 am -o - {{target_linux_apply_patch_message_id}} | git am
+  changed_when: false
   args:
     chdir: "{{ bootlinux_9p_host_path }}"
   when:
@@ -98,22 +99,23 @@
   delegate_to: localhost
 
 - name: Copy configuration for Linux {{ target_linux_tree }} on the control node
-  template:
+  ansible.builtin.template:
     src: "{{ linux_config }}"
     dest: "{{ bootlinux_9p_host_path }}/.config"
-    mode: 0644
+    mode: "0644"
   run_once: true
   delegate_to: localhost
 
 - name: Set kernel localversion if requested on the control node
-  shell: "echo {{ active_linux_localversion | default(target_linux_localversion) }} > {{ bootlinux_9p_host_path }}/localversion"
+  ansible.builtin.shell: "echo {{ active_linux_localversion | default(target_linux_localversion) }} > {{ bootlinux_9p_host_path }}/localversion"
+  changed_when: false
   when:
     - (active_linux_localversion is defined and active_linux_localversion != "") or (target_linux_localversion is defined and target_linux_localversion != "")
   run_once: true
   delegate_to: localhost
 
 - name: Configure Linux {{ target_linux_tree }} on the control node
-  shell: |
+  ansible.builtin.shell: |
     set -o pipefail
     yes "" | make oldconfig
   register: configure_done
@@ -126,79 +128,78 @@
   delegate_to: localhost
 
 - name: Get nproc on the control node
-  command: "{{ num_jobs }}"
-  tags: [ 'build-linux', 'cxl-build' ]
+  ansible.builtin.command: "{{ num_jobs }}"
+  tags: ["build-linux", "cxl-build"]
   register: nproc_9p
   run_once: true
   delegate_to: localhost
 
 - name: Get kernelversion
-  make:
+  community.general.make:
     chdir: "{{ bootlinux_9p_host_path }}"
     target: kernelversion
   register: target_linux_kernelversion
-  tags: [ 'build-linux' ]
+  tags: ["build-linux"]
   when:
     - (active_linux_kernelrelease | default(target_linux_kernelrelease)) | length > 0
   run_once: true
   delegate_to: localhost
 
 - name: Generate user kernelrelease {{ target_linux_kernelversion.stdout }}-{{ active_linux_kernelrelease | default(target_linux_kernelrelease) }}
-  set_fact:
+  ansible.builtin.set_fact:
     target_user_kernelrelease: "{{ target_linux_kernelversion.stdout }}-{{ active_linux_kernelrelease | default(target_linux_kernelrelease) }}"
-  tags: [ 'build-linux' ]
+  tags: ["build-linux"]
   when:
     - (active_linux_kernelrelease | default(target_linux_kernelrelease)) | length > 0
   run_once: true
   delegate_to: localhost
 
 - name: Build {{ target_linux_tree }} {{ target_user_kernelrelease }} on the control node using {{ nproc_9p.stdout }} threads
-  make:
+  community.general.make:
     jobs: "{{ nproc_9p.stdout }}"
     chdir: "{{ bootlinux_9p_host_path }}"
-    params:
-      KERNELRELEASE={{ target_user_kernelrelease }}
-  tags: [ 'build-linux' ]
+    params: KERNELRELEASE={{ target_user_kernelrelease }}
+  tags: ["build-linux"]
   when:
     - (active_linux_kernelrelease | default(target_linux_kernelrelease)) | length > 0
   run_once: true
   delegate_to: localhost
 
 - name: Build {{ target_linux_tree }} on the control node using {{ nproc_9p.stdout }} threads
-  make:
+  community.general.make:
     jobs: "{{ nproc_9p.stdout }}"
     chdir: "{{ bootlinux_9p_host_path }}"
-  tags: [ 'build-linux' ]
+  tags: ["build-linux"]
   when:
     - (active_linux_kernelrelease | default(target_linux_kernelrelease)) | length == 0
   run_once: true
   delegate_to: localhost
 
 - name: Build {{ target_linux_tree }} cxl_test on the control node using {{ nproc_9p.stdout }} threads
-  make:
+  community.general.make:
     jobs: "{{ nproc_9p.stdout }}"
     chdir: "{{ bootlinux_9p_host_path }}"
     params:
       M: "tools/testing/cxl"
-  tags: [ 'build-linux', 'cxl-build' ]
+  tags: ["build-linux", "cxl-build"]
   when:
     - bootlinux_cxl_test|bool
   run_once: true
   delegate_to: localhost
 
 - name: See if snake-oil cert file is present on host
-  stat:
+  ansible.builtin.stat:
     path: "{{ bootlinux_9p_host_path }}/certs/signing_key.pem"
   register: snaik_oil_file_9p
-  tags: [ 'build-linux' ]
+  tags: ["build-linux"]
   run_once: true
   delegate_to: localhost
 
 - name: Ensure we allow world to read the snake oil in case of NFS or 9p read only usage
-  file:
+  ansible.builtin.file:
     path: "{{ bootlinux_9p_host_path }}/certs/signing_key.pem"
     mode: "0755"
-  tags: [ 'build-linux' ]
+  tags: ["build-linux"]
   when:
     - snaik_oil_file_9p.stat.exists
   run_once: true
diff --git a/playbooks/roles/bootlinux/tasks/build/builder.yml b/playbooks/roles/bootlinux/tasks/build/builder.yml
index c4c4b95..9ab73bf 100644
--- a/playbooks/roles/bootlinux/tasks/build/builder.yml
+++ b/playbooks/roles/bootlinux/tasks/build/builder.yml
@@ -214,7 +214,7 @@
         jobs: "{{ ansible_processor_nproc }}"
         target: "binrpm-pkg"
         params:
-          RPMOPTS: '--without devel'
+          RPMOPTS: "--without devel"
       when:
         - bootlinux_compiler_gcc|bool
 
@@ -224,7 +224,7 @@
         jobs: "{{ ansible_processor_nproc }}"
         target: "binrpm-pkg"
         params:
-          RPMOPTS: '--without devel'
+          RPMOPTS: "--without devel"
           LLVM: 1
       when:
         - bootlinux_compiler_clang|bool
diff --git a/playbooks/roles/bootlinux/tasks/build/targets.yml b/playbooks/roles/bootlinux/tasks/build/targets.yml
index 3633987..d8222c3 100644
--- a/playbooks/roles/bootlinux/tasks/build/targets.yml
+++ b/playbooks/roles/bootlinux/tasks/build/targets.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install b4
-  become: yes
-  become_method: sudo
-  pip:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.pip:
     name:
       - b4
   when:
@@ -10,38 +10,38 @@
     - target_linux_install_b4
     - ansible_facts['os_family']|lower != 'debian'
 
-- name: git clone {{ target_linux_tree }} on the target nodes
-  git:
+- name: Git clone {{ target_linux_tree }} on the target nodes
+  ansible.builtin.git:
     repo: "{{ target_linux_git }}"
     dest: "{{ target_linux_dir_path }}"
-    update: yes
+    update: true
     depth: "{{ target_linux_shallow_depth }}"
     version: "{{ target_linux_ref }}"
   retries: 3
   delay: 5
   register: result
   until: not result.failed
-  tags: [ 'clone']
+  tags: ["clone"]
 
 - name: Copy kernel delta if requested on the target nodes
-  template:
+  ansible.builtin.template:
     src: "{{ target_linux_extra_patch }}"
     dest: "{{ target_linux_dir_path }}/{{ target_linux_extra_patch }}"
     owner: "{{ data_user }}"
     group: "{{ data_group }}"
-    mode: 0644
+    mode: "0644"
   when:
     - target_linux_extra_patch is defined
 
 - name: Apply kernel delta if requested on the target nodes
-  command: "git am {{ target_linux_extra_patch }}"
+  ansible.builtin.command: "git am {{ target_linux_extra_patch }}"
   args:
     chdir: "{{ target_linux_dir_path }}"
   when:
     - target_linux_extra_patch is defined
 
 - name: Set git user name and email if needed
-  shell: |
+  ansible.builtin.shell: |
     if ! $(git config --get user.email) ; then
       git config --global user.email user@example.com
     fi
@@ -54,13 +54,14 @@
     - bootlinux_b4_am_this_host|bool
 
 - name: Variable values
-  debug:
+  ansible.builtin.debug:
     msg: "{{ target_linux_apply_patch_message_id }}"
   when:
     - target_linux_apply_patch_message_id is defined
 
 - name: Apply message patch set if requested on the target nodes
-  shell: b4 am -o - {{target_linux_apply_patch_message_id}} | git am
+  ansible.builtin.shell: b4 am -o - {{target_linux_apply_patch_message_id}} | git am
+  changed_when: false
   args:
     chdir: "{{ target_linux_dir_path }}"
   when:
@@ -69,20 +70,21 @@
     - bootlinux_b4_am_this_host|bool
 
 - name: Copy configuration for Linux {{ target_linux_tree }} to the target nodes
-  template:
+  ansible.builtin.template:
     src: "{{ linux_config }}"
     dest: "{{ target_linux_dir_path }}/.config"
     owner: "{{ data_user }}"
     group: "{{ data_group }}"
-    mode: 0644
+    mode: "0644"
 
 - name: Set kernel localversion if requested on the target nodes
-  shell: "echo {{ target_linux_localversion }} > {{ target_linux_dir_path }}/localversion"
+  ansible.builtin.shell: "echo {{ target_linux_localversion }} > {{ target_linux_dir_path }}/localversion"
+  changed_when: false
   when:
     - target_linux_localversion is defined and target_linux_localversion != ""
 
 - name: Configure Linux {{ target_linux_tree }} on the target nodes
-  shell: |
+  ansible.builtin.shell: |
     set -o pipefail
     yes "" | make oldconfig
   register: configure_done
@@ -93,33 +95,33 @@
     executable: /bin/bash
 
 - name: Build {{ target_linux_tree }} on the target nodes
-  command: "{{ target_linux_make_cmd }}"
+  ansible.builtin.command: "{{ target_linux_make_cmd }}"
   register: build
   changed_when: "build.rc == 0"
   args:
     chdir: "{{ target_linux_dir_path }}"
-  tags: [ 'build-linux' ]
+  tags: ["build-linux"]
 
 - name: Build {{ target_linux_tree }} cxl_test on the target nodes
-  command: "{{ target_linux_make_cmd }} M=tools/testing/cxl"
+  ansible.builtin.command: "{{ target_linux_make_cmd }} M=tools/testing/cxl"
   register: build_cxl_test
   changed_when: "build_cxl_test.rc == 0"
   args:
     chdir: "{{ target_linux_dir_path }}"
-  tags: [ 'build-linux', 'cxl-build' ]
+  tags: ["build-linux", "cxl-build"]
   when:
     - bootlinux_cxl_test|bool
 
 - name: See if snake-oil cert file is present on client
-  stat:
+  ansible.builtin.stat:
     path: "{{ target_linux_dir_path }}/certs/signing_key.pem"
   register: snaik_oil_file
-  tags: [ 'build-linux' ]
+  tags: ["build-linux"]
 
 - name: Ensure we allow world to read the snake oil in case of NFS or 9p read only usage
-  file:
+  ansible.builtin.file:
     path: "{{ target_linux_dir_path }}/certs/signing_key.pem"
     mode: "0755"
-  tags: [ 'build-linux' ]
+  tags: ["build-linux"]
   when:
     - snaik_oil_file.stat.exists
diff --git a/playbooks/roles/bootlinux/tasks/install-deps/debian/main.yml b/playbooks/roles/bootlinux/tasks/install-deps/debian/main.yml
index dd1e53d..91e3992 100644
--- a/playbooks/roles/bootlinux/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/bootlinux/tasks/install-deps/debian/main.yml
@@ -2,16 +2,16 @@
 # Install dependencies for building linux on Debian
 
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
 
 # apt-get build-dep does not capture all requirements
 - name: Install Linux kernel build dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - bison
       - flex
diff --git a/playbooks/roles/bootlinux/tasks/install-deps/redhat/main.yml b/playbooks/roles/bootlinux/tasks/install-deps/redhat/main.yml
index dc4a543..e7e7931 100644
--- a/playbooks/roles/bootlinux/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/bootlinux/tasks/install-deps/redhat/main.yml
@@ -6,10 +6,10 @@
     - ansible_distribution != "Fedora"
 
 - name: Install packages we care about
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
@@ -54,10 +54,10 @@
       - zstd
 
 - name: Install btrfs-progs
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
@@ -103,8 +103,8 @@
     - bootlinux_builder|bool
 
 - name: Remove packages that mess with initramfs
-  become: yes
-  become_method: sudo
-  yum:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     state: absent
     name: dracut-config-generic
diff --git a/playbooks/roles/bootlinux/tasks/install-deps/suse/main.yml b/playbooks/roles/bootlinux/tasks/install-deps/suse/main.yml
index 204a181..9f2fefb 100644
--- a/playbooks/roles/bootlinux/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/bootlinux/tasks/install-deps/suse/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install Linux kernel build dependencies for SUSE sources
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - bison
       - flex
@@ -28,4 +28,4 @@
       - portmap
       - hwinfo
       - open-iscsi
-    disable_recommends: no
+    disable_recommends: false
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml
index 21d3333..bb49ae8 100644
--- a/playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml
@@ -3,15 +3,15 @@
 # This is used when bootlinux_9p is enabled and the build happens on the host
 
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
 
 - name: Install minimal build tools for kernel installation
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - make
       - gcc
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml
index e077f5e..4f74d72 100644
--- a/playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml
@@ -3,9 +3,9 @@
 # This is used when bootlinux_9p is enabled and the build happens on the host
 
 - name: Install minimal build tools for kernel installation
-  become: yes
-  become_method: sudo
-  yum:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - make
       - gcc
@@ -15,9 +15,9 @@
     - ansible_facts['distribution_major_version']|int < 8
 
 - name: Install minimal build tools for kernel installation (dnf)
-  become: yes
-  become_method: sudo
-  dnf:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - make
       - gcc
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml
index ce73ddd..4554bfe 100644
--- a/playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml
@@ -3,9 +3,9 @@
 # This is used when bootlinux_9p is enabled and the build happens on the host
 
 - name: Install minimal build tools for kernel installation
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - make
       - gcc
diff --git a/playbooks/roles/bootlinux/tasks/install/packages.yml b/playbooks/roles/bootlinux/tasks/install/packages.yml
index 3436529..3395e2c 100644
--- a/playbooks/roles/bootlinux/tasks/install/packages.yml
+++ b/playbooks/roles/bootlinux/tasks/install/packages.yml
@@ -23,7 +23,7 @@
 
     - name: Add the core kernel package
       ansible.builtin.set_fact:
-        kernel_packages: "{{ kernel_packages + ['/tmp/' + item.path | basename ] }}"
+        kernel_packages: "{{ kernel_packages + ['/tmp/' + item.path | basename] }}"
       when:
         - "'devel' not in item.path"
         - "'headers' not in item.path"
diff --git a/playbooks/roles/bootlinux/tasks/main.yml b/playbooks/roles/bootlinux/tasks/main.yml
index 769bd10..de600bb 100644
--- a/playbooks/roles/bootlinux/tasks/main.yml
+++ b/playbooks/roles/bootlinux/tasks/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  failed_when: false
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
@@ -34,9 +34,9 @@
 
 # We do this regardless of what distro you use
 - name: Install b4
-  become: yes
-  become_method: sudo
-  pip:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.pip:
     name:
       - b4
   when:
@@ -46,28 +46,28 @@
     - not workflow_linux_packaged|bool
 
 - name: Set bootlinux_b4_am_this_host as a fact for dev hosts only
-  set_fact:
+  ansible.builtin.set_fact:
     bootlinux_b4_am_this_host: "{{ ansible_hostname | regex_search('^.*-dev$') is not none }}"
   when:
     - kdevops_baseline_and_dev|bool
     - not workflow_linux_packaged|bool
 
 - name: Enable b4 am all hosts if not deploying dev and baseline nodes
-  set_fact:
-    bootlinux_b4_am_this_host: True
+  ansible.builtin.set_fact:
+    bootlinux_b4_am_this_host: true
   when:
     - not kdevops_baseline_and_dev|bool
     - not workflow_linux_packaged|bool
 
 - name: Determine if this is a dev node for A/B testing
-  set_fact:
+  ansible.builtin.set_fact:
     bootlinux_is_dev_node: "{{ ansible_hostname | regex_search('^.*-dev$') is not none }}"
   when:
     - kdevops_baseline_and_dev|bool
     - bootlinux_ab_different_ref|bool
 
 - name: Set development group full custom kernel release
-  set_fact:
+  ansible.builtin.set_fact:
     target_linux_kernelrelease: "{{ target_linux_dev_kernelrelease if target_linux_dev_kernelrelease != '' else target_linux_kernelrelease }}"
   when:
     - kdevops_baseline_and_dev|bool
@@ -76,7 +76,7 @@
     - bootlinux_is_dev_node|bool
 
 - name: Set development group local append version
-  set_fact:
+  ansible.builtin.set_fact:
     target_linux_localversion: "{{ target_linux_dev_localversion if target_linux_dev_localversion != '' else target_linux_localversion }}"
   when:
     - kdevops_baseline_and_dev|bool
@@ -85,7 +85,7 @@
     - bootlinux_is_dev_node|bool
 
 - name: Set development kernel parameters for dev nodes
-  set_fact:
+  ansible.builtin.set_fact:
     target_linux_git: "{{ bootlinux_dev_tree if bootlinux_dev_tree != '' else target_linux_git }}"
     target_linux_ref: "{{ target_linux_dev_ref }}"
     target_linux_config: "config-{{ target_linux_dev_ref }}"
@@ -100,7 +100,7 @@
 # Since 9P builds run on localhost with run_once, we can't rely on per-node variables,
 # so we check the ansible_limit to determine which group is being targeted.
 - name: Determine if we're targeting dev nodes for A/B testing
-  set_fact:
+  ansible.builtin.set_fact:
     targeting_dev_nodes: "{{ groups['dev'] is defined and groups['dev'] | length > 0 and (ansible_limit is not defined or 'dev' in ansible_limit) }}"
   run_once: true
   delegate_to: localhost
@@ -109,11 +109,13 @@
     - bootlinux_ab_different_ref|bool
 
 - name: Determine active kernel parameters for A/B testing with 9P
-  set_fact:
+  ansible.builtin.set_fact:
     target_linux_git: "{{ bootlinux_dev_tree if bootlinux_dev_tree != '' else target_linux_git }}"
-    active_linux_ref: "{{ target_linux_dev_ref if targeting_dev_nodes|default(false)|bool else target_linux_ref }}"
-    active_linux_kernelrelease: "{{ target_linux_dev_kernelrelease if (targeting_dev_nodes|default(false)|bool and bootlinux_tree_custom_kernelrelease|bool) else target_linux_kernelrelease }}"
-    active_linux_localversion: "{{ target_linux_dev_localversion if (targeting_dev_nodes|default(false)|bool and bootlinux_tree_custom_localversion|bool) else target_linux_localversion }}"
+    active_linux_ref: "{{ target_linux_dev_ref if targeting_dev_nodes | default(false) | bool else target_linux_ref }}"
+    active_linux_kernelrelease: "{{ target_linux_dev_kernelrelease if (targeting_dev_nodes | default(false) | bool and bootlinux_tree_custom_kernelrelease | bool)
+      else target_linux_kernelrelease }}"
+    active_linux_localversion: "{{ target_linux_dev_localversion if (targeting_dev_nodes | default(false) | bool and bootlinux_tree_custom_localversion | bool) else
+      target_linux_localversion }}"
     target_linux_config: "config-{{ target_linux_dev_ref }}"
   when:
     - kdevops_baseline_and_dev|bool
@@ -124,9 +126,14 @@
 
 - name: Debug kernel ref settings for 9P builds
   delegate_to: localhost
+  when:
+    - bootlinux_debug_ref|bool
+    - bootlinux_9p|bool
+  run_once: true
+
   block:
     - name: Print kernel ref settings for 9P debug (localhost context)
-      debug:
+      ansible.builtin.debug:
         msg:
           - "=== 9P BUILD DEBUG (localhost context) ==="
           - "bootlinux_9p: {{ bootlinux_9p }}"
@@ -141,16 +148,15 @@
           - "groups['baseline']: {{ groups['baseline'] | default([]) }}"
 
     - name: End play gracefully for kernel ref debug
-      meta: end_play
+      ansible.builtin.meta: end_play
+- name: Debug kernel ref settings for non-9P builds
   when:
     - bootlinux_debug_ref|bool
-    - bootlinux_9p|bool
-  run_once: true
+    - not bootlinux_9p|bool
 
-- name: Debug kernel ref settings for non-9P builds
   block:
     - name: Print kernel ref settings for non-9P debug (per-node context)
-      debug:
+      ansible.builtin.debug:
         msg:
           - "=== NON-9P BUILD DEBUG ({{ inventory_hostname }}) ==="
           - "bootlinux_9p: {{ bootlinux_9p }}"
@@ -166,11 +172,7 @@
           - "target_linux_dev_localversion: {{ target_linux_dev_localversion }}"
 
     - name: End play gracefully for kernel ref debug
-      meta: end_play
-  when:
-    - bootlinux_debug_ref|bool
-    - not bootlinux_9p|bool
-
+      ansible.builtin.meta: end_play
 - name: Create data partition
   ansible.builtin.include_role:
     name: create_data_partition
@@ -178,16 +180,16 @@
     - not workflow_linux_packaged|bool
 
 - name: Mount bootlinux 9p on each target node
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  mount:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.posix.mount:
     name: "{{ target_linux_dir_path }}"
     src: "{{ bootlinux_9p_mount_tag }}"
     fstype: "9p"
     opts: "ro,trans=virtio,version=9p2000.L,posixacl,cache=none"
     state: "mounted"
-  tags: [ 'data_partition', '9p_mount' ]
+  tags: ["data_partition", "9p_mount"]
   when:
     - bootlinux_9p|bool
 
@@ -210,29 +212,30 @@
     - bootlinux_builder|bool
 
 - name: Run uname before
-  command: "uname -r"
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd_before
-  tags: [ 'uninstall-linux' ]
+  tags: ["uninstall-linux"]
 
 - name: Check kernel uname for uninstall
-  debug:
+  ansible.builtin.debug:
     msg: "Target kernel {{ target_linux_ref }} Running kernel {{ running_kernel }}"
   vars:
     running_kernel: "{{ uname_cmd_before.stdout_lines.0 }}"
-  tags: [ 'uninstall-linux' ]
+  tags: ["uninstall-linux"]
 
 - name: Set kernel version if user did not provide one with KVER command line argument
-  set_fact:
+  ansible.builtin.set_fact:
     uninstall_kernel_ver: "{{ uname_cmd_before.stdout_lines.0 }}"
-  tags: [ 'uninstall-linux' ]
+  tags: ["uninstall-linux"]
   when:
     - uninstall_kernel_enable|bool
     - uninstall_kernel_ver is not defined
 
 - name: Check if files for old kernel exist
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.find:
     paths:
       - "/boot/"
@@ -253,19 +256,19 @@
       - "{{ uninstall_kernel_ver }}"
       - "{{ uninstall_kernel_ver }}+"
   register: found_uninstall_kfiles
-  tags: [ 'uninstall-linux' ]
+  tags: ["uninstall-linux"]
   when:
     - uninstall_kernel_enable|bool
     - uninstall_kernel_ver is defined
 
 - name: Remove an old version of Linux manually specified
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     state: absent
     path: "{{ item.path }}"
-  tags: [ 'uninstall-linux' ]
+  tags: ["uninstall-linux"]
   with_items:
     - "{{ found_uninstall_kfiles.files }}"
   loop_control:
@@ -279,28 +282,27 @@
 # option. This let's us work with hardware serial consoles
 # say on IPMIs and virtual guests ('virsh console').
 - name: Ensure we can get the GRUB prompt on reboot
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
-    regexp: '^GRUB_TERMINAL='
+    regexp: "^GRUB_TERMINAL="
     line: GRUB_TERMINAL="console serial"
 
 - name: Update your boot GRUB file if necessary
-  tags: [ 'uninstall-linux', 'manual-update-grub' ]
-  import_tasks: update-grub/main.yml
-
+  tags: ["uninstall-linux", "manual-update-grub"]
+  ansible.builtin.import_tasks: update-grub/main.yml
 - name: Ensure we have DEFAULTDEBUG set
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: grub_default_saved_cmd
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/sysconfig/kernel
-    regexp: '^DEFAULTDEBUG='
-    line: DEFAULTDEBUG=yes
-  tags: [ 'saved' ]
+    regexp: "^DEFAULTDEBUG="
+    line: DEFAULTDEBUG=true
+  tags: ["saved"]
   when: ansible_facts['os_family']|lower == 'redhat'
 
 - name: Install packages on each target node
@@ -310,52 +312,50 @@
     - workflow_linux_packaged|bool
 
 - name: Install {{ target_linux_tree }} on the target nodes
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{ target_linux_make_install_cmd }}"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{ target_linux_make_install_cmd }}"
   register: install_done
   changed_when: "install_done.rc == 0"
   args:
     chdir: "{{ target_linux_dir_path }}"
-  tags: [ 'install-linux' ]
+  tags: ["install-linux"]
   when:
     - not workflow_linux_packaged|bool
 
 - name: Install {{ target_linux_tree }} cxl_test on the target nodes
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{ target_linux_make_install_cmd }} M=tools/testing/cxl INSTALL_MOD_DIR=updates"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{ target_linux_make_install_cmd }} M=tools/testing/cxl INSTALL_MOD_DIR=updates"
   register: install_done
   changed_when: "install_done.rc == 0"
   args:
     chdir: "{{ target_linux_dir_path }}"
-  tags: [ 'install-linux', 'cxl-install' ]
+  tags: ["install-linux", "cxl-install"]
   when:
     - kdevops_workflow_enable_cxl|bool
     - not workflow_linux_packaged|bool
 
 - name: Set the default kernel if necessary
-  tags: [ 'saved' ]
-  import_tasks: update-grub/install.yml
-  # when:
-  #   - ansible_facts['os_family']|lower != 'redhat'
-
+  tags: ["saved"]
+  ansible.builtin.import_tasks: update-grub/install.yml
 - name: Reboot into Linux {{ target_linux_tree }}
-  become: yes
-  become_method: sudo
-  reboot:
-  tags: [ 'reboot' ]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
+  tags: ["reboot"]
 
 - name: Run uname
-  command: "uname -r"
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
-  tags: [ 'uname' ]
+  tags: ["uname"]
 
 - name: Check kernel uname
-  debug:
+  ansible.builtin.debug:
     msg: "Target kernel {{ target_linux_ref }} Running kernel {{ running_kernel }}"
   vars:
     running_kernel: "{{ uname_cmd.stdout_lines.0 }}"
-  tags: [ 'uname' ]
+  tags: ["uname"]
diff --git a/playbooks/roles/bootlinux/tasks/update-grub/debian.yml b/playbooks/roles/bootlinux/tasks/update-grub/debian.yml
index 5464634..ca6c2f8 100644
--- a/playbooks/roles/bootlinux/tasks/update-grub/debian.yml
+++ b/playbooks/roles/bootlinux/tasks/update-grub/debian.yml
@@ -1,8 +1,9 @@
+---
 - name: Run update-grub
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "update-grub"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "update-grub"
   register: grub_update
   changed_when: "grub_update.rc == 0"
-  tags: [ 'manual-update-grub' ]
+  tags: ["manual-update-grub"]
diff --git a/playbooks/roles/bootlinux/tasks/update-grub/install.yml b/playbooks/roles/bootlinux/tasks/update-grub/install.yml
index f765bc2..e56f255 100644
--- a/playbooks/roles/bootlinux/tasks/update-grub/install.yml
+++ b/playbooks/roles/bootlinux/tasks/update-grub/install.yml
@@ -1,3 +1,4 @@
+---
 # There is slightly confusing user-experience and not complete documentation
 # about the requirements for using grub-set-default in light of the fact that
 # most Linux distributions use sub-menus. You need to use GRUB_DEFAULT=saved
@@ -68,31 +69,30 @@
 #
 #   grub-set-default 2
 - name: Ensure we have GRUB_DEFAULT=saved
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: grub_default_saved_cmd
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
-    regexp: '^GRUB_DEFAULT='
+    regexp: "^GRUB_DEFAULT="
     line: GRUB_DEFAULT=saved
-  tags: [ 'saved' ]
+  tags: ["saved"]
 
 - name: Use GRUB_DISABLE_SUBMENU=y to enable grub-set-default use with one digit
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: grub_disable_submenu_cmd
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
-    regexp: '^GRUB_DISABLE_SUBMENU='
+    regexp: "^GRUB_DISABLE_SUBMENU="
     line: GRUB_DISABLE_SUBMENU=y
-  tags: [ 'saved' ]
+  tags: ["saved"]
 
 - name: Update your boot GRUB file if necessary to ensure GRUB flat earth
-  tags: [ 'uninstall-linux', 'manual-update-grub' ]
-  import_tasks: update-grub/main.yml
-
+  tags: ["uninstall-linux", "manual-update-grub"]
+  ansible.builtin.import_tasks: update-grub/main.yml
 - name: Get the name of the kernel release to install (source tree)
   tags:
     - vars
@@ -191,7 +191,7 @@
   tags:
     - saved
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.shell:
     cmd: "{{ determine_default_kernel_id }}"
@@ -203,25 +203,23 @@
     - kernel_release_file.stat.exists
 
 - name: Obtain command to set default kernel to boot
-  set_fact:
+  ansible.builtin.set_fact:
     grub_set_default_boot_kernel: grub-set-default
-  when:
-    ansible_facts['os_family']|lower != 'redhat' or ansible_facts['distribution_major_version'] | int < 8
+  when: ansible_facts['os_family']|lower != 'redhat' or ansible_facts['distribution_major_version'] | int < 8
 
 - name: Obtain command to set default kernel to boot for RHEL >= 8
-  set_fact:
+  ansible.builtin.set_fact:
     grub_set_default_boot_kernel: grub2-set-default
-  when:
-    ansible_facts['os_family']|lower == 'redhat' and ansible_facts['distribution_major_version'] | int >= 8
+  when: ansible_facts['os_family']|lower == 'redhat' and ansible_facts['distribution_major_version'] | int >= 8
 
 - name: Set the target kernel to be booted by default moving forward if the above command worked
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{ grub_set_default_boot_kernel }} \"{{ target_boot_entry }}\""
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{ grub_set_default_boot_kernel }} \"{{ target_boot_entry }}\""
   vars:
     target_boot_entry: "{{ grub_boot_number_cmd.stdout_lines.0 if (grub_boot_number_cmd is defined and grub_boot_number_cmd.stdout_lines is defined) else '' }}"
-  tags: [ 'saved' ]
+  tags: ["saved"]
   when:
     - grub_boot_number_cmd is defined
     - grub_boot_number_cmd.rc is defined
@@ -230,16 +228,15 @@
     - grub_boot_number_cmd.stdout != ""
 
 - name: Itemize kernel and GRUB entry we just selected
-  debug:
+  ansible.builtin.debug:
     msg: "{{ target_kernel }} determined to be {{ target_boot_entry }} on the GRUB2 flat menu. Ran: grub-set-default {{ target_boot_entry }}"
   vars:
     target_kernel: "{{ target_linux_ref | replace('v', '') }}"
     target_boot_entry: "{{ grub_boot_number_cmd.stdout_lines.0 }}"
-  tags: [ 'saved' ]
+  tags: ["saved"]
   when:
     - grub_boot_number_cmd is defined
     - grub_boot_number_cmd.rc is defined
     - grub_boot_number_cmd.rc == 0
     - grub_boot_number_cmd.stdout is defined
     - grub_boot_number_cmd.stdout != ""
-
diff --git a/playbooks/roles/bootlinux/tasks/update-grub/main.yml b/playbooks/roles/bootlinux/tasks/update-grub/main.yml
index cbd863f..1bbb6cf 100644
--- a/playbooks/roles/bootlinux/tasks/update-grub/main.yml
+++ b/playbooks/roles/bootlinux/tasks/update-grub/main.yml
@@ -1,9 +1,13 @@
 ---
 # tasks to install update-grub
 - name: Distro specific update of your GRUB boot file
-  import_tasks: debian.yml
+  ansible.builtin.import_tasks: debian.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: suse.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: suse.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: redhat.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: redhat.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/bootlinux/tasks/update-grub/redhat.yml b/playbooks/roles/bootlinux/tasks/update-grub/redhat.yml
index 1ccc0b2..13c1f92 100644
--- a/playbooks/roles/bootlinux/tasks/update-grub/redhat.yml
+++ b/playbooks/roles/bootlinux/tasks/update-grub/redhat.yml
@@ -1,31 +1,30 @@
+---
 - name: Disable Grub menu auto-hide
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: grub2-editenv - unset menu_auto_hide
-
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: grub2-editenv - unset menu_auto_hide
+  changed_when: false
 - name: Determine if system was booted using UEFI
-  stat:
+  ansible.builtin.stat:
     path: /sys/firmware/efi/efivars
   register: efi_boot
 
 - name: Use /etc/grub2.cfg as the grub configuration file
-  set_fact:
-    grub_config_file: '/etc/grub2.cfg'
-  when:
-    not efi_boot.stat.exists
+  ansible.builtin.set_fact:
+    grub_config_file: "/etc/grub2.cfg"
+  when: not efi_boot.stat.exists
 
 - name: Use /etc/grub2-efi.cfg as the configuration file
-  set_fact:
-    grub_config_file: '/etc/grub2-efi.cfg'
-  when:
-    efi_boot.stat.exists
+  ansible.builtin.set_fact:
+    grub_config_file: "/etc/grub2-efi.cfg"
+  when: efi_boot.stat.exists
 
 - name: Run update-grub
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "grub2-mkconfig -o {{ grub_config_file }}"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "grub2-mkconfig -o {{ grub_config_file }}"
   register: grub_update
   changed_when: "grub_update.rc == 0"
-  tags: [ 'manual-update-grub' ]
+  tags: ["manual-update-grub"]
diff --git a/playbooks/roles/bootlinux/tasks/update-grub/suse.yml b/playbooks/roles/bootlinux/tasks/update-grub/suse.yml
index e018558..ecf801e 100644
--- a/playbooks/roles/bootlinux/tasks/update-grub/suse.yml
+++ b/playbooks/roles/bootlinux/tasks/update-grub/suse.yml
@@ -1,8 +1,9 @@
+---
 - name: Run update-grub
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "update-bootloader --refresh"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "update-bootloader --refresh"
   register: grub_update
   changed_when: "grub_update.rc == 0"
-  tags: [ 'manual-update-grub' ]
+  tags: ["manual-update-grub"]
diff --git a/playbooks/roles/btrfs_progs/defaults/main.yml b/playbooks/roles/btrfs_progs/defaults/main.yml
index d3d6507..f3d2086 100644
--- a/playbooks/roles/btrfs_progs/defaults/main.yml
+++ b/playbooks/roles/btrfs_progs/defaults/main.yml
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier copyleft-next-0.3.1
 ---
 
-btrfs_progs_build: False
+btrfs_progs_build: false
 
 btrfs_progs_data: "{{ data_path }}/btrfs-progs"
 btrfs_progs_git: "https://github.com/kdave/btrfs-progs.git"
diff --git a/playbooks/roles/btrfs_progs/tasks/install-deps/debian/main.yml b/playbooks/roles/btrfs_progs/tasks/install-deps/debian/main.yml
index 1852f05..1f2fe02 100644
--- a/playbooks/roles/btrfs_progs/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/btrfs_progs/tasks/install-deps/debian/main.yml
@@ -1,15 +1,15 @@
 ---
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
-  tags: [ 'btrfs-progs', 'update-cache' ]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
+  tags: ["btrfs-progs", "update-cache"]
 
 - name: Install btrfs-progs build dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - libext2fs-dev
       - pkg-config
@@ -18,4 +18,4 @@
       - libudev-dev
       - liblzo2-dev
     state: present
-  tags: [ 'btrfs-progs', 'build-deps' ]
+  tags: ["btrfs-progs", "build-deps"]
diff --git a/playbooks/roles/btrfs_progs/tasks/install-deps/main.yml b/playbooks/roles/btrfs_progs/tasks/install-deps/main.yml
index c4c16d2..7fd3780 100644
--- a/playbooks/roles/btrfs_progs/tasks/install-deps/main.yml
+++ b/playbooks/roles/btrfs_progs/tasks/install-deps/main.yml
@@ -1,8 +1,12 @@
 ---
-- name: oscheck distribution ospecific setup
-  import_tasks: debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/btrfs_progs/tasks/install-deps/redhat/main.yml b/playbooks/roles/btrfs_progs/tasks/install-deps/redhat/main.yml
index c828fd6..3fae48b 100644
--- a/playbooks/roles/btrfs_progs/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/btrfs_progs/tasks/install-deps/redhat/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install btrfs-progs build dependencies
-  become: yes
-  become_method: sudo
-  dnf:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - e2fsprogs-devel
       - libblkid-devel
diff --git a/playbooks/roles/btrfs_progs/tasks/install-deps/suse/main.yml b/playbooks/roles/btrfs_progs/tasks/install-deps/suse/main.yml
index ae230b8..e61fbd2 100644
--- a/playbooks/roles/btrfs_progs/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/btrfs_progs/tasks/install-deps/suse/main.yml
@@ -1,13 +1,13 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
 
 - name: Install btrfs-progs build dependencies
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - e2fsprogs-devel
diff --git a/playbooks/roles/btrfs_progs/tasks/main.yml b/playbooks/roles/btrfs_progs/tasks/main.yml
index f8a9241..e740cf1 100644
--- a/playbooks/roles/btrfs_progs/tasks/main.yml
+++ b/playbooks/roles/btrfs_progs/tasks/main.yml
@@ -1,52 +1,53 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  failed_when: false
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
-- include_role:
+- name: Include role
+  ansible.builtin.include_role:
     name: create_data_partition
-  tags: [ 'data_partition' ]
+  tags: ["data_partition"]
 
 - name: Install build-deps for btrfs_progs as per each Linux distribution
-  include_tasks: install-deps/main.yml
+  ansible.builtin.include_tasks: install-deps/main.yml
   when:
     - btrfs_progs_build|bool
 
 - name: Assume we won't build btrfs_progs first
-  set_fact:
-    build_btrfs_progs_now: False
+  ansible.builtin.set_fact:
+    build_btrfs_progs_now: false
   tags: vars
 
 - name: Annotate when we are building btrfs_progs
-  set_fact:
-    build_btrfs_progs_now: True
+  ansible.builtin.set_fact:
+    build_btrfs_progs_now: true
   when:
     - btrfs_progs_build|bool
   tags: vars
 
 - name: Set bindir for debian systems
-  set_fact:
+  ansible.builtin.set_fact:
     bindir: "/usr/bin"
   when: ansible_facts['os_family']|lower == 'debian'
   tags: vars
 
 - name: Set bindir for non-debian systems
-  set_fact:
+  ansible.builtin.set_fact:
     bindir: "/usr/sbin"
   when: ansible_facts['os_family']|lower != 'debian'
   tags: vars
 
-- name: git clone btrfs_progs
+- name: Git clone btrfs_progs
   environment:
-    GIT_SSL_NO_VERIFY:  true
-  git:
+    GIT_SSL_NO_VERIFY: true
+  ansible.builtin.git:
     repo: "{{ btrfs_progs_git }}"
     dest: "{{ btrfs_progs_data }}"
     version: "{{ btrfs_progs_version }}"
@@ -54,49 +55,49 @@
     - build_btrfs_progs_now|bool
 
 - name: Run make clean-all for btrfs_progs
-  make:
+  community.general.make:
     chdir: "{{ btrfs_progs_data }}"
     target: clean-all
-  ignore_errors: yes
+  ignore_errors: true
 
 - name: Run autogen.sh for btrfs_progs
-  command: "./autogen.sh"
-  tags: [ 'btrfs_progs', 'configure' ]
+  ansible.builtin.command: "./autogen.sh"
+  tags: ["btrfs_progs", "configure"]
   args:
     chdir: "{{ btrfs_progs_data }}"
   when:
     - build_btrfs_progs_now|bool
 
 - name: Run configure for btrfs_progs
-  command: "./configure --disable-documentation --enable-experimental --bindir={{ bindir }} --prefix=/usr --exec-prefix=/usr --disable-python"
-  tags: [ 'btrfs_progs', 'configure' ]
+  ansible.builtin.command: "./configure --disable-documentation --enable-experimental --bindir={{ bindir }} --prefix=/usr --exec-prefix=/usr --disable-python"
+  tags: ["btrfs_progs", "configure"]
   args:
     chdir: "{{ btrfs_progs_data }}"
   when:
     - build_btrfs_progs_now|bool
 
 - name: Get nproc
-  command: "{{ num_jobs }}"
-  tags: [ 'btrfs_progs', 'configure' ]
+  ansible.builtin.command: "{{ num_jobs }}"
+  tags: ["btrfs_progs", "configure"]
   register: nproc
   when:
     - build_btrfs_progs_now|bool
 
 - name: Build btrfs_progs
-  make:
+  community.general.make:
     chdir: "{{ btrfs_progs_data }}"
     jobs: "{{ nproc.stdout }}"
-  tags: [ 'btrfs_progs', 'build' ]
+  tags: ["btrfs_progs", "build"]
   when:
     - build_btrfs_progs_now|bool
 
 - name: Install btrfs_progs
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{ make }} install"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{ make }} install"
   args:
     chdir: "{{ btrfs_progs_data }}"
-  tags: [ 'btrfs_progs', 'install' ]
+  tags: ["btrfs_progs", "install"]
   when:
     - build_btrfs_progs_now|bool
diff --git a/playbooks/roles/build_qemu/defaults/main.yml b/playbooks/roles/build_qemu/defaults/main.yml
index 006d669..1cb90d0 100644
--- a/playbooks/roles/build_qemu/defaults/main.yml
+++ b/playbooks/roles/build_qemu/defaults/main.yml
@@ -1,11 +1,11 @@
 # SPDX-License-Identifier copyleft-next-0.3.1
 ---
 
-qemu_build: False
+qemu_build: false
 
 # Forces to build and install even if the file
 # /usr/local/bin/qemu-system-x86_64 is already present
-qemu_force_install_if_present: False
+qemu_force_install_if_present: false
 qemu_bin_path: "/usr/local/bin/qemu-system-x86_64"
 qemu_data: "{{ data_path }}/qemu"
 qemu_git: "https://github.com/qemu/qemu.git"
diff --git a/playbooks/roles/build_qemu/tasks/install-deps/debian/main.yml b/playbooks/roles/build_qemu/tasks/install-deps/debian/main.yml
index c3ab7a0..fb2043b 100644
--- a/playbooks/roles/build_qemu/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/build_qemu/tasks/install-deps/debian/main.yml
@@ -1,15 +1,15 @@
 ---
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
-  tags: [ 'qemu', 'update-cache' ]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
+  tags: ["qemu", "update-cache"]
 
 - name: Install QEMU build dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - debhelper-compat
       - glusterfs-common
@@ -71,4 +71,4 @@
       - fcode-utils
       - xsltproc
     state: present
-  tags: [ 'qemu', 'build-deps' ]
+  tags: ["qemu", "build-deps"]
diff --git a/playbooks/roles/build_qemu/tasks/install-deps/fedora/main.yml b/playbooks/roles/build_qemu/tasks/install-deps/fedora/main.yml
index a46d401..e5ed1ed 100644
--- a/playbooks/roles/build_qemu/tasks/install-deps/fedora/main.yml
+++ b/playbooks/roles/build_qemu/tasks/install-deps/fedora/main.yml
@@ -1,15 +1,15 @@
 ---
 - name: Verify local build QEMU installation
-  command: "which qemu-system-x86_64"
+  ansible.builtin.command: "which qemu-system-x86_64"
   register: qemu_present
   changed_when: qemu_present.rc == 1
   failed_when: qemu_present.rc != 0 and qemu_present.rc != 1
-  tags: [ 'qemu', 'verify' ]
+  tags: ["qemu", "verify"]
 
 - name: Install QEMU build dependencies
-  become: yes
-  become_method: sudo
-  dnf:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - ImageMagick
       - ImageMagick-libs
diff --git a/playbooks/roles/build_qemu/tasks/install-deps/main.yml b/playbooks/roles/build_qemu/tasks/install-deps/main.yml
index c652ab2..2dee349 100644
--- a/playbooks/roles/build_qemu/tasks/install-deps/main.yml
+++ b/playbooks/roles/build_qemu/tasks/install-deps/main.yml
@@ -1,21 +1,27 @@
 ---
 - name: Import optional distribution specific variables
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "{{ ansible_facts['os_family']|lower }}.yml"
+        - "{{ ansible_facts['os_family'] | lower }}.yml"
       skip: true
   tags: vars
 
-- name: Distribution specific setup
-  import_tasks: debian/main.yml
+- name: Debian/Ubuntu distribution specific setup
+  ansible.builtin.import_tasks: debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: redhat/main.yml
   when:
     - ansible_facts['os_family']|lower == 'redhat'
     - ansible_facts['distribution']|lower != "fedora"
-- import_tasks: fedora/main.yml
+
+- name: Fedora distribution specific setup
+  ansible.builtin.import_tasks: fedora/main.yml
   when: ansible_facts['distribution']|lower == "fedora"
diff --git a/playbooks/roles/build_qemu/tasks/install-deps/redhat/main.yml b/playbooks/roles/build_qemu/tasks/install-deps/redhat/main.yml
index 00a08d9..f973c7f 100644
--- a/playbooks/roles/build_qemu/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/build_qemu/tasks/install-deps/redhat/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install QEMU build dependencies
-  become: yes
-  become_method: sudo
-  dnf:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - glusterfs-common
       - gnutls-dev
diff --git a/playbooks/roles/build_qemu/tasks/install-deps/suse/main.yml b/playbooks/roles/build_qemu/tasks/install-deps/suse/main.yml
index e9ff529..e1660ff 100644
--- a/playbooks/roles/build_qemu/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/build_qemu/tasks/install-deps/suse/main.yml
@@ -1,13 +1,13 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
 
 - name: Install QEMU build dependencies
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - acpica
diff --git a/playbooks/roles/build_qemu/tasks/main.yml b/playbooks/roles/build_qemu/tasks/main.yml
index c826c9c..455ad86 100644
--- a/playbooks/roles/build_qemu/tasks/main.yml
+++ b/playbooks/roles/build_qemu/tasks/main.yml
@@ -1,56 +1,56 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  failed_when: false
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Verify local build QEMU installation
-  stat:
+  ansible.builtin.stat:
     path: "{{ qemu_bin_path }}"
   register: qemu_present
   changed_when: true
   failed_when: qemu_present.stat.exists and not qemu_present.stat.executable
-  tags: [ 'qemu', 'verify' ]
+  tags: ["qemu", "verify"]
   when:
     - qemu_build|bool
 
 - name: Install build-deps for QEMU as per each Linux distribution
-  include_tasks: install-deps/main.yml
+  ansible.builtin.include_tasks: install-deps/main.yml
   when:
     - qemu_build|bool
     - qemu_force_install_if_present|bool or not qemu_present.stat.exists
 
 - name: Assume we won't build QEMU first
-  set_fact:
-    build_qemu_now: False
+  ansible.builtin.set_fact:
+    build_qemu_now: false
   tags: vars
 
 - name: Annotate when we are building QEMU
-  set_fact:
-    build_qemu_now: True
+  ansible.builtin.set_fact:
+    build_qemu_now: true
   when:
     - qemu_build|bool
     - qemu_force_install_if_present|bool or (qemu_present.stat is not defined)
   tags: vars
 
 - name: Ensure that {{ local_dev_path }} exists
-  file:
+  ansible.builtin.file:
     path: "{{ local_dev_path }}"
     state: directory
-  tags: [ 'qemu', 'build-deps' ]
+  tags: ["qemu", "build-deps"]
   when:
     - build_qemu_now|bool
 
-- name: git clone QEMU using {{ qemu_git }} on {{ qemu_data }}
+- name: Git clone QEMU using {{ qemu_git }} on {{ qemu_data }}
   environment:
-    GIT_SSL_NO_VERIFY:  true
-  git:
+    GIT_SSL_NO_VERIFY: true
+  ansible.builtin.git:
     repo: "{{ qemu_git }}"
     dest: "{{ qemu_data }}"
     version: "{{ qemu_version }}"
@@ -58,51 +58,51 @@
     - build_qemu_now|bool
 
 - name: Nuke old build directory
-  file:
+  ansible.builtin.file:
     path: "{{ qemu_build_dir }}"
     state: absent
-  tags: [ 'qemu', 'build-deps' ]
+  tags: ["qemu", "build-deps"]
   when:
     - build_qemu_now|bool
 
 - name: Disable downloads
-  command: "meson subprojects download"
-  tags: [ 'qemu', 'configure' ]
+  ansible.builtin.command: "meson subprojects download"
+  tags: ["qemu", "configure"]
   args:
     chdir: "{{ qemu_data }}"
   when:
     - build_qemu_now|bool
 
 - name: Run configure for QEMU
-  command: "./configure --target-list={{ qemu_target }} --disable-download"
-  tags: [ 'qemu', 'configure' ]
+  ansible.builtin.command: "./configure --target-list={{ qemu_target }} --disable-download"
+  tags: ["qemu", "configure"]
   args:
     chdir: "{{ qemu_data }}"
   when:
     - build_qemu_now|bool
 
 - name: Get nproc
-  command: "{{ num_jobs }}"
-  tags: [ 'qemu', 'configure', 'build' ]
+  ansible.builtin.command: "{{ num_jobs }}"
+  tags: ["qemu", "configure", "build"]
   register: nproc
   when:
     - build_qemu_now|bool
 
 - name: Build QEMU
-  make:
+  community.general.make:
     chdir: "{{ qemu_data }}"
     jobs: "{{ nproc.stdout }}"
-  tags: [ 'qemu', 'build' ]
+  tags: ["qemu", "build"]
   when:
     - build_qemu_now|bool
 
 - name: Install QEMU
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{ make }} install"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{ make }} install"
   args:
     chdir: "{{ qemu_data }}"
-  tags: [ 'qemu', 'install' ]
+  tags: ["qemu", "install"]
   when:
     - build_qemu_now|bool
diff --git a/playbooks/roles/common/defaults/main.yml b/playbooks/roles/common/defaults/main.yml
index 69cd0af..ab496e8 100644
--- a/playbooks/roles/common/defaults/main.yml
+++ b/playbooks/roles/common/defaults/main.yml
@@ -4,4 +4,4 @@
 kdevops_data: "/data/kdevops"
 kdevops_git: "https://github.com/linux-kdevops/kdevops.git"
 
-kdevops_git_reset: False
+kdevops_git_reset: false
diff --git a/playbooks/roles/common/tasks/main.yml b/playbooks/roles/common/tasks/main.yml
index 20a1f44..0f206c2 100644
--- a/playbooks/roles/common/tasks/main.yml
+++ b/playbooks/roles/common/tasks/main.yml
@@ -1,46 +1,46 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  failed_when: false
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 # Distro agnostic stuff goes below
 
-- name: git reset kdevops
+- name: Git reset kdevops
   environment:
-    GIT_SSL_NO_VERIFY:  true
-  git:
+    GIT_SSL_NO_VERIFY: true
+  ansible.builtin.git:
     repo: "{{ kdevops_git }}"
     dest: "{{ kdevops_data }}"
   retries: 3
   delay: 5
   register: result
   until: not result.failed
-  tags: [ 'kdevops_reset']
+  tags: ["kdevops_reset"]
   when:
     - kdevops_git_reset|bool
 
 - name: Get username we are using
-  command:
+  ansible.builtin.command:
     cmd: whoami
   register: username_on_target
   when:
     - infer_uid_and_group|bool
 
 - name: Set target user as a fact
-  set_fact:
+  ansible.builtin.set_fact:
     target_user: "{{ username_on_target.stdout }}"
   when:
     - infer_uid_and_group|bool
 
 - name: Run getent against the inferred target user
-  getent:
+  ansible.builtin.getent:
     database: passwd
     key: "{{ target_user }}"
   register: getent_running_user
@@ -48,7 +48,7 @@
     - infer_uid_and_group|bool
 
 - name: Run getent against the inferred target group
-  getent:
+  ansible.builtin.getent:
     database: group
     key: "{{ target_user }}"
   register: getent_on_group
@@ -56,7 +56,7 @@
     - infer_uid_and_group|bool
 
 - name: Override user and group with inferred settings if feature is enabled
-  set_fact:
+  ansible.builtin.set_fact:
     data_user: "{{ target_user }}"
     data_group: "{{ ((getent_on_group.values() | first).values() | first).keys() | first }}"
   when:
diff --git a/playbooks/roles/compile_dbench/defaults/main.yml b/playbooks/roles/compile_dbench/defaults/main.yml
index 50bf395..b544bd4 100644
--- a/playbooks/roles/compile_dbench/defaults/main.yml
+++ b/playbooks/roles/compile_dbench/defaults/main.yml
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier GPL-2.0+
 ---
 # Our sensible defaults.
-compile_dbench: False
+compile_dbench: false
 dbench_data: "{{ data_path }}/dbench"
 dbench_git: "https://github.com/linux-kdevops/dbench.git"
diff --git a/playbooks/roles/compile_dbench/tasks/install-deps/debian/main.yml b/playbooks/roles/compile_dbench/tasks/install-deps/debian/main.yml
index 977b18b..ca14a22 100644
--- a/playbooks/roles/compile_dbench/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/compile_dbench/tasks/install-deps/debian/main.yml
@@ -1,19 +1,19 @@
 ---
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
   tags: linux
 
 - name: Force dbench compilation on Debian
-  set_fact:
-    compile_dbench: False
+  ansible.builtin.set_fact:
+    compile_dbench: false
 
 - name: Install dbench build dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - git
       - automake
@@ -46,5 +46,5 @@
       - libsmbclient-dev
       - libiscsi-dev
     state: present
-    update_cache: yes
-  tags: [ 'dbench', 'deps' ]
+    update_cache: true
+  tags: ["dbench", "deps"]
diff --git a/playbooks/roles/compile_dbench/tasks/install-deps/main.yml b/playbooks/roles/compile_dbench/tasks/install-deps/main.yml
index d4c85df..a333e9d 100644
--- a/playbooks/roles/compile_dbench/tasks/install-deps/main.yml
+++ b/playbooks/roles/compile_dbench/tasks/install-deps/main.yml
@@ -1,10 +1,11 @@
 ---
-- include_role:
+- name: Include package management role
+  ansible.builtin.include_role:
     name: pkg
 
 # tasks to install dependencies for dbench
-- name: dbench distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Dbench distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
 
 # Other distros can be added on a need basis here
diff --git a/playbooks/roles/compile_dbench/tasks/main.yml b/playbooks/roles/compile_dbench/tasks/main.yml
index 15a8bb4..e58e875 100644
--- a/playbooks/roles/compile_dbench/tasks/main.yml
+++ b/playbooks/roles/compile_dbench/tasks/main.yml
@@ -1,65 +1,64 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  failed_when: false
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 # Distro specific
 - name: Install dependencies
-  import_tasks: install-deps/main.yml
-
-- name: git clone dbench
-  git:
+  ansible.builtin.import_tasks: install-deps/main.yml
+- name: Git clone dbench
+  ansible.builtin.git:
     repo: "{{ dbench_git }}"
     dest: "{{ dbench_data }}"
-    update: yes
-  tags: [ 'git', 'dbench' ]
+    update: true
+  tags: ["git", "dbench"]
   when:
     - compile_dbench|bool
 
 - name: Run autogen for dbench
-  command: "./autogen.sh"
-  tags: [ 'dbench' ]
+  ansible.builtin.command: "./autogen.sh"
+  tags: ["dbench"]
   args:
     chdir: "{{ dbench_data }}"
   when:
     - compile_dbench|bool
 
 - name: Run configure for dbench
-  command: "./configure"
-  tags: [ 'dbench' ]
+  ansible.builtin.command: "./configure"
+  tags: ["dbench"]
   args:
     chdir: "{{ dbench_data }}"
   when:
     - compile_dbench|bool
 
 - name: Get nproc
-  command: "{{ num_jobs }}"
-  tags: [ 'git', 'dbench' ]
+  ansible.builtin.command: "{{ num_jobs }}"
+  tags: ["git", "dbench"]
   register: nproc
   when:
     - compile_dbench|bool
 
 - name: Build dbench
-  tags: [ 'git', 'dbench' ]
-  make:
+  tags: ["git", "dbench"]
+  community.general.make:
     chdir: "{{ dbench_data }}"
     jobs: "{{ nproc.stdout }}"
   when:
     - compile_dbench|bool
 
 - name: Install dbench
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{  make }} install"
-  tags: [ 'git', 'dbench' ]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{  make }} install"
+  tags: ["git", "dbench"]
   args:
     chdir: "{{ dbench_data }}"
   when:
diff --git a/playbooks/roles/create_data_partition/tasks/main.yml b/playbooks/roles/create_data_partition/tasks/main.yml
index 417c3fa..190f6e3 100644
--- a/playbooks/roles/create_data_partition/tasks/main.yml
+++ b/playbooks/roles/create_data_partition/tasks/main.yml
@@ -1,11 +1,12 @@
 ---
-- include_role:
+- name: Include role
+  ansible.builtin.include_role:
     name: common
   when:
     - infer_uid_and_group|bool
 
 - name: Establish the fixed device name of the data device
-  tags: [ 'data_partition' ]
+  tags: ["data_partition"]
   when:
     - kdevops_enable_terraform|bool
     - kdevops_terraform_provider == "aws"
@@ -26,8 +27,7 @@
         local_map: "{{ block_device_dict[inventory_hostname] }}"
       ansible.builtin.set_fact:
         data_volume_id: "{{ 'nvme-Amazon_Elastic_Block_Store_' + item.value | regex_replace('-', '') }}"
-      when:
-        item.key == "/dev/sdf"
+      when: item.key == "/dev/sdf"
       with_dict: "{{ local_map }}"
 
     # This task replaces the value of data_device only in the scope of this role
@@ -41,14 +41,14 @@
       with_dict: "{{ ansible_devices }}"
 
 - name: Create {{ data_path }} partition if not created yet
-  include_role:
+  ansible.builtin.include_role:
     name: create_partition
   vars:
     disk_setup_device: "{{ data_device }}"
     disk_setup_fstype: "{{ data_fstype }}"
-    disk_setup_label : "{{ data_label }}"
+    disk_setup_label: "{{ data_label }}"
     disk_setup_fs_opts: "{{ data_fs_opts }}"
     disk_setup_path: "{{ data_path }}"
     disk_setup_user: "{{ data_user }}"
     disk_setup_group: "{{ data_group }}"
-  tags: [ 'data_partition' ]
+  tags: ["data_partition"]
diff --git a/playbooks/roles/create_nfs_mount/tasks/main.yml b/playbooks/roles/create_nfs_mount/tasks/main.yml
index 94945df..a47129b 100644
--- a/playbooks/roles/create_nfs_mount/tasks/main.yml
+++ b/playbooks/roles/create_nfs_mount/tasks/main.yml
@@ -22,7 +22,7 @@
       RedHat:
         - "nfs-utils"
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name: "{{ packages[ansible_os_family] }}"
@@ -38,7 +38,7 @@
 
 - name: Mount {{ nfs_mounted_on }}
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   throttle: 1
   ansible.posix.mount:
@@ -47,5 +47,4 @@
     fstype: "nfs"
     opts: "{{ nfs_mount_options }}"
     state: mounted
-  when:
-    mountpoint_stat != 0
+  when: mountpoint_stat != 0
diff --git a/playbooks/roles/create_partition/tasks/install-deps/debian/main.yml b/playbooks/roles/create_partition/tasks/install-deps/debian/main.yml
index eee21ee..e5b160a 100644
--- a/playbooks/roles/create_partition/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/create_partition/tasks/install-deps/debian/main.yml
@@ -1,10 +1,10 @@
 ---
 - name: Install partition creation base tools
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - btrfs-progs
       - e2fsprogs
       - xfsprogs
-    update_cache: yes
+    update_cache: true
diff --git a/playbooks/roles/create_partition/tasks/install-deps/main.yml b/playbooks/roles/create_partition/tasks/install-deps/main.yml
index 4132bd4..13841b5 100644
--- a/playbooks/roles/create_partition/tasks/install-deps/main.yml
+++ b/playbooks/roles/create_partition/tasks/install-deps/main.yml
@@ -1,9 +1,13 @@
 ---
 # tasks to install base dependencies to create a partition
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: tasks/install-deps/suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: tasks/install-deps/redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/create_partition/tasks/install-deps/redhat/main.yml b/playbooks/roles/create_partition/tasks/install-deps/redhat/main.yml
index 135c032..a58dcb3 100644
--- a/playbooks/roles/create_partition/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/create_partition/tasks/install-deps/redhat/main.yml
@@ -1,9 +1,9 @@
 ---
 - name: Install partition creation base tools
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   vars:
     packages:
@@ -11,10 +11,10 @@
       - e2fsprogs
 
 - name: Install btrfs-progs
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
diff --git a/playbooks/roles/create_partition/tasks/install-deps/suse/main.yml b/playbooks/roles/create_partition/tasks/install-deps/suse/main.yml
index a616712..e4fcbc0 100644
--- a/playbooks/roles/create_partition/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/create_partition/tasks/install-deps/suse/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
 
 - name: Set SLE specific version labels to make checks easier
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle10: '{{ ansible_distribution_major_version == "10" }}'
     is_sle11: '{{ ansible_distribution_major_version == "11" }}'
     is_sle12: '{{ ansible_distribution_major_version == "12" }}'
@@ -24,37 +24,37 @@
     - is_sle|bool
 
 - name: Set SLE specific version labels to make checks easier when not SLE
-  set_fact:
-    is_sle10: False
-    is_sle11: False
-    is_sle12: False
-    is_sle12sp5: False
-    is_sle15: False
-    is_sle10sp3: False
-    is_sle11sp1: False
-    is_sle11sp4: False
-    is_sle12sp1: False
-    is_sle12sp3: False
-    is_sle15sp2: False
-    is_sle15sp3: False
-    is_sle15sp4: False
+  ansible.builtin.set_fact:
+    is_sle10: false
+    is_sle11: false
+    is_sle12: false
+    is_sle12sp5: false
+    is_sle15: false
+    is_sle10sp3: false
+    is_sle11sp1: false
+    is_sle11sp4: false
+    is_sle12sp1: false
+    is_sle12sp3: false
+    is_sle15sp2: false
+    is_sle15sp3: false
+    is_sle15sp4: false
   when:
     - not is_sle|bool
 
 - name: By default we assume we have figured out how to add repos on a release
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: true
 
 - name: Lets us disable things which require a zypper repo present
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: false
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
 
 - name: Install partition creation base tools
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - xfsprogs
diff --git a/playbooks/roles/create_partition/tasks/main.yml b/playbooks/roles/create_partition/tasks/main.yml
index 8e72263..c5bd39c 100644
--- a/playbooks/roles/create_partition/tasks/main.yml
+++ b/playbooks/roles/create_partition/tasks/main.yml
@@ -1,70 +1,69 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  failed_when: false
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 # Distro specific
 - name: Include install-deps task
-  import_tasks: install-deps/main.yml
-
+  ansible.builtin.import_tasks: install-deps/main.yml
 - name: Check if {{ disk_setup_path }} is mounted
-  become: yes
-  become_method: sudo
-  command: mountpoint -q {{ disk_setup_path }}
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: mountpoint -q {{ disk_setup_path }}
   register: mountpoint_stat
-  failed_when: False
-  changed_when: False
-  tags: [ 'partition' ]
+  failed_when: false
+  changed_when: false
+  tags: ["partition"]
 
 - name: Check if {{ disk_setup_path }} is present on /etc/fstab
-  become: yes
-  become_method: sudo
-  shell: |
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: |
     set -o pipefail
     awk '{print $2}' /etc/fstab  | grep -q ^"{{ disk_setup_path }}"
   register: fstab_grep_stat
-  failed_when: False
-  changed_when: False
+  failed_when: false
+  changed_when: false
   args:
     executable: /bin/bash
-  tags: [ 'partition' ]
+  tags: ["partition"]
 
 - name: Partitions | Read all partitions labels and see if they match {{ disk_setup_label }}
-  become: yes
-  become_method: sudo
-  shell: |
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: |
     set -o pipefail
     lsblk -npr -oLABEL | grep -q ^"{{ disk_setup_label }}"
   register: label_grep
-  failed_when: False
-  changed_when: False
+  failed_when: false
+  changed_when: false
   args:
     executable: /bin/bash
-  tags: [ 'partition' ]
+  tags: ["partition"]
 
 - name: Partitions | Check if block {{ disk_setup_device }} exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ disk_setup_device }}"
-    follow: yes
+    follow: true
   register: stat_result
   when: >
     mountpoint_stat.rc != 0 and
     fstab_grep_stat.rc != 0 and
     label_grep.rc != 0
-  tags: [ 'partition' ]
+  tags: ["partition"]
 
 - name: Wipe old filesystem if {{ disk_setup_device }} was not on /etc/fstab
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  filesystem:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  community.general.filesystem:
     state: absent
     fstype: "{{ disk_setup_fstype }}"
     dev: "{{ disk_setup_device }}"
@@ -74,10 +73,10 @@
     (mountpoint_stat.rc != 0 and
      label_grep.rc != 0)
   register: create_data_fs
-  tags: [ 'partition' ]
+  tags: ["partition"]
 
 - name: Partitions | Read {{ disk_setup_device }} partitions and mountpoints
-  shell: |
+  ansible.builtin.shell: |
     set -o pipefail
     lsblk -npr -oNAME,MOUNTPOINT {{ disk_setup_device }}
   register: result
@@ -88,21 +87,21 @@
     stat_result.stat.isblk
   args:
     executable: /bin/bash
-  tags: [ 'partition' ]
+  tags: ["partition"]
 
 - name: Partitions | Collect partition information onto part_mounts
-  set_fact:
+  ansible.builtin.set_fact:
     part_mounts: "{{ result.stdout_lines | map('split') | list }}"
   when: >
     result is success and
     result.stdout_lines is defined
-  tags: [ 'partition' ]
+  tags: ["partition"]
 
 - name: Create filesystem if {{ disk_setup_device }} has no partitions and is not mounted
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  filesystem:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  community.general.filesystem:
     fstype: "{{ disk_setup_fstype }}"
     dev: "{{ disk_setup_device }}"
     opts: "{{ disk_setup_fs_opts }}"
@@ -118,13 +117,13 @@
      (part_mounts_item[0] is not defined and
      part_mounts_item[1] is not defined)))
   register: create_data_fs
-  tags: [ 'partition' ]
+  tags: ["partition"]
 
 - name: Mount data filesystem if {{ disk_setup_path }} is not mounted
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  mount:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.posix.mount:
     path: "{{ disk_setup_path }}"
     src: LABEL="{{ disk_setup_label }}"
     fstype: "{{ disk_setup_fstype }}"
@@ -145,15 +144,15 @@
      (part_mounts_item is defined and
      part_mounts_item | length <= 1 or
      part_mounts_item[1] is not defined))
-  tags: [ 'partition' ]
+  tags: ["partition"]
 
 - name: Ensure directory {{ disk_setup_path }} is created and with correct permissions
-  become: yes
-  become_method: sudo
-  file:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     state: directory
     path: "{{ disk_setup_path }}"
     owner: "{{ disk_setup_user }}"
     group: "{{ disk_setup_group }}"
     mode: "{{ disk_setup_mode }}"
-  tags: [ 'partition' ]
+  tags: ["partition"]
diff --git a/playbooks/roles/create_tmpfs/tasks/main.yml b/playbooks/roles/create_tmpfs/tasks/main.yml
index e8bcfcf..5f7df16 100644
--- a/playbooks/roles/create_tmpfs/tasks/main.yml
+++ b/playbooks/roles/create_tmpfs/tasks/main.yml
@@ -33,7 +33,7 @@
 
 - name: Mount {{ tmpfs_mounted_on }}
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   throttle: 1
   ansible.posix.mount:
@@ -42,8 +42,7 @@
     fstype: "tmpfs"
     opts: "{{ tmpfs_mount_options }}"
     state: mounted
-  when:
-    mountpoint_stat != 0
+  when: mountpoint_stat != 0
 
 - name: Update permissions on {{ tmpfs_mounted_on }}
   become: true
diff --git a/playbooks/roles/cxl/defaults/main.yml b/playbooks/roles/cxl/defaults/main.yml
index 8bed959..a53fbb9 100644
--- a/playbooks/roles/cxl/defaults/main.yml
+++ b/playbooks/roles/cxl/defaults/main.yml
@@ -4,6 +4,6 @@ ndctl_git: "https://github.com/pmem/ndctl.git"
 ndctl_data: "{{ data_path }}/ndctl"
 ndctl_version: "pending"
 ndctl_meson_testlog: "build/meson-logs/testlog.txt"
-kdevops_run_cxl_tests: False
-kdevops_enable_cxl_dcd: False
+kdevops_run_cxl_tests: false
+kdevops_enable_cxl_dcd: false
 kdevops_qmp_str: "tcp:localhost:4444,server"
diff --git a/playbooks/roles/cxl/tasks/cxl-create-dc-region/main.yml b/playbooks/roles/cxl/tasks/cxl-create-dc-region/main.yml
index daed8fa..18c67d8 100644
--- a/playbooks/roles/cxl/tasks/cxl-create-dc-region/main.yml
+++ b/playbooks/roles/cxl/tasks/cxl-create-dc-region/main.yml
@@ -1,27 +1,20 @@
 ---
-
 - name: Create a DC region before DC extents can be added
-  become: yes
-  become_method: sudo
-  shell: "rid=0; \
-          region=$(cat /sys/bus/cxl/devices/decoder0.0/create_dc_region); \
-          echo $region > /sys/bus/cxl/devices/decoder0.0/create_dc_region; \
-          echo 256 > /sys/bus/cxl/devices/$region/interleave_granularity; \
-          echo 1 > /sys/bus/cxl/devices/$region/interleave_ways; \
-          echo dc$rid >/sys/bus/cxl/devices/decoder2.0/mode; \
-          echo 0x40000000 >/sys/bus/cxl/devices/decoder2.0/dpa_size; \
-          echo 0x40000000 > /sys/bus/cxl/devices/$region/size; \
-          echo  decoder2.0 > /sys/bus/cxl/devices/$region/target0; \
-          echo 1 > /sys/bus/cxl/devices/$region/commit; \
-          echo $region > /sys/bus/cxl/drivers/cxl_region/bind"
-  tags: [ 'cxl-create-dc-region' ]
+  become: true
+  become_method: ansible.builtin.sudo
+  changed_when: false
+  ansible.builtin.shell: "rid=0; region=$(cat /sys/bus/cxl/devices/decoder0.0/create_dc_region); echo $region > /sys/bus/cxl/devices/decoder0.0/create_dc_region;
+    echo 256 > /sys/bus/cxl/devices/$region/interleave_granularity; echo 1 > /sys/bus/cxl/devices/$region/interleave_ways; echo dc$rid >/sys/bus/cxl/devices/decoder2.0/mode;
+    echo 0x40000000 >/sys/bus/cxl/devices/decoder2.0/dpa_size; echo 0x40000000 > /sys/bus/cxl/devices/$region/size; echo  decoder2.0 > /sys/bus/cxl/devices/$region/target0;
+    echo 1 > /sys/bus/cxl/devices/$region/commit; echo $region > /sys/bus/cxl/drivers/cxl_region/bind"
+  tags: ["cxl-create-dc-region"]
 
 - name: Show the DC region created
-  become: no
-  shell: "cxl list -uR"
+  become: false
+  ansible.builtin.command: "cxl list -uR"
   register: command_output
-  tags: [ 'cxl-create-dc-region' ]
+  tags: ["cxl-create-dc-region"]
 
-- debug:
-      var: command_output.stdout_lines
-  tags: [ 'cxl-create-dc-region' ]
+- ansible.builtin.debug:
+    var: command_output.stdout_lines
+  tags: ["cxl-create-dc-region"]
diff --git a/playbooks/roles/cxl/tasks/cxl-dcd-setup/main.yml b/playbooks/roles/cxl/tasks/cxl-dcd-setup/main.yml
index 39660ef..1a5326b 100644
--- a/playbooks/roles/cxl/tasks/cxl-dcd-setup/main.yml
+++ b/playbooks/roles/cxl/tasks/cxl-dcd-setup/main.yml
@@ -1,79 +1,68 @@
 ---
-
 - name: Add DC extents to the hosts
-  shell: " \
-          qmp_port_str={{ qmp_port_str }}; \
-          qmp_port=`echo $qmp_port_str | awk -F'[^0-9]+' '{ print $2 }'`;\
-          qmp_str=' \
-          { \"execute\": \"qmp_capabilities\" } \
-          { \"execute\": \"cxl-add-dynamic-capacity\",
-            \"arguments\": {
-              \"path\": \"/machine/peripheral/kdevops-cxl-dcd0\",
-              \"region-id\": 0,
-              \"extents\": [
-                {
-                  \"offset\": 0,
-                  \"len\": 128
-                },
-                {
-                  \"offset\": 128,
-                  \"len\": 256
-                }
-                ]
-            }
-          } '; \
-          echo $qmp_str | ncat localhost $qmp_port"
+  ansible.builtin.shell: " qmp_port_str={{ qmp_port_str }}; qmp_port=`echo $qmp_port_str | awk -F'[^0-9]+' '{ print $2 }'`;qmp_str=' { \"execute\": \"qmp_capabilities\"\
+  changed_when: false
+    \ } { \"execute\": \"cxl-add-dynamic-capacity\", \"arguments\": { \"path\": \"/machine/peripheral/kdevops-cxl-dcd0\", \"region-id\": 0, \"extents\": [ { \"offset\"\
+    : 0, \"len\": 128 }, { \"offset\": 128, \"len\": 256 } ] } } '; echo $qmp_str | ncat localhost $qmp_port"
   register: command_output
-  tags: [ 'cxl-dcd-setup' ]
+  tags: ["cxl-dcd-setup"]
   delegate_to: localhost
 
-- debug: var=command_output.stdout_lines
-  tags: [ 'cxl-dcd-setup' ]
+- ansible.builtin.debug:
+    var: command_output.stdout_lines
+  tags: ["cxl-dcd-setup"]
 
 - name: Show DC extents added
-  become: no
-  shell: "ls /sys/bus/cxl/devices/decoder0.0/region0/dax_region0/ -lt"
+  become: false
+  ansible.builtin.command: "ls /sys/bus/cxl/devices/decoder0.0/region0/dax_region0/ -lt"
+  changed_when: false
   register: command_output
-  tags: [ 'cxl-dcd-setup' ]
+  tags: ["cxl-dcd-setup"]
 
-- debug: var=command_output.stdout_lines
-  tags: [ 'cxl-dcd-setup' ]
+- ansible.builtin.debug:
+    var: command_output.stdout_lines
+  tags: ["cxl-dcd-setup"]
 
 - name: Create dax devices for DC region
-  become: yes
-  become_method: sudo
-  shell: "daxctl create-device region0"
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "daxctl create-device region0"
   register: command_output
-  tags: [ 'cxl-dcd-setup' ]
+  tags: ["cxl-dcd-setup"]
 
-- debug: var=command_output.stdout_lines
-  tags: [ 'cxl-dcd-setup' ]
+- ansible.builtin.debug:
+    var: command_output.stdout_lines
+  tags: ["cxl-dcd-setup"]
 
 - name: Show dax devices added
-  become: no
-  shell: "ls /dev/dax* -lt"
+  become: false
+  ansible.builtin.shell: "ls /dev/dax* -lt"
+  changed_when: false
   register: command_output
-  tags: [ 'cxl-dcd-setup' ]
+  tags: ["cxl-dcd-setup"]
 
-- debug: var=command_output.stdout_lines
-  tags: [ 'cxl-dcd-setup' ]
+- ansible.builtin.debug:
+    var: command_output.stdout_lines
+  tags: ["cxl-dcd-setup"]
 
 - name: Convert dax devices to system RAM and online
-  become: yes
-  become_method: sudo
-  shell: "daxctl reconfigure-device --mode=system-ram --no-online dax0.1; \
-          daxctl online-memory dax0.1;"
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: "daxctl reconfigure-device --mode=system-ram --no-online dax0.1; daxctl online-memory dax0.1;"
   register: command_output
-  tags: [ 'cxl-dcd-setup' ]
+  tags: ["cxl-dcd-setup"]
 
-- debug: var=command_output.stdout_lines
-  tags: [ 'cxl-dcd-setup' ]
+- ansible.builtin.debug:
+    var: command_output.stdout_lines
+  tags: ["cxl-dcd-setup"]
 
 - name: Show system memory with lsmem
-  become: no
-  shell: "lsmem"
+  become: false
+  ansible.builtin.command: "lsmem"
+  changed_when: false
   register: command_output
-  tags: [ 'cxl-dcd-setup' ]
+  tags: ["cxl-dcd-setup"]
 
-- debug: var=command_output.stdout_lines
-  tags: [ 'cxl-dcd-setup' ]
+- ansible.builtin.debug:
+    var: command_output.stdout_lines
+  tags: ["cxl-dcd-setup"]
diff --git a/playbooks/roles/cxl/tasks/cxl-mem-setup/main.yml b/playbooks/roles/cxl/tasks/cxl-mem-setup/main.yml
index fe7db13..4045e48 100644
--- a/playbooks/roles/cxl/tasks/cxl-mem-setup/main.yml
+++ b/playbooks/roles/cxl/tasks/cxl-mem-setup/main.yml
@@ -1,23 +1,20 @@
 ---
+- name: Create a region from cxl memory
+  become: true
+  ansible.builtin.command: "cxl create-region -m -d decoder0.0 -w 1 mem0 -s 256M"
+  tags: ["cxl-mem-setup"]
 
-- name: create a region from cxl memory
-  become: yes
-  command: "cxl create-region -m -d decoder0.0 -w 1 mem0 -s 256M"
-  tags: [ 'cxl-mem-setup' ]
-
-- name: create a namespace from cxl memory
-  become: yes
-  command: "ndctl create-namespace -m dax -r region0"
-  tags: [ 'cxl-mem-setup' ]
-
-- name: switch daxdevice to be used for system-ram
-  become: yes
-  command: "daxctl reconfigure-device --mode=system-ram --no-online dax0.0"
-  tags: [ 'cxl-mem-setup' ]
-
-- name: online newly created daxdevice
-  become: yes
-  command: "daxctl online-memory dax0.0"
-  tags: [ 'cxl-mem-setup' ]
+- name: Create a namespace from cxl memory
+  become: true
+  ansible.builtin.command: "ndctl create-namespace -m dax -r region0"
+  tags: ["cxl-mem-setup"]
 
+- name: Switch daxdevice to be used for system-ram
+  become: true
+  ansible.builtin.command: "daxctl reconfigure-device --mode=system-ram --no-online dax0.0"
+  tags: ["cxl-mem-setup"]
 
+- name: Online newly created daxdevice
+  become: true
+  ansible.builtin.command: "daxctl online-memory dax0.0"
+  tags: ["cxl-mem-setup"]
diff --git a/playbooks/roles/cxl/tasks/install-deps/debian/main.yml b/playbooks/roles/cxl/tasks/install-deps/debian/main.yml
index 8e3c07d..2cf6dde 100644
--- a/playbooks/roles/cxl/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/cxl/tasks/install-deps/debian/main.yml
@@ -1,15 +1,15 @@
 ---
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
   tags: linux
 
 - name: Install ndctl build deps
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - git
       - meson
@@ -28,5 +28,5 @@
       - libtraceevent-dev
       - libtracefs-dev
     state: present
-    update_cache: yes
-  tags: [ 'cxl', 'deps' ]
+    update_cache: true
+  tags: ["cxl", "deps"]
diff --git a/playbooks/roles/cxl/tasks/install-deps/generic.yml b/playbooks/roles/cxl/tasks/install-deps/generic.yml
index 5f9bb65..bc32b71 100644
--- a/playbooks/roles/cxl/tasks/install-deps/generic.yml
+++ b/playbooks/roles/cxl/tasks/install-deps/generic.yml
@@ -1,8 +1,8 @@
 ---
 # task to install packages common across supported distros
 - name: Install packages common to all supported distros
-  become: yes
-  package:
+  become: true
+  ansible.builtin.package:
     name:
       - numactl
     state: present
diff --git a/playbooks/roles/cxl/tasks/install-deps/main.yml b/playbooks/roles/cxl/tasks/install-deps/main.yml
index aa5317f..5060f35 100644
--- a/playbooks/roles/cxl/tasks/install-deps/main.yml
+++ b/playbooks/roles/cxl/tasks/install-deps/main.yml
@@ -1,12 +1,16 @@
 ---
 # tasks to install dependencies for oscheck
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: tasks/install-deps/suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: tasks/install-deps/redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
 
 - name: Install package common to all distros
-  import_tasks: tasks/install-deps/generic.yml
+  ansible.builtin.import_tasks: tasks/install-deps/generic.yml
diff --git a/playbooks/roles/cxl/tasks/install-deps/redhat/main.yml b/playbooks/roles/cxl/tasks/install-deps/redhat/main.yml
index e1a94a2..8c2f12d 100644
--- a/playbooks/roles/cxl/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/cxl/tasks/install-deps/redhat/main.yml
@@ -1,9 +1,9 @@
 ---
 - name: Install build dependencies for ndctl
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   vars:
     packages:
diff --git a/playbooks/roles/cxl/tasks/install-deps/suse/main.yml b/playbooks/roles/cxl/tasks/install-deps/suse/main.yml
index 50eb51b..2d1a133 100644
--- a/playbooks/roles/cxl/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/cxl/tasks/install-deps/suse/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
 
 - name: Set SLE specific version labels to make checks easier
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle10: '{{ ansible_distribution_major_version == "10" }}'
     is_sle11: '{{ ansible_distribution_major_version == "11" }}'
     is_sle12: '{{ ansible_distribution_major_version == "12" }}'
@@ -24,38 +24,38 @@
     - is_sle|bool
 
 - name: Set SLE specific version labels to make checks easier when not SLE
-  set_fact:
-    is_sle10: False
-    is_sle11: False
-    is_sle12: False
-    is_sle15: False
-    is_sle10sp3: False
-    is_sle11sp1: False
-    is_sle11sp4: False
-    is_sle12sp1: False
-    is_sle12sp3: False
-    is_sle12sp5: False
-    is_sle15sp2: False
-    is_sle15sp3: False
-    is_sle15sp4: False
+  ansible.builtin.set_fact:
+    is_sle10: false
+    is_sle11: false
+    is_sle12: false
+    is_sle15: false
+    is_sle10sp3: false
+    is_sle11sp1: false
+    is_sle11sp4: false
+    is_sle12sp1: false
+    is_sle12sp3: false
+    is_sle12sp5: false
+    is_sle15sp2: false
+    is_sle15sp3: false
+    is_sle15sp4: false
   when:
     - not is_sle|bool
 
 - name: By default we assume we have figured out how to add repos on a release
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: true
 
 - name: Lets us disable things which require a zypper repo present
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: false
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
 
 - name: Install build dependencies for ndctl
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - git-core
       - meson
diff --git a/playbooks/roles/cxl/tasks/main.yml b/playbooks/roles/cxl/tasks/main.yml
index 9ac95fd..5f57ef6 100644
--- a/playbooks/roles/cxl/tasks/main.yml
+++ b/playbooks/roles/cxl/tasks/main.yml
@@ -1,209 +1,218 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 # Distro specific
 - name: Install CXL build deps
-  include_tasks: install-deps/main.yml
-
-- include_role:
+  ansible.builtin.include_tasks: install-deps/main.yml
+- name: Include role
+  ansible.builtin.include_role:
     name: create_data_partition
-  tags: [ 'ndctl', 'data_partition' ]
+  tags: ["ndctl", "data_partition"]
 
-- name: git clone ndctl
-  git:
+- name: Git clone ndctl
+  ansible.builtin.git:
     repo: "{{ ndctl_git }}"
     dest: "{{ ndctl_data }}"
     version: "{{ ndctl_version }}"
-    update: yes
-  tags: [ 'git', 'ndctl' ]
+    update: true
+  tags: ["git", "ndctl"]
 
 - name: Run meson setup build for ndctl
-  command: "meson setup build"
-  tags: [ 'ndctl' ]
+  ansible.builtin.command: "meson setup build"
+  tags: ["ndctl"]
   args:
     chdir: "{{ ndctl_data }}"
 
 - name: Enable unit tests as per meson
-  command: "meson configure -Dtest=enabled -Ddestructive=enabled build"
-  tags: [ 'ndctl' ]
+  ansible.builtin.command: "meson configure -Dtest=enabled -Ddestructive=enabled build"
+  tags: ["ndctl"]
   args:
     chdir: "{{ ndctl_data }}"
 
 - name: Run meson compile -C build for ndctl
-  command: "meson compile -C build"
-  tags: [ 'ndctl' ]
+  ansible.builtin.command: "meson compile -C build"
+  tags: ["ndctl"]
   args:
     chdir: "{{ ndctl_data }}"
 
 - name: Run meson install -C build
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "meson install -C build"
-  tags: [ 'ndctl' ]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "meson install -C build"
+  tags: ["ndctl"]
   args:
     chdir: "{{ ndctl_data }}"
 
 - name: Convert cxl memory to kernel managed memory
-  include_tasks: cxl-mem-setup/main.yml
-  tags: [ 'cxl-mem-setup' ]
+  ansible.builtin.include_tasks: cxl-mem-setup/main.yml
+  tags: ["cxl-mem-setup"]
   when:
     - not kdevops_enable_cxl_dcd|bool
 
 - name: Create a dynamic capacity region for further dc extent add operations
-  include_tasks: cxl-create-dc-region/main.yml
-  tags: [ 'cxl-create-dc-region' ]
+  ansible.builtin.include_tasks: cxl-create-dc-region/main.yml
+  tags: ["cxl-create-dc-region"]
   when:
     - kdevops_enable_cxl_dcd|bool
 
 - name: Setup CXL DCD device as system ram
-  include_tasks: cxl-dcd-setup/main.yml
+  ansible.builtin.include_tasks: cxl-dcd-setup/main.yml
   vars:
     qmp_port_str: "{{ kdevops_qmp_str }}"
-  tags: [ 'cxl-dcd-setup' ]
+  tags: ["cxl-dcd-setup"]
   when:
     - kdevops_enable_cxl_dcd|bool
 
 - name: Set the path to cxl workflow
-  set_fact:
+  ansible.builtin.set_fact:
     cxl_workflow_target: "../workflows/cxl/"
-  tags: [ 'ndctl', 'cxl-test-prep', 'copy_results' ]
+  tags: ["ndctl", "cxl-test-prep", "copy_results"]
 
 - name: Get used target kernel version
-  tags: [ 'ndctl', 'cxl-test-prep', 'copy_results' ]
-  command: "uname -r"
+  tags: ["ndctl", "cxl-test-prep", "copy_results"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Store last kernel variable
-  set_fact:
-    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\",'') }}"
-  tags: [ 'ndctl', 'cxl-test-prep', 'copy_results' ]
+  ansible.builtin.set_fact:
+    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\", '') }}"
+  tags: ["ndctl", "cxl-test-prep", "copy_results"]
   run_once: true
 
 - name: Set the path where we collect our cxl results
-  set_fact:
+  ansible.builtin.set_fact:
     cxl_results_full_path: "{{ topdir_path }}/workflows/selftests/results/"
     cxl_workflow_dir: "../workflows/cxl"
     cxl_results_target: "../workflows/cxl/results/last-run/{{ last_kernel }}"
-  tags: [ 'ndctl', 'cxl-test-prep', 'copy_results' ]
+  tags: ["ndctl", "cxl-test-prep", "copy_results"]
 
 - name: Print uname for each host
-  tags: [ 'ndctl', 'cxl-test-prep', 'copy_results' ]
-  debug: var=ansible_kernel
-
+  tags: ["ndctl", "cxl-test-prep", "copy_results"]
+  ansible.builtin.debug:
+    var: ansible_kernel
 - name: Clear out old meson results directory on target hosts
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     state: absent
     path: "{{ ndctl_data }}/{{ ndctl_meson_testlog }}"
-  tags: [ 'ndctl', 'cxl-test-prep', 'copy_results' ]
+  tags: ["ndctl", "cxl-test-prep", "copy_results"]
 
 - name: Load configfs module
-  tags: [ 'ndctl', 'cxl-test-prep', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "modprobe configfs"
+  tags: ["ndctl", "cxl-test-prep", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "modprobe configfs"
   when:
     - kdevops_run_cxl_tests|bool
 
 - name: Enable low-level messages on console
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: sysctl kernel.printk="8 8 1 7"
-  tags: [ 'ndctl', 'cxl-test-prep', 'run_tests' ]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: sysctl kernel.printk="8 8 1 7"
+  tags: ["ndctl", "cxl-test-prep", "run_tests"]
   when:
     - kdevops_run_cxl_tests|bool
 
-- name: modprobe cxl_test
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "modprobe cxl_test"
-  tags: [ 'ndctl', 'cxl-test-probe', 'run_tests' ]
+- name: Modprobe cxl_test
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "modprobe cxl_test"
+  tags: ["ndctl", "cxl-test-probe", "run_tests"]
   args:
     chdir: "{{ ndctl_data }}"
   when:
     - kdevops_run_cxl_tests|bool
 
-- name: modprobe -r cxl_test
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "modprobe -r cxl_test"
-  tags: [ 'ndctl', 'cxl-test-probe', 'run_test' ]
+- name: Modprobe -r cxl_test
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "modprobe -r cxl_test"
+  tags: ["ndctl", "cxl-test-probe", "run_test"]
   args:
     chdir: "{{ ndctl_data }}"
   when:
     - kdevops_run_cxl_tests|bool
 
 - name: Run meson cxl unit test suite
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  ignore_errors: yes
-  no_log: True
-  command: "meson test -C build --suite cxl"
-  tags: [ 'ndctl', 'cxl-test-meson', 'run_tests' ]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ignore_errors: true
+  no_log: true
+  ansible.builtin.command: "meson test -C build --suite cxl"
+  tags: ["ndctl", "cxl-test-meson", "run_tests"]
   args:
     chdir: "{{ ndctl_data }}"
   when:
     - kdevops_run_cxl_tests|bool
 
 - name: Clean up our localhost results/last-run directory
-  local_action: file path="{{ cxl_results_target }}/{{ item }}" state=absent
+  ansible.builtin.file:
+    path: "{{ cxl_results_target }}/{{ item }}"
+    state: absent
+  delegate_to: localhost
   with_items:
     - "last-run"
   loop_control:
     label: "{{ item }}"
   run_once: true
-  tags: [ 'ndctl', 'cxl-test-meson', 'copy_results' ]
+  tags: ["ndctl", "cxl-test-meson", "copy_results"]
 
 - name: Create empty last-run directory
-  local_action: file path="{{ cxl_results_target }}/" state=directory
+  ansible.builtin.file:
+    path: "{{ cxl_results_target }}/"
+    state: directory
+  delegate_to: localhost
   run_once: true
-  tags: [ 'ndctl', 'cxl-test-meson', 'copy_results' ]
+  tags: ["ndctl", "cxl-test-meson", "copy_results"]
 
 - name: Document used target kernel version
-  local_action: "shell echo {{ last_kernel }} > {{ cxl_results_target }}/last-kernel.txt"
+  ansible.builtin.shell: echo {{ last_kernel }} > {{ cxl_results_target }}/last-kernel.txt
+  changed_when: false
+  delegate_to: localhost
   run_once: true
-  tags: [ 'ndctl', 'cxl-test-meson', 'copy_results' ]
+  tags: ["ndctl", "cxl-test-meson", "copy_results"]
 
 - name: Look for our test results {{ ndctl_meson_testlog | basename }}
-  tags: [ 'ndctl', 'cxl-test-meson', 'copy_results' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  find:
+  tags: ["ndctl", "cxl-test-meson", "copy_results"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.find:
     paths: "{{ ndctl_data }}"
-    recurse: yes
+    recurse: true
     patterns:
       - "{{ ndctl_meson_testlog | basename }}"
   register: output_log_files
 
 - name: Copy over our test result into {{ cxl_results_target }}
-  tags: [ 'ndctl', 'cxl-test-meson', 'copy_results' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["ndctl", "cxl-test-meson", "copy_results"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
     item_with_target: "{{ item.path | basename }}"
-  fetch:
+  ansible.builtin.fetch:
     src: "{{ item.path }}"
     dest: "{{ cxl_results_target }}/{{ item_with_target }}"
-    flat: yes
+    flat: true
   with_items: "{{ output_log_files.files }}"
   loop_control:
     label: "Copying {{ item_with_target }} ..."
diff --git a/playbooks/roles/devconfig/defaults/main.yml b/playbooks/roles/devconfig/defaults/main.yml
index 246ebcc..98dce31 100644
--- a/playbooks/roles/devconfig/defaults/main.yml
+++ b/playbooks/roles/devconfig/defaults/main.yml
@@ -10,8 +10,8 @@ dev_gitconfig_src: "~/.gitconfig"
 dev_gitconfig_dest: "{{ data_home_dir }}/.gitconfig"
 
 # The bash script we check for on the virtual machine
-dev_bash_config:  "{{ data_home_dir }}/.bashrc"
-dev_bash_config_root:  "/root/.bashrc"
+dev_bash_config: "{{ data_home_dir }}/.bashrc"
+dev_bash_config_root: "/root/.bashrc"
 
 dev_bash_config_hacks_name: "enhance-bash"
 dev_bash_config_hacks_src: "~/.{{ dev_bash_config_hacks_name }}"
@@ -19,42 +19,41 @@ dev_bash_config_hacks_generic: "~/.{{ dev_bash_config_hacks_name }}"
 dev_bash_config_hacks_dest: "{{ data_home_dir }}/.{{ dev_bash_config_hacks_name }}"
 dev_bash_config_hacks_root: "/root/.{{ dev_bash_config_hacks_name }}"
 
-devconfig_try_refresh_repos: False
-devconfig_try_upgrade: False
-devconfig_try_install_kdevtools: False
+devconfig_try_refresh_repos: false
+devconfig_try_upgrade: false
+devconfig_try_install_kdevtools: false
 
-devconfig_repos_addon: False
+devconfig_repos_addon: false
 devconfig_repos_addon_list:
-
-suse_register_system: False
+suse_register_system: false
 suse_registration_code: 0
 
-devconfig_enable_console: False
-devconfig_enable_kotd: False
-devconfig_has_kotd_repo: False
+devconfig_enable_console: false
+devconfig_enable_kotd: false
+devconfig_has_kotd_repo: false
 devconfig_kotd_repo: "http://ignore.com"
 devconfig_kotd_repo_name: "ignore"
-devconfig_enable_systemd_watchdog: False
+devconfig_enable_systemd_watchdog: false
 
-devconfig_enable_sysctl_tuning: False
-devconfig_enable_sysctl_mm_overcommit_memory: False
+devconfig_enable_sysctl_tuning: false
+devconfig_enable_sysctl_mm_overcommit_memory: false
 devconfig_sysctl_conf: "/etc/sysctl.conf"
 devconfig_sysctl_mm_overcommit_memory: 0
 
 rhel_org_id: ""
 rhel_activation_key: ""
 
-kdevops_cli_install: False
-devconfig_enable_systemd_journal_remote: False
+kdevops_cli_install: false
+devconfig_enable_systemd_journal_remote: false
 devconfig_systemd_journal_remote_url: "http://192.168.124.1"
 devconfig_systemd_journal_remote_path: "/var/log/journal/remote/"
 
-devconfig_enable_systemd_timesyncd: False
-devconfig_enable_systemd_timesyncd_ntp: False
-devconfig_enable_systemd_timesyncd_ntp_google: False
-devconfig_enable_systemd_timesyncd_ntp_debian: False
-devconfig_enable_systemd_timesyncd_ntp_google_debian: False
-kdevops_enable_guestfs: False
-guestfs_copy_sources_from_host_to_guest: False
-distro_debian_has_hop1_sources: False
-unattended_upgrades_installed: False
+devconfig_enable_systemd_timesyncd: false
+devconfig_enable_systemd_timesyncd_ntp: false
+devconfig_enable_systemd_timesyncd_ntp_google: false
+devconfig_enable_systemd_timesyncd_ntp_debian: false
+devconfig_enable_systemd_timesyncd_ntp_google_debian: false
+kdevops_enable_guestfs: false
+guestfs_copy_sources_from_host_to_guest: false
+distro_debian_has_hop1_sources: false
+unattended_upgrades_installed: false
diff --git a/playbooks/roles/devconfig/tasks/check-apt-mirrors.yml b/playbooks/roles/devconfig/tasks/check-apt-mirrors.yml
index 02e0c80..b9c4daf 100644
--- a/playbooks/roles/devconfig/tasks/check-apt-mirrors.yml
+++ b/playbooks/roles/devconfig/tasks/check-apt-mirrors.yml
@@ -1,54 +1,57 @@
 ---
 # Only run mirror checks for Debian testing (trixie) where mirror issues are common
 - name: Extract current APT mirror hostname
-  shell: |
+  ansible.builtin.shell: |
     grep -E "^deb\s+http" /etc/apt/sources.list | head -1 | awk '{print $2}' | sed 's|http://||' | cut -d'/' -f1
   register: apt_mirror_host
   changed_when: false
-  ignore_errors: yes
+  failed_when: false # Connectivity checks may fail gracefully
 
 - name: Check connectivity to current APT mirror
-  wait_for:
+  ansible.builtin.wait_for:
     host: "{{ apt_mirror_host.stdout }}"
     port: 80
     timeout: 10
   register: mirror_connectivity
-  ignore_errors: yes
+  failed_when: false # Connectivity checks may fail gracefully
   when: apt_mirror_host.stdout != ""
 
 - name: Display mirror check results
-  debug:
+  ansible.builtin.debug:
     msg: |
       Current APT mirror: {{ apt_mirror_host.stdout | default('Not found') }}
       Mirror connectivity: {{ 'OK' if mirror_connectivity is not failed else 'FAILED' }}
   when: apt_mirror_host.stdout != ""
 
 - name: Fall back to official Debian mirrors if current mirror fails
+  when:
+    - apt_mirror_host.stdout != ""
+    - mirror_connectivity is failed
   block:
     - name: Backup current sources.list
-      copy:
+      ansible.builtin.copy:
         src: /etc/apt/sources.list
         dest: /etc/apt/sources.list.backup
-        remote_src: yes
-      become: yes
+        remote_src: true
+      become: true
 
     - name: Apply Debian testing fallback sources
-      template:
+      ansible.builtin.template:
         src: debian-testing-fallback-sources.list
         dest: /etc/apt/sources.list
         owner: root
         group: root
-        mode: '0644'
-      become: yes
+        mode: "0644"
+      become: true
 
     - name: Update APT cache after mirror change
-      apt:
-        update_cache: yes
+      ansible.builtin.apt:
+        update_cache: true
         cache_valid_time: 0
-      become: yes
+      become: true
 
     - name: Inform user about mirror fallback
-      debug:
+      ansible.builtin.debug:
         msg: |
           WARNING: The configured APT mirror '{{ apt_mirror_host.stdout }}' is not accessible.
           Falling back to official Debian testing mirrors:
@@ -57,7 +60,3 @@
 
           This may result in slower package downloads depending on your location.
           Consider configuring a local mirror for better performance.
-
-  when:
-    - apt_mirror_host.stdout != ""
-    - mirror_connectivity is failed
diff --git a/playbooks/roles/devconfig/tasks/config-custom-repos-and-packages/main.yml b/playbooks/roles/devconfig/tasks/config-custom-repos-and-packages/main.yml
index 68ef9fb..0b561f3 100644
--- a/playbooks/roles/devconfig/tasks/config-custom-repos-and-packages/main.yml
+++ b/playbooks/roles/devconfig/tasks/config-custom-repos-and-packages/main.yml
@@ -1,4 +1,5 @@
+---
 - name: Distribution specific setup
-  import_tasks: redhat/main.yml
+  ansible.builtin.import_tasks: redhat/main.yml
   when:
     - ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/devconfig/tasks/config-custom-repos-and-packages/redhat/main.yml b/playbooks/roles/devconfig/tasks/config-custom-repos-and-packages/redhat/main.yml
index 93f40fa..9eb4169 100644
--- a/playbooks/roles/devconfig/tasks/config-custom-repos-and-packages/redhat/main.yml
+++ b/playbooks/roles/devconfig/tasks/config-custom-repos-and-packages/redhat/main.yml
@@ -1,21 +1,22 @@
+---
 - name: Add custom repositories
-  become: yes
-  become_method: sudo
-  copy:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     src: "{{ item }}"
     dest: "/etc/yum.repos.d/{{ item | basename }}"
     owner: root
     group: root
-    mode: 0644
+    mode: "0644"
   with_items: "{{ kdevops_devconfig_custom_repos | trim | split(',') }}"
   when:
     - kdevops_devconfig_custom_repos
     - kdevops_devconfig_custom_repos | trim | length > 1
 
 - name: Install custom packages
-  become: yes
-  become_method: sudo
-  yum:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name: "{{ item }}"
   retries: 3
   delay: 5
diff --git a/playbooks/roles/devconfig/tasks/install-deps/debian/main.yml b/playbooks/roles/devconfig/tasks/install-deps/debian/main.yml
index 6ffe00f..422315e 100644
--- a/playbooks/roles/devconfig/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/devconfig/tasks/install-deps/debian/main.yml
@@ -1,19 +1,19 @@
 ---
 - name: Check if unattended-upgrades is installed
-  command: dpkg-query -W -f='${Status}' unattended-upgrades
+  ansible.builtin.command: dpkg-query -W -f='${Status}' unattended-upgrades
   register: unattended_upgrade_status
   ignore_errors: true
   changed_when: false
   tags: firstconfig
 
 - name: Set fact if unattended-upgrades is installed
-  set_fact:
+  ansible.builtin.set_fact:
     unattended_upgrades_installed: "{{ 'install ok installed' in unattended_upgrade_status.stdout }}"
   when:
     - kdevops_enable_guestfs|bool
 
 - name: Verify unattended-upgrades is not installed
-  fail:
+  ansible.builtin.fail:
     msg: |
       The unattended-upgrades package is installed on the base image, this
       can cause tons of issues with CIs. Fix this by running the following
@@ -27,14 +27,14 @@
   tags: firstconfig
 
 - name: Stop and disable unattended-upgrades related services
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  systemd:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: "{{ item }}"
     state: stopped
-    enabled: no
-    daemon_reload: yes
+    enabled: false
+    daemon_reload: true
   loop:
     - unattended-upgrades
     - apt-daily.service
@@ -42,12 +42,12 @@
     - apt-daily-upgrade.service
     - apt-daily-upgrade.timer
     - systemd-networkd-wait-online.service
-  ignore_errors: yes
+  ignore_errors: true
   tags: firstconfig
 
 - name: Upgrade Packages
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.apt:
     update_cache: true
     upgrade: "yes"
@@ -59,10 +59,10 @@
   tags: firstconfig
 
 - name: Remove unattended-upgrades package in case upgrade installed it
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  apt:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name: unattended-upgrades
     state: absent
   register: removal_result
@@ -72,10 +72,10 @@
   tags: firstconfig
 
 - name: Remove optional unattended-upgrades configuration files if they exist
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ item }}"
     state: absent
   loop:
@@ -83,18 +83,18 @@
     - /etc/apt/apt.conf.d/02periodic
     - /etc/apt/apt.conf.d/50unattended-upgrades
     - /etc/apt/apt.conf.d/52unattended-upgrades-local
-  ignore_errors: yes
+  ignore_errors: true
   tags: firstconfig
 
 - name: Stop and disable unattended-upgrades related services
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  systemd:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: "{{ item }}"
     state: stopped
-    enabled: no
-    daemon_reload: yes
+    enabled: false
+    daemon_reload: true
   loop:
     - unattended-upgrades
     - apt-daily.service
@@ -102,17 +102,18 @@
     - apt-daily-upgrade.service
     - apt-daily-upgrade.timer
     - systemd-networkd-wait-online.service
-  ignore_errors: yes
+  ignore_errors: true
   tags: firstconfig
 
 - name: Allow for distro source change / upgrade
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "apt-get update  --allow-releaseinfo-change -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false -o Acquire::AllowInsecureRepositories=true -o Acquire::MaxDate=10"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "apt-get update  --allow-releaseinfo-change -o Acquire::Check-Valid-Until=false -o Acquire::Check-Date=false -o Acquire::AllowInsecureRepositories=true
+    -o Acquire::MaxDate=10"
   register: release_info_changed
   changed_when: release_info_changed.rc == 0
-  tags: [ 'apt', 'release-info-change' ]
+  tags: ["apt", "release-info-change"]
   when:
     - devconfig_try_upgrade|bool
 
@@ -126,9 +127,9 @@
     - guestfs_copy_sources_from_host_to_guest|bool
 
 - name: Write custom nsswitch.conf for hop1 mirror heuristic
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.copy:
     content: |
       # kdevops generated /etc/nsswitch.conf
@@ -146,7 +147,7 @@
     dest: /etc/nsswitch.conf
     owner: root
     group: root
-    mode: '0644'
+    mode: "0644"
   when:
     - distro_debian_has_hop1_sources|bool
     - guestfs_copy_sources_from_host_to_guest|bool
@@ -155,9 +156,9 @@
 - name: Configure APT to ignore `Valid-Until` timestamps on the host
   delegate_to: localhost
   run_once: true
-  become: yes
-  become_method: sudo
-  copy:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: |
       Acquire::Check-Valid-Until "false";
       Acquire::Check-Date "false";
@@ -169,9 +170,9 @@
     - guestfs_copy_sources_from_host_to_guest|bool
 
 - name: Configure APT to ignore `Valid-Until` timestamps on the target node
-  become: yes
-  become_method: sudo
-  copy:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: |
       Acquire::Check-Valid-Until "false";
       Acquire::Check-Date "false";
@@ -185,45 +186,45 @@
 - name: Ensure we make Valid-Until trick take effect on host
   delegate_to: localhost
   run_once: true
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
   when:
     - distro_debian_has_hop1_sources|bool
     - guestfs_copy_sources_from_host_to_guest|bool
 
 - name: Ensure we make Valid-Until trick take effect on target node
-  become: yes
-  become_method: sudo
-  become_flags: 'su - -c'
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  become_flags: "su - -c"
+  ansible.builtin.apt:
+    update_cache: true
   when:
     - distro_debian_has_hop1_sources|bool
     - guestfs_copy_sources_from_host_to_guest|bool
 
 - name: Update apt cache and do dist-upgrade
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
     upgrade: full
-  tags: [ 'apt', 'cache' ]
+  tags: ["apt", "cache"]
   when:
     - devconfig_try_upgrade|bool
 
 - name: Reboot system to make the new kernel and modules take effect
-  become: yes
-  become_method: sudo
-  reboot:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
   when:
     - devconfig_try_upgrade|bool
 
 - name: Install our generic dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - grub2
       - nvme-cli
@@ -255,15 +256,15 @@
       - trace-cmd
       - linux-perf
     state: present
-    update_cache: yes
-  tags: [ 'kdevops', 'deps' ]
+    update_cache: true
+  tags: ["kdevops", "deps"]
   when:
     - devconfig_try_install_kdevtools|bool
 
 - name: Set up snmp
-  become: yes
-  become_method: sudo
-  template:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: snmpd.conf
     dest: /etc/snmp/snmpd.conf
   when:
@@ -271,20 +272,20 @@
   tags: snmpd
 
 - name: Enable snmpd service
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: snmpd
-    enabled: yes
-    masked: no
+    enabled: true
+    masked: false
   tags: snmpd
   when:
     - devconfig_try_install_kdevtools|bool
 
 - name: Start snmpd service
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: snmpd
     state: restarted
   tags: snmpd
@@ -292,9 +293,9 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Install and sets up kdump
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - kdump-tools
   when:
@@ -302,20 +303,20 @@
   tags: kdump
 
 - name: Install systemd-journal-remote
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - systemd-journal-remote
-    update_cache: yes
+    update_cache: true
   when:
     - devconfig_enable_systemd_journal_remote|bool
   tags: journal
 
 - name: Install systemd-timesyncd
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - systemd-timesyncd
   when:
diff --git a/playbooks/roles/devconfig/tasks/install-deps/main.yml b/playbooks/roles/devconfig/tasks/install-deps/main.yml
index bd5fa6d..68ad9e7 100644
--- a/playbooks/roles/devconfig/tasks/install-deps/main.yml
+++ b/playbooks/roles/devconfig/tasks/install-deps/main.yml
@@ -1,26 +1,26 @@
 ---
 - name: Gather os_family
-  setup:
+  ansible.builtin.setup:
     gather_subset:
       - "os_family"
   when: ansible_os_family is not defined
   tags: vars_simple
 
 - name: Import optional user secret specific variables
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "secret.yml"
+        - "secret.yml"
       skip: true
   tags: vars
 
 - name: Import optional distribution specific variables
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "{{ ansible_facts['os_family']|lower }}.yml"
+        - "{{ ansible_facts['os_family'] | lower }}.yml"
       skip: true
   tags: vars
 
diff --git a/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml b/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml
index 6c38d55..7aa02a3 100644
--- a/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml
@@ -2,7 +2,7 @@
 # Install dependenciesfor oscheck on Red Hat based systems
 
 - name: Register system with Red Hat
-  become: yes
+  become: true
   community.general.redhat_subscription:
     state: present
     org_id: "{{ rhel_org_id }}"
@@ -13,21 +13,21 @@
     - rhel_activation_key
 
 - name: Check whether custom repofile exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ devconfig_custom_yum_repofile }}"
   register: custom_repofile
   delegate_to: localhost
   when: devconfig_custom_yum_repofile
 
 - name: Add custom yum repo
-  become: yes
-  become_method: sudo
-  copy:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     src: "{{ devconfig_custom_yum_repofile }}"
     dest: "/etc/yum.repos.d/{{ devconfig_custom_yum_repofile | basename }}"
     owner: root
     group: root
-    mode: 0644
+    mode: "0644"
   when:
     - devconfig_custom_yum_repofile
     - custom_repofile.stat.exists
@@ -51,11 +51,11 @@
     state: present
 
 - name: Refresh cache and upgrade all present packages
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
-    name: '*'
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
+    name: "*"
     state: latest
   retries: 3
   delay: 5
@@ -65,9 +65,9 @@
     - devconfig_try_upgrade|bool
 
 - name: Reboot system to make the new kernel and modules take effect
-  become: yes
-  become_method: sudo
-  reboot:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
   when:
     - devconfig_try_upgrade|bool
 
@@ -78,7 +78,7 @@
     - ansible_distribution != "Fedora"
 
 - name: Build install package list
-  set_fact:
+  ansible.builtin.set_fact:
     packages:
       - bison
       - flex
@@ -108,31 +108,31 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Add btrfs-progs to install package list
-  set_fact:
-    packages: "{{ packages + [ 'btrfs-progs' ] }}"
+  ansible.builtin.set_fact:
+    packages: "{{ packages + ['btrfs-progs'] }}"
   when:
     - devconfig_try_install_kdevtools|bool
     - ansible_distribution == 'Fedora'
 
 - name: Add GNU screen to install package list
-  set_fact:
-    packages: "{{ packages + [ 'screen' ] }}"
+  ansible.builtin.set_fact:
+    packages: "{{ packages + ['screen'] }}"
   when:
     - devconfig_try_install_kdevtools|bool
     - ansible_facts['os_family']|lower != 'redhat' or ansible_facts['distribution_major_version'] | int < 8
 
 - name: Add Tmux to install package list
-  set_fact:
-    packages: "{{ packages + [ 'tmux' ] }}"
+  ansible.builtin.set_fact:
+    packages: "{{ packages + ['tmux'] }}"
   when:
     - devconfig_try_install_kdevtools|bool
     - ansible_facts['os_family']|lower == 'redhat' or ansible_facts['distribution_major_version'] | int >= 8
 
 - name: Install packages we typically care about
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
@@ -142,9 +142,9 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Set up snmp
-  become: yes
-  become_method: sudo
-  template:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: snmpd.conf
     dest: /etc/snmp/snmpd.conf
   when:
@@ -152,20 +152,20 @@
   tags: snmpd
 
 - name: Enable snmpd service
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: snmpd
-    enabled: yes
-    masked: no
+    enabled: true
+    masked: false
   tags: snmpd
   when:
     - devconfig_try_install_kdevtools|bool
 
 - name: Start snmpd service
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: snmpd
     state: restarted
   tags: snmpd
@@ -173,10 +173,10 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Install systemd-journal-remote
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "systemd-journal-remote"
   retries: 3
   delay: 5
@@ -188,10 +188,10 @@
   tags: journal
 
 - name: Install systemd-timesyncd
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: systemd-udev
   retries: 3
   delay: 5
diff --git a/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml b/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml
index 5c72337..3346a5f 100644
--- a/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml
@@ -1,13 +1,13 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Set SLE specific version labels to make checks easier
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle10: '{{ ansible_distribution_major_version == "10" }}'
     is_sle11: '{{ ansible_distribution_major_version == "11" }}'
     is_sle12: '{{ ansible_distribution_major_version == "12" }}'
@@ -23,138 +23,138 @@
     is_sle15sp4: '{{ ansible_distribution_version == "15.4" }}'
   when:
     - is_sle|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Set SLE specific version labels to make checks easier when not SLE
-  set_fact:
-    is_sle10: False
-    is_sle11: False
-    is_sle12: False
-    is_sle15: False
-    is_sle10sp3: False
-    is_sle11sp1: False
-    is_sle11sp4: False
-    is_sle12sp1: False
-    is_sle12sp3: False
-    is_sle12sp5: False
-    is_sle15sp2: False
-    is_sle15sp3: False
-    is_sle15sp4: False
+  ansible.builtin.set_fact:
+    is_sle10: false
+    is_sle11: false
+    is_sle12: false
+    is_sle15: false
+    is_sle10sp3: false
+    is_sle11sp1: false
+    is_sle11sp4: false
+    is_sle12sp1: false
+    is_sle12sp3: false
+    is_sle12sp5: false
+    is_sle15sp2: false
+    is_sle15sp3: false
+    is_sle15sp4: false
   when:
     - not is_sle|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: The default is to assume we have figured out how to add repos for each
-  set_fact:
+  ansible.builtin.set_fact:
     repos_will_be_added: true
   tags: vars
 
 - name: Disable things which require a repo to be set but that cannot be done
-  set_fact:
+  ansible.builtin.set_fact:
     repos_will_be_added: false
   when:
     - not devconfig_repos_addon|bool
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: The default is to assume we are not on sle11 or sle10
-  set_fact:
+  ansible.builtin.set_fact:
     sle10_or_11: false
   tags: snmpd
 
 - name: Are we on SLE11 or SLE10?
-  set_fact:
+  ansible.builtin.set_fact:
     sle10_or_11: true
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: The default is to assume all distros supports nvme-utils
-  set_fact:
+  ansible.builtin.set_fact:
     lacks_nvme_utils: false
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Does this release lack nvme-utils
-  set_fact:
+  ansible.builtin.set_fact:
     lacks_nvme_utils: true
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool or is_sle12sp1|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: The default is to assume all distros supports git-core
-  set_fact:
+  ansible.builtin.set_fact:
     lacks_git_core: false
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Does this release lack git-core
-  set_fact:
+  ansible.builtin.set_fact:
     lacks_git_core: true
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool or is_sle12sp1|bool or is_sle12sp3|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Does this release use the package name git assume false
-  set_fact:
+  ansible.builtin.set_fact:
     use_git_package: false
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 # This needs perl-Error, so fix that first
 - name: Does this release use the package name git
-  set_fact:
+  ansible.builtin.set_fact:
     use_git_package: true
   when:
     - is_sle|bool
     - is_sle12sp3|bool
     - false
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: The default is to assume all distros supports xfsdump
-  set_fact:
+  ansible.builtin.set_fact:
     lacks_xfsdump: false
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Does this release lack xfsdump
-  set_fact:
+  ansible.builtin.set_fact:
     lacks_xfsdump: true
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: The default is to assume all distros have fio on the main repo
-  set_fact:
-    lacks_fio_main_repo: False
-  tags: [ 'vars' ]
+  ansible.builtin.set_fact:
+    lacks_fio_main_repo: false
+  tags: ["vars"]
 
 # SLES12-SP1 has fio but on ses/2.1/x86_64 repo, and you need another
 # registration key for that. We simply skip fio on it, but only if
 # registering a system. If we use internal repos, it likely *should*
 # be available.
 - name: Does this release lack fio on the main repository
-  set_fact:
-    lacks_fio_main_repo: True
+  ansible.builtin.set_fact:
+    lacks_fio_main_repo: true
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool or is_sle12sp1|bool or is_sle12sp3|bool or is_sle12sp5|bool
     - suse_register_system|bool or devconfig_repos_addon|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Verify SLE/SLED systems are being registered
-  fail:
+  ansible.builtin.fail:
     msg: "System is SLE/SLED, must include SUSE registration info on playbooks/secret.yml with suse_register_system and suse_registration_code variables set."
   when:
     - not devconfig_repos_addon|bool
-    - 'is_sle|bool'
-    - 'not suse_register_system|bool'
+    - "is_sle|bool"
+    - "not suse_register_system|bool"
 
 - name: Prepare packages source list and register machine
-  become: yes
-  become_method: sudo
-  script:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.script:
     cmd: "{{ role_path }}/scripts/prepare_suse_repos.sh --register-system-code {{ suse_registration_code }}"
   when:
     - suse_register_system|bool
@@ -162,31 +162,31 @@
     - suse_registration_code != 0
 
 - name: Assume we have the python2 product for sles15sp first
-  set_fact:
-    sle15_has_python2_product: True
+  ansible.builtin.set_fact:
+    sle15_has_python2_product: true
   when:
     - suse_register_system|bool
     - repos_will_be_added|bool
     - suse_registration_code != 0
     - is_sle15|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Disable the python2 product for sles15sp4
-  set_fact:
-    sle15_has_python2_product: False
+  ansible.builtin.set_fact:
+    sle15_has_python2_product: false
   when:
     - suse_register_system|bool
     - repos_will_be_added|bool
     - suse_registration_code != 0
     - is_sle15|bool
     - is_sle15sp4|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 
 - name: Register for python2 module product when needed
-  become: yes
-  become_method: sudo
-  command: "SUSEConnect -p sle-module-python2/{{ ansible_distribution_version }}/{{ ansible_architecture }}"
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "SUSEConnect -p sle-module-python2/{{ ansible_distribution_version }}/{{ ansible_architecture }}"
   when:
     - suse_register_system|bool
     - repos_will_be_added|bool
@@ -195,9 +195,9 @@
     - sle15_has_python2_product|bool
 
 - name: Add extra addon repositories when enabled
-  become: yes
-  become_method: sudo
-  script:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.script:
     cmd: "{{ role_path }}/scripts/add-suse-repo-if-not-found.sh {{ item.url }} {{ item.name }}"
   with_items:
     - "{{ devconfig_repos_addon_list }}"
@@ -207,11 +207,11 @@
     - devconfig_repos_addon|bool
 
 - name: Install missing python-xml for releases that need it manually
-  become: yes
-  become_method: sudo
-  command:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: "zypper in -y python-xml"
-    warn: no
+    warn: false
   when:
     - (suse_register_system|bool and suse_registration_code != 0) or devconfig_repos_addon|bool
     - repos_will_be_added|bool
@@ -219,9 +219,9 @@
     - is_sle15|bool
 
 - name: Prepare packages source list
-  become: yes
-  become_method: sudo
-  script:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.script:
     cmd: "{{ role_path }}/scripts/prepare_suse_repos.sh"
   when:
     - not suse_register_system|bool
@@ -229,27 +229,27 @@
     - repos_will_be_added|bool
 
 - name: Do full upgrade
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     state: dist-upgrade
-    name: '*'
+    name: "*"
   when:
     - repos_will_be_added|bool
     - devconfig_try_upgrade|bool
 
 - name: Reboot system to make the new kernel and modules take effect
-  become: yes
-  become_method: sudo
-  reboot:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
   when:
     - repos_will_be_added|bool
     - devconfig_try_upgrade|bool
 
 - name: Install nvme tools
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - nvme-cli
     state: present
@@ -259,9 +259,9 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Install fio when possible
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - fio
     state: present
@@ -271,9 +271,9 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Install git-core when possible
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - git-core
     state: present
@@ -283,9 +283,9 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Install git when possible
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - git
     state: present
@@ -295,9 +295,9 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Install xfsdump when possible
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - xfsdump
     state: present
@@ -307,9 +307,9 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Install packages on newer distro when possible
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - bison
       - libaio-devel
@@ -322,9 +322,9 @@
 
 # sle12sp3 needs m4 to install flex, fix that first
 - name: Install packages not available on sle11 or sle10
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - dump
       - flex
@@ -338,9 +338,9 @@
 
 # fix this for sle12sp3
 - name: Install packages we typically care about
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - e2fsprogs
       - xfsprogs
@@ -367,23 +367,23 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Set default values for if we install snmp / kdump
-  set_fact:
-    install_snmp: False
-    install_kdump: False
-  tags: [ 'vars' ]
+  ansible.builtin.set_fact:
+    install_snmp: false
+    install_kdump: false
+  tags: ["vars"]
 
 - name: Set if we install snmp / kdump
-  set_fact:
-    install_snmp: True
-    install_kdump: True
+  ansible.builtin.set_fact:
+    install_snmp: true
+    install_kdump: true
   when:
     - is_sle15|bool or is_tumbleweed
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Install snmp
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - net-snmp
   when:
@@ -393,9 +393,9 @@
   tags: snmpd
 
 - name: Set up snmp
-  become: yes
-  become_method: sudo
-  template:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: snmpd.conf
     dest: /etc/snmp/snmpd.conf
   when:
@@ -405,12 +405,12 @@
   tags: snmpd
 
 - name: Enable snmpd service
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: snmpd
-    enabled: yes
-    masked: no
+    enabled: true
+    masked: false
   when:
     - install_snmp|bool
     - repos_will_be_added|bool
@@ -418,9 +418,9 @@
   tags: snmpd
 
 - name: Start snmpd service
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: snmpd
     state: restarted
   when:
@@ -430,9 +430,9 @@
   tags: snmpd
 
 - name: Install kdump
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - kdump
   when:
@@ -442,10 +442,11 @@
   tags: kdump
 
 - name: Get kdump calibration high
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  shell: kdumptool calibrate | grep ^High | awk '{print $2}'
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: kdumptool calibrate | grep ^High | awk '{print $2}'
+  changed_when: false
   register: kdump_high
   when:
     - install_kdump|bool
@@ -454,10 +455,11 @@
   tags: kdump
 
 - name: Get kdump calibration low
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  shell: kdumptool calibrate | grep ^Low | awk '{print $2}'
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: kdumptool calibrate | grep ^Low | awk '{print $2}'
+  changed_when: false
   register: kdump_low
   when:
     - install_kdump|bool
@@ -466,39 +468,39 @@
   tags: kdump
 
 - name: Check to see if kdump is configured on your GRUB config
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: kdump_grep
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_CMDLINE_LINUX=\")(.*)(\s*)crashkernel(.*)'
-    line: ''
-  check_mode: yes
+    line: ""
+  check_mode: true
   when:
     - install_kdump|bool
     - repos_will_be_added|bool
     - devconfig_try_install_kdevtools|bool
-  tags: [ 'kdump' ]
+  tags: ["kdump"]
 
 - name: Update GRUB configuration to add kdump knobs
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_CMDLINE_LINUX=\")((\s*)(.*)*)(\s*)"$'
-    backrefs: yes
+    backrefs: true
     line: '\1\2 crashkernel={{ kdump_high.stdout }}M,high crashkernel={{ kdump_low.stdout }}M,low"'
   when:
     - not kdump_grep.changed
     - install_kdump|bool
     - repos_will_be_added|bool
     - devconfig_try_install_kdevtools|bool
-  tags: [ 'kdump' ]
+  tags: ["kdump"]
 
 - name: Update your boot GRUB file if necessary
-  import_tasks: update-grub/main.yml
+  ansible.builtin.import_tasks: update-grub/main.yml
   when:
     - not kdump_grep.changed
     - install_kdump|bool
@@ -506,18 +508,18 @@
     - devconfig_try_install_kdevtools|bool
 
 - name: Reboot system to ensure kdump is effective
-  become: yes
-  become_method: sudo
-  reboot:
-  tags: [ 'kdump' ]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
+  tags: ["kdump"]
 
 - name: Enable kdump service
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: kdump
-    enabled: yes
-    masked: no
+    enabled: true
+    masked: false
   when:
     - install_kdump|bool
     - repos_will_be_added|bool
@@ -525,9 +527,9 @@
   tags: kdump
 
 - name: Start kdump service
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: kdump
     state: restarted
   when:
@@ -537,9 +539,9 @@
   tags: kdump
 
 - name: Install systemd-journal-remote
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - systemd-journal-remote
   when:
@@ -548,9 +550,9 @@
   tags: journal
 
 - name: Install systemd-timesyncd
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - systemd-timesyncd
   when:
diff --git a/playbooks/roles/devconfig/tasks/kotd-rev-kernel/debian/main.yml b/playbooks/roles/devconfig/tasks/kotd-rev-kernel/debian/main.yml
index 914bb97..9989254 100644
--- a/playbooks/roles/devconfig/tasks/kotd-rev-kernel/debian/main.yml
+++ b/playbooks/roles/devconfig/tasks/kotd-rev-kernel/debian/main.yml
@@ -1,30 +1,30 @@
 ---
 - name: Allow for distro source change / upgrade
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "apt-get update  --allow-releaseinfo-change"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "apt-get update  --allow-releaseinfo-change"
   register: release_info_changed
   changed_when: "release_info_changed.rc == 0"
   args:
-    warn: no
-  tags: [ 'apt', 'release-info-change' ]
+    warn: false
+  tags: ["apt", "release-info-change"]
   when:
     - devconfig_try_upgrade|bool
 
 - name: Update apt cache and do dist-upgrade
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
     upgrade: full
-  tags: [ 'apt', 'cache' ]
+  tags: ["apt", "cache"]
   when:
     - devconfig_try_upgrade|bool
 
 - name: Reboot system to make the new kernel and modules take effect
-  become: yes
-  become_method: sudo
-  reboot:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
   when:
     - devconfig_try_upgrade|bool
diff --git a/playbooks/roles/devconfig/tasks/kotd-rev-kernel/main.yml b/playbooks/roles/devconfig/tasks/kotd-rev-kernel/main.yml
index f453afb..e7d7ca8 100644
--- a/playbooks/roles/devconfig/tasks/kotd-rev-kernel/main.yml
+++ b/playbooks/roles/devconfig/tasks/kotd-rev-kernel/main.yml
@@ -1,67 +1,77 @@
 ---
 - name: Import optional user secret specific variables
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "secret.yml"
+        - "secret.yml"
       skip: true
   tags: vars
 
 - name: Import optional distribution specific variables
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "{{ ansible_facts['os_family']|lower }}.yml"
+        - "{{ ansible_facts['os_family'] | lower }}.yml"
       skip: true
   tags: vars
 
 - name: Set the path where we collect our kotd updates
-  set_fact:
+  ansible.builtin.set_fact:
     kotd_uname_before: "../.kotd.uname-before.txt"
-    kotd_uname_after:  "../.kotd.uname-after.txt"
-  tags: [ 'vars' ]
+    kotd_uname_after: "../.kotd.uname-after.txt"
+  tags: ["vars"]
 
 - name: Get used target kernel version prior to reving kernel
-  tags: [ 'kotd' ]
-  command: "uname -r"
+  tags: ["kotd"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Document used target kernel version prior to reving kernel
-  local_action: "shell echo {{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') }} > {{ kotd_uname_before }}"
-  tags: [ 'kotd' ]
+  ansible.builtin.shell: echo {{ uname_cmd.stdout_lines | regex_replace('\]') | regex_replace('\[') }} > {{ kotd_uname_before }}
+  changed_when: false
+  delegate_to: localhost
+  tags: ["kotd"]
   run_once: true
 
 # tasks to setup up repos, register system if needed and install
 # preferred devtools packages.
 - name: Distribution specific setup
-  import_tasks: debian/main.yml
+  ansible.builtin.import_tasks: debian/main.yml
   when:
     - ansible_facts['os_family']|lower == 'debian'
     - devconfig_try_refresh_repos|bool
-- import_tasks: suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: suse/main.yml
   when:
     - ansible_facts['os_family']|lower == 'suse'
     - devconfig_try_refresh_repos|bool
-- import_tasks: redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: redhat/main.yml
   when:
     - ansible_facts['os_family']|lower == 'redhat'
     - devconfig_try_refresh_repos|bool
 
 - name: Check kernel uname
-  tags: [ 'kotd' ]
-  debug:
+  tags: ["kotd"]
+  ansible.builtin.debug:
     msg: "Running kernel {{ running_kernel }}"
   vars:
     running_kernel: "{{ uname_cmd.stdout_lines.0 }}"
 
 - name: Get used target kernel version after reving kernel
-  tags: [ 'kotd' ]
-  command: "uname -r"
+  tags: ["kotd"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Document used target kernel version after reving kernel
-  local_action: "shell echo {{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') }} > {{ kotd_uname_after }}"
-  tags: [ 'kotd' ]
+  ansible.builtin.shell: echo {{ uname_cmd.stdout_lines | regex_replace('\]') | regex_replace('\[') }} > {{ kotd_uname_after }}
+  changed_when: false
+  delegate_to: localhost
+  tags: ["kotd"]
   run_once: true
diff --git a/playbooks/roles/devconfig/tasks/kotd-rev-kernel/redhat/main.yml b/playbooks/roles/devconfig/tasks/kotd-rev-kernel/redhat/main.yml
index a23af0f..9f8ccb9 100644
--- a/playbooks/roles/devconfig/tasks/kotd-rev-kernel/redhat/main.yml
+++ b/playbooks/roles/devconfig/tasks/kotd-rev-kernel/redhat/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Add KOTD repository
-  become: yes
-  become_method: sudo
-  get_url:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.get_url:
     url: "{{ devconfig_kotd_repo }}"
     dest: /etc/yum.repos.d
   when:
@@ -10,11 +10,11 @@
     - devconfig_has_kotd_repo|bool
 
 - name: Parse repository id from repo file
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   vars:
-    repo_file: '{{ devconfig_kotd_repo | basename }}'
-  shell: grep -E '\[.*\]' /etc/yum.repos.d/{{ repo_file }} | tr -d '[]'
+    repo_file: "{{ devconfig_kotd_repo | basename }}"
+  ansible.builtin.shell: grep -E '\[.*\]' /etc/yum.repos.d/{{ repo_file }} | tr -d '[]'
   register: result
   changed_when: false
   when:
@@ -22,11 +22,11 @@
     - devconfig_has_kotd_repo|bool
 
 - name: Get kernel version from repository-packages
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   vars:
-    repo_id: '{{ result.stdout }}'
-  shell: dnf -q --repo={{ repo_id }} repoquery --qf "%{version}-%{release}" kernel.x86_64
+    repo_id: "{{ result.stdout }}"
+  ansible.builtin.shell: dnf -q --repo={{ repo_id }} repoquery --qf "%{version}-%{release}" kernel.x86_64
   register: result
   changed_when: false
   when:
@@ -34,14 +34,14 @@
     - devconfig_has_kotd_repo|bool
 
 - name: Install KOTD
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   vars:
-    kernel_version: '{{ result.stdout }}'
-    arch: 'x86_64'
+    kernel_version: "{{ result.stdout }}"
+    arch: "x86_64"
   ansible.builtin.dnf:
-    update_cache: yes
-    name: 'kernel-{{ kernel_version }}.{{ arch }}'
+    update_cache: true
+    name: "kernel-{{ kernel_version }}.{{ arch }}"
     disable_gpg_check: true
     sslverify: false
     state: present
@@ -50,8 +50,8 @@
     - devconfig_has_kotd_repo|bool
 
 - name: Reboot system to make the new kernel and modules take effect
-  become: yes
-  become_method: sudo
-  reboot:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
   when:
     - devconfig_try_upgrade|bool
diff --git a/playbooks/roles/devconfig/tasks/kotd-rev-kernel/suse/main.yml b/playbooks/roles/devconfig/tasks/kotd-rev-kernel/suse/main.yml
index a0c78d9..d2715f2 100644
--- a/playbooks/roles/devconfig/tasks/kotd-rev-kernel/suse/main.yml
+++ b/playbooks/roles/devconfig/tasks/kotd-rev-kernel/suse/main.yml
@@ -1,13 +1,13 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Set SLE specific version labels to make checks easier
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle10: '{{ ansible_distribution_major_version == "10" }}'
     is_sle11: '{{ ansible_distribution_major_version == "11" }}'
     is_sle12: '{{ ansible_distribution_major_version == "12" }}'
@@ -22,81 +22,81 @@
     is_sle15sp3: '{{ ansible_distribution_version == "15.3" }}'
   when:
     - is_sle|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Set SLE specific version labels to make checks easier when not SLE
-  set_fact:
-    is_sle10: False
-    is_sle11: False
-    is_sle12: False
-    is_sle15: False
-    is_sle10sp3: False
-    is_sle11sp1: False
-    is_sle11sp4: False
-    is_sle12sp1: False
-    is_sle12sp3: False
-    is_sle12sp5: False
-    is_sle15sp2: False
-    is_sle15sp3: False
+  ansible.builtin.set_fact:
+    is_sle10: false
+    is_sle11: false
+    is_sle12: false
+    is_sle15: false
+    is_sle10sp3: false
+    is_sle11sp1: false
+    is_sle11sp4: false
+    is_sle12sp1: false
+    is_sle12sp3: false
+    is_sle12sp5: false
+    is_sle15sp2: false
+    is_sle15sp3: false
   when:
     - not is_sle|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: The default is to assume we can add repos for a release
-  set_fact:
+  ansible.builtin.set_fact:
     repos_can_be_added: true
   tags: vars
 
 - name: Disable things which require a repo to be set but that cannot be done
-  set_fact:
+  ansible.builtin.set_fact:
     repos_can_be_added: false
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: The default is to assume we are not on sle11 or sle10
-  set_fact:
+  ansible.builtin.set_fact:
     sle10_or_11: false
   tags: snmpd
 
 - name: Are we on SLE11 or SLE10?
-  set_fact:
+  ansible.builtin.set_fact:
     sle10_or_11: true
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Add extra addon repositories when enabled
-  become: yes
-  become_method: sudo
-  script:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.script:
     cmd: "{{ role_path }}/scripts/add-suse-repo-if-not-found.sh {{ devconfig_kotd_repo }} {{ devconfig_kotd_repo_name }}"
   when:
     - devconfig_enable_kotd|bool
     - repos_can_be_added|bool
     - devconfig_has_kotd_repo|bool
-  tags: [ 'kotd' ]
+  tags: ["kotd"]
 
 - name: Install kotd
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - kernel-default
-    update_cache: yes
-    allow_vendor_change: yes
-    disable_recommends: no
-    force_resolution: yes
+    update_cache: true
+    allow_vendor_change: true
+    disable_recommends: false
+    force_resolution: true
     state: latest
-    force: yes
+    force: true
   when:
     - devconfig_enable_kotd|bool
-  tags: [ 'kotd' ]
+  tags: ["kotd"]
 
 - name: Reboot into kotd
-  tags: [ 'kotd' ]
-  become: yes
-  become_method: sudo
-  reboot:
+  tags: ["kotd"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
diff --git a/playbooks/roles/devconfig/tasks/main.yml b/playbooks/roles/devconfig/tasks/main.yml
index ceb0f2e..633d9af 100644
--- a/playbooks/roles/devconfig/tasks/main.yml
+++ b/playbooks/roles/devconfig/tasks/main.yml
@@ -1,30 +1,30 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars,vars_simple,vars_extra
 
 - name: Wait for target nodes to become reachable
-  wait_for_connection:
+  ansible.builtin.wait_for_connection:
 
 - name: Gathering facts
-  setup:
+  ansible.builtin.setup:
   tags: always
 
 # Update /etc/hostname first so the change gets picked up by the reboot
 # that occurs during the distro-specific tasks
 
 - name: Ensure /etc/hostname is set
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: hostname
     dest: /etc/hostname
   tags: hostname
@@ -33,14 +33,14 @@
 
 # Check and fix APT mirrors for Debian testing before installing dependencies
 - name: Check and fix APT mirrors for Debian testing
-  include_tasks: check-apt-mirrors.yml
+  ansible.builtin.include_tasks: check-apt-mirrors.yml
   when:
     - devconfig_debian_testing is defined
     - devconfig_debian_testing | bool
 
 - name: Install dependencies
   ansible.builtin.include_tasks: install-deps/main.yml
-  tags: ['vars', 'vars_simple']
+  tags: ["vars", "vars_simple"]
 
 - name: Configure custom repositories and install packages
   ansible.builtin.import_tasks: config-custom-repos-and-packages/main.yml
@@ -51,24 +51,24 @@
 
 - name: Check if /mirror directory exists on localhost
   delegate_to: localhost
-  stat:
+  ansible.builtin.stat:
     path: /mirror
   register: mirror_dir
   run_once: true
 
 - name: Create an empty gitconfig if it doesn't exist on the localhost
   delegate_to: localhost
-  file:
+  ansible.builtin.file:
     path: "{{ dev_gitconfig_src }}"
     state: touch
-    mode: '0644'
+    mode: "0644"
   when:
     - mirror_dir.stat.exists
   run_once: true
 
 - name: Check if any safe.directory entries exist
   delegate_to: localhost
-  command: git config --global --get-all safe.directory
+  ansible.builtin.command: git config --global --get-all safe.directory
   register: git_safe_dirs
   failed_when: false
   changed_when: false
@@ -77,7 +77,7 @@
 
 - name: Add safe.directory = * if not already set
   delegate_to: localhost
-  command: git config --global --add safe.directory '*'
+  ansible.builtin.command: git config --global --add safe.directory '*'
   when:
     - mirror_dir.stat.exists
     - "'*' not in git_safe_dirs.stdout_lines"
@@ -85,54 +85,54 @@
 
 - name: Check if the developer has a git config
   delegate_to: localhost
-  stat:
-    path={{ dev_gitconfig_src }}
+  ansible.builtin.stat:
+    path: "{{ dev_gitconfig_src }}"
   run_once: true
   register: dev_git_config_file
 
 - name: Copy the developer's gitconfig *if* it exists
-  copy:
-    src={{ dev_gitconfig_src }}
-    dest={{ dev_gitconfig_dest }}
+  ansible.builtin.copy:
+    src: "{{ dev_gitconfig_src }}"
+    dest: "{{ dev_gitconfig_dest }}"
   when: dev_git_config_file.stat.exists
 
 - name: Copy the developer's gitconfig *if* it exists to root
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  copy:
-    src={{ dev_gitconfig_dest }}
-    dest=/root/
-    remote_src=yes
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
+    src: "{{ dev_gitconfig_dest }}"
+    dest: "/root/"
+    remote_src: true
   when: dev_git_config_file.stat.exists
 
 - name: Check if the system has a user vimrc file
-  stat:
-    path=~/.vimrc
+  ansible.builtin.stat:
+    path: ~/.vimrc
   register: dev_vimrc_file
   tags: vimrc
 
 - name: Copy over our default kernel hacking vimrc
-  template:
+  ansible.builtin.template:
     src: vimrc
     dest: ~/.vimrc
   tags: vimrc
   when: not dev_vimrc_file.stat.exists
 
 - name: Check if the system has a user vimrc file as root
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  stat:
-    path=~/.vimrc
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.stat:
+    path: ~/.vimrc
   register: dev_root_vimrc_file
   tags: vimrc
 
 - name: Copy over our default kernel hacking vimrc for root
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: vimrc
     dest: ~/.vimrc
   tags: vimrc
@@ -140,19 +140,19 @@
 
 - name: Check if the developer has a configuration file with favorite bash hacks
   delegate_to: localhost
-  stat:
-    path={{ dev_bash_config_hacks_src }}
+  ansible.builtin.stat:
+    path: "{{ dev_bash_config_hacks_src }}"
   register: dev_bash_config_file
 
 - name: Copy the developer's favorite bash hacks over *if* it exists
-  copy:
-    src={{ dev_bash_config_hacks_src }}
-    dest={{ dev_bash_config_hacks_dest }}
+  ansible.builtin.copy:
+    src: "{{ dev_bash_config_hacks_src }}"
+    dest: "{{ dev_bash_config_hacks_dest }}"
   when: dev_bash_config_file.stat.exists
   register: dev_bash_config_file_copied
 
 - name: Source the developer's bash hack script
-  shell: |
+  ansible.builtin.shell: |
     SOURCE_BASH_HACKS="test -s {{ dev_bash_config_hacks_generic }}  && . {{ dev_bash_config_hacks_generic }} || true"
     if [ -f {{ dev_bash_config }} ]; then
       if ! grep "{{ dev_bash_config_hacks_name }}" {{ dev_bash_config }}  2>&1 > /dev/null ; then
@@ -168,20 +168,20 @@
   when: dev_bash_config_file_copied is success
 
 - name: Copy the developer's favorite bash hacks over for root *if* it exists
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  copy:
-    src={{ dev_bash_config_hacks_src }}
-    dest=/root/
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
+    src: "{{ dev_bash_config_hacks_src }}"
+    dest: "/root/"
   when: dev_bash_config_file.stat.exists
   register: dev_bash_config_file_copied_root
 
 - name: Source the developer's bash hack script for root
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  shell: |
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: |
     SOURCE_BASH_HACKS="test -s {{ dev_bash_config_hacks_generic }}  && . {{ dev_bash_config_hacks_generic }} || true"
     if [ -f {{ dev_bash_config_root }} ]; then
       if ! grep "{{ dev_bash_config_hacks_name }}" {{ dev_bash_config_root }}  2>&1 > /dev/null ; then
@@ -197,133 +197,133 @@
   when: dev_bash_config_file_copied_root is success
 
 - name: Check to see if system has GRUB2
-  stat:
-    path=/etc/default/grub
+  ansible.builtin.stat:
+    path: /etc/default/grub
   register: grub2_config_file
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Check to see if stupid /etc/default/grub.d/15_timeout.cfg exists
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  stat:
-    path=/etc/default/grub.d/15_timeout.cfg
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.stat:
+    path: /etc/default/grub.d/15_timeout.cfg
   register: stupid_cloud_grub_timeout
   when:
     - devconfig_enable_console|bool
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Remove stupid cloud /etc/default/grub.d/15_timeout.cfg
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: /etc/default/grub.d/15_timeout.cfg
     state: absent
   when:
     - devconfig_enable_console|bool
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Check to see if the GRUB GRUB_CMDLINE_LINUX is present
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: grub_cmdline_linux_grep
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_CMDLINE_LINUX=\")(.*)'
-    line: ''
-  check_mode: yes
+    line: ""
+  check_mode: true
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Check to see if the GRUB GRUB_CMDLINE_LINUX is empty
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: cmdline_linux_empty_grep
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_CMDLINE_LINUX)=\"\"'
-    line: ''
-  check_mode: yes
+    line: ""
+  check_mode: true
   when:
     - grub2_config_file.stat.exists
     - grub_cmdline_linux_grep.changed
     - devconfig_enable_console|bool
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Check to see if the consoleblank is used
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: console_blank_grep
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_CMDLINE_LINUX=\")(.*)(\s*)consoleblank(.*)'
-    line: ''
-  check_mode: yes
+    line: ""
+  check_mode: true
   when:
     - grub2_config_file.stat.exists
     - grub_cmdline_linux_grep.changed
     - devconfig_enable_console|bool
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Check to see if the console is already configured on your GRUB config
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: console_grep
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_CMDLINE_LINUX=\")(.*)(\s*)console(.*)'
-    line: ''
-  check_mode: yes
+    line: ""
+  check_mode: true
   when:
     - grub2_config_file.stat.exists
     - grub_cmdline_linux_grep.changed
     - devconfig_enable_console|bool
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Update GRUB configuration to add console kernel parameters
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_CMDLINE_LINUX=\")((\s*)(.*)*)(\s*)"$'
-    backrefs: yes
+    backrefs: true
     line: '\1\2 {{ devconfig_kernel_console }}"'
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
     - not console_grep.changed
     - not cmdline_linux_empty_grep.changed
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Update GRUB configuration to add console kernel parameters for consoleblank configs
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_CMDLINE_LINUX=\")((\s*)(.*)*)(\s*)"$'
-    backrefs: yes
+    backrefs: true
     line: '\1 {{ devconfig_kernel_console }}"'
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
     - console_blank_grep.changed|bool
     - not cmdline_linux_empty_grep.changed
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Add new GRUB console kernel parameters to your empty GRUB_CMDLINE_LINUX
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_CMDLINE_LINUX)=\"\"'
     line: 'GRUB_CMDLINE_LINUX="{{ devconfig_kernel_console }}"'
@@ -334,13 +334,13 @@
     - devconfig_enable_console|bool
     - cmdline_linux_empty_grep.changed
     - not console_grep.changed
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Add new GRUB GRUB_CMDLINE_LINUX with console kernel parameters
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     insertafter: EOF
     regexp: '^(GRUB_CMDLINE_LINUX=\")(.*)'
@@ -349,87 +349,87 @@
     - grub2_config_file.stat.exists
     - not grub_cmdline_linux_grep.changed
     - devconfig_enable_console|bool
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Check to see if the GRUB timeout is defined in your configuration
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: grub_timeout_grep
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
-    regexp: '^(GRUB_TIMEOUT=)(.*)'
-    line: ''
-  check_mode: yes
+    regexp: "^(GRUB_TIMEOUT=)(.*)"
+    line: ""
+  check_mode: true
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Update GRUB timeout
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
-    regexp: '^(GRUB_TIMEOUT=)(.*)'
-    line: 'GRUB_TIMEOUT={{ devconfig_grub_timeout }}'
+    regexp: "^(GRUB_TIMEOUT=)(.*)"
+    line: "GRUB_TIMEOUT={{ devconfig_grub_timeout }}"
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
     - grub_timeout_grep.changed
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Add GRUB timeout
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     insertafter: EOF
-    regexp: '^(GRUB_TIMEOUT=)(.*)'
-    line: 'GRUB_TIMEOUT={{ devconfig_grub_timeout }}'
+    regexp: "^(GRUB_TIMEOUT=)(.*)"
+    line: "GRUB_TIMEOUT={{ devconfig_grub_timeout }}"
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
     - not grub_timeout_grep
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Check to see if the GRUB serial command is defined
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: serial_command_grep
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_SERIAL_COMMAND=\")(.*)\"\s*"'
-    line: ''
-  check_mode: yes
+    line: ""
+  check_mode: true
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Update GRUB configuration to add GRUB console parameters if set
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     regexp: '^(GRUB_SERIAL_COMMAND=\")((\s*)(.*)*)(\s*)"$'
-    backrefs: yes
+    backrefs: true
     line: '\1{{ devconfig_grub_console }}"'
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
     - serial_command_grep.changed
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Add GRUB console parameters
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     insertafter: EOF
     regexp: '^(GRUB_SERIAL_COMMAND=\")(.*)'
@@ -438,56 +438,56 @@
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
     - not serial_command_grep.changed
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Check to see if the GRUB terminal settings is defined
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: grub_terminal_grep
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
-    regexp: '^(GRUB_TERMINAL)=(.*)'
-    line: ''
-  check_mode: yes
+    regexp: "^(GRUB_TERMINAL)=(.*)"
+    line: ""
+  check_mode: true
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
-  tags: [ 'console' ]
+  tags: ["console"]
 
 # We use "console serial" so to enable real consoles to be
 # preferred first, and fallback to the serial as secondary
 # option. This let's us work with hardware serial consoles
 # say on IPMIs and virtual guests ('virsh console').
 - name: Update GRUB terminal to be serial
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
-    regexp: '^(GRUB_TERMINAL=)(.*)$'
-    backrefs: yes
+    regexp: "^(GRUB_TERMINAL=)(.*)$"
+    backrefs: true
     line: '\1"console serial"'
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
     - grub_terminal_grep.changed
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Add GRUB terminal setting
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/default/grub
     insertafter: EOF
-    regexp: '^(GRUB_TERMINAL=)(.*)$'
+    regexp: "^(GRUB_TERMINAL=)(.*)$"
     line: 'GRUB_TERMINAL="console serial"'
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
     - not grub_terminal_grep.changed
-  tags: [ 'console' ]
+  tags: ["console"]
 
 - name: Update your boot GRUB file if necessary
   ansible.builtin.import_tasks: update-grub/main.yml
@@ -497,24 +497,24 @@
     - not console_grep.changed or console_blank_grep.changed
 
 - name: Set up the client /etc/systemd/journal-upload.conf
-  tags: [ 'journal' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  tags: ["journal"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "journal-upload.conf.j2"
     dest: "/etc/systemd/journal-upload.conf"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - devconfig_enable_systemd_journal_remote|bool
 
 - name: Enable and restart systemd-journal-upload.service on the client
-  tags: [ 'journal', 'journal-upload-restart' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["journal", "journal-upload-restart"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: systemd-journal-upload.service
     enabled: true
@@ -524,11 +524,11 @@
     - devconfig_enable_systemd_journal_remote|bool
 
 - name: Ensure systemd-journal-remote.service is running on the server
-  tags: [ 'journal-status' ]
+  tags: ["journal-status"]
   delegate_to: localhost
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: systemd-journal-remote.service
     state: started
@@ -537,10 +537,10 @@
     - devconfig_enable_systemd_journal_remote|bool
 
 - name: Ensure systemd-journal-upload.service is running
-  tags: [ 'journal-status' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["journal-status"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: systemd-journal-upload.service
     state: started
@@ -548,31 +548,31 @@
     - devconfig_enable_systemd_journal_remote|bool
 
 - name: Set up the client /etc/systemd/timesyncd.conf
-  tags: [ 'timesyncd' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  tags: ["timesyncd"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "timesyncd.conf.j2"
     dest: "/etc/systemd/timesyncd.conf"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - devconfig_enable_systemd_timesyncd|bool
 
 - name: Enable NTP on client
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "timedatectl set-ntp true"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "timedatectl set-ntp true"
   when:
     - devconfig_enable_systemd_timesyncd_ntp|bool
 
 - name: Restart systemd-timesyncd.service on the client
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: systemd-timesyncd.service
     daemon_reload: true
@@ -582,105 +582,103 @@
     - devconfig_enable_systemd_timesyncd|bool
 
 - name: Ensure systemd-timesyncd.service is running on the client
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "timedatectl status"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "timedatectl status"
   when:
     - devconfig_enable_systemd_timesyncd|bool
 
 - name: Gather ipv4 address
-  tags: [ 'journal_ln', 'vars_extra' ]
-  setup:
+  tags: ["journal_ln", "vars_extra"]
+  ansible.builtin.setup:
     gather_subset:
       - "all_ipv4_addresses"
   when:
     - devconfig_enable_systemd_journal_remote|bool
 
 - name: "Group up facts we'll give to the host"
-  tags: [ 'journal_ln' ]
-  set_fact:
-    node_host_ip: "{{ ansible_ssh_host}} {{ ansible_default_ipv4.address }}"
+  tags: ["journal_ln"]
+  ansible.builtin.set_fact:
+    node_host_ip: "{{ ansible_ssh_host }} {{ ansible_default_ipv4.address }}"
   delegate_facts: true
-  when:
-    devconfig_enable_systemd_journal_remote|bool
+  when: devconfig_enable_systemd_journal_remote|bool
 
 - name: Set up symlinks for journals
-  tags: [ 'journal_ln' ]
+  tags: ["journal_ln"]
   delegate_to: localhost
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{ topdir_path }}/workflows/kdevops/scripts/jounal-ln.sh {{ devconfig_systemd_journal_remote_path }} {{ node_host_ip }}"
-  when:
-    devconfig_enable_systemd_journal_remote|bool
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{ topdir_path }}/workflows/kdevops/scripts/jounal-ln.sh {{ devconfig_systemd_journal_remote_path }} {{ node_host_ip }}"
+  when: devconfig_enable_systemd_journal_remote|bool
 
 - name: Enables systemd's watchdog
-  stat:
-    path=/etc/systemd/system.conf
+  ansible.builtin.stat:
+    path: /etc/systemd/system.conf
   register: systemd_config_file
-  tags: [ 'systemd_watchdog' ]
+  tags: ["systemd_watchdog"]
 
 - name: Add systemd watchdog RuntimeWatchdogSec setting
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/systemd/system.conf
     insertafter: EOF
-    regexp: '^(RuntimeWatchdogSec=)(.*)$'
-    line: 'RuntimeWatchdogSec={{ devconfig_systemd_watchdog_runtime_timeout }}'
+    regexp: "^(RuntimeWatchdogSec=)(.*)$"
+    line: "RuntimeWatchdogSec={{ devconfig_systemd_watchdog_runtime_timeout }}"
   when:
     - systemd_config_file.stat.exists
     - devconfig_enable_systemd_watchdog|bool
-  tags: [ 'systemd_watchdog' ]
+  tags: ["systemd_watchdog"]
 
 - name: Add systemd watchdog RebootWatchdogSec setting
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/systemd/system.conf
     insertafter: EOF
-    regexp: '^(RebootWatchdogSec=)(.*)$'
-    line: 'RebootWatchdogSec={{ devconfig_systemd_watchdog_reboot_timeout }}'
+    regexp: "^(RebootWatchdogSec=)(.*)$"
+    line: "RebootWatchdogSec={{ devconfig_systemd_watchdog_reboot_timeout }}"
   when:
     - systemd_config_file.stat.exists
     - devconfig_enable_systemd_watchdog|bool
-  tags: [ 'systemd_watchdog' ]
+  tags: ["systemd_watchdog"]
 
 - name: Add systemd watchdog KExecWatchdogSec setting
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/systemd/system.conf
     insertafter: EOF
-    regexp: '^(KExecWatchdogSec=)(.*)$'
-    line: 'KExecWatchdogSec={{ devconfig_systemd_watchdog_kexec_timeout }}'
+    regexp: "^(KExecWatchdogSec=)(.*)$"
+    line: "KExecWatchdogSec={{ devconfig_systemd_watchdog_kexec_timeout }}"
   when:
     - systemd_config_file.stat.exists
     - devconfig_enable_systemd_watchdog|bool
-  tags: [ 'systemd_watchdog' ]
+  tags: ["systemd_watchdog"]
 
 - name: Set sysctl vm.overcommit_memory={{ devconfig_sysctl_mm_overcommit_memory }}
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.posix.sysctl:
     name: vm.overcommit_memory
     sysctl_file: "{{ devconfig_sysctl_conf }}"
     value: "{{ devconfig_sysctl_mm_overcommit_memory }}"
     state: present
-    sysctl_set: yes
-    reload: yes
+    sysctl_set: true
+    reload: true
   when:
     - devconfig_enable_sysctl_tuning
     - devconfig_enable_sysctl_mm_overcommit_memory
-  tags: [ 'sysctl' ]
+  tags: ["sysctl"]
 
 - name: Rev the kernel to the latest distribution kotd
   ansible.builtin.import_tasks: kotd-rev-kernel/main.yml
   when:
     - devconfig_enable_kotd|bool
-  tags: [ 'kotd' ]
+  tags: ["kotd"]
diff --git a/playbooks/roles/fstests/defaults/main.yml b/playbooks/roles/fstests/defaults/main.yml
index 17a7e52..2e91023 100644
--- a/playbooks/roles/fstests/defaults/main.yml
+++ b/playbooks/roles/fstests/defaults/main.yml
@@ -3,9 +3,9 @@
 # Our sensible defaults for the fstests role.
 #
 # We default to not run tests.
-kdevops_run_fstests: False
-fstests_skip_run: False
-infer_uid_and_group: False
+kdevops_run_fstests: false
+fstests_skip_run: false
+infer_uid_and_group: false
 
 # Ror instance you can use "-g quick" but note that this may produce
 # not results as all quick tests may be expunded.
@@ -14,14 +14,14 @@ limit_tests: ""
 dynamic_limit_tests:
 badname_arg: ""
 
-fstests_start_after: False
+fstests_start_after: false
 fstests_start_after_test: ""
 
-fstests_skip_tests_enable: False
+fstests_skip_tests_enable: false
 fstests_skip_tests: ""
 fstests_skip_tests_args: ""
 
-fstests_initial_baseline: False
+fstests_initial_baseline: false
 fstests_initial_baseline_args: ""
 
 fstests_git: "https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git"
@@ -34,37 +34,35 @@ fstests_test_dev: "/dev/null"
 fstests_test_logdev: "/dev/null"
 fstests_test_logdev_mkfs_opts: "/dev/null"
 fstests_test_dev_zns: "/dev/null"
-fstests_zns_enabled: False
+fstests_zns_enabled: false
 
-fstests_soak_duration_enable: False
+fstests_soak_duration_enable: false
 fstests_soak_duration: 0
 
-fstests_journal: False
+fstests_journal: false
 
-fstests_uses_no_devices: False
-fstests_generate_simple_config_enable: False
-fstests_generate_nvme_live_config_enable: False
+fstests_uses_no_devices: false
+fstests_generate_simple_config_enable: false
+fstests_generate_nvme_live_config_enable: false
 
-fstests_testdev_under_development: False
-fstests_testdev_sparsefile_generation: False
-fstests_testdev_nvme_partition_euis: False
-fstests_testdev_nvme_euis: False
+fstests_testdev_under_development: false
+fstests_testdev_sparsefile_generation: false
+fstests_testdev_nvme_partition_euis: false
+fstests_testdev_nvme_euis: false
 
-fstests_testdev_nvme_fallback_model_serial: False
+fstests_testdev_nvme_fallback_model_serial: false
 
 nvmes:
 nvme_symlinks: []
-
-sparsefiles_generation: False
+sparsefiles_generation: false
 sparsefiles_size: 0
 sparsefiles_filename_prefix: "sparse-disk"
 fstests_test_dir: "/media/test"
 
-fstests_debug: False
+fstests_debug: false
 
-compile_dbench: False
+compile_dbench: false
 run_large_disk_tests:
-
 kdevops_fstests_setup_name: "kdevops_fstests_setup"
 kdevops_fstests_setup: ".{{ kdevops_fstests_setup_name }}"
 
@@ -79,123 +77,123 @@ fstests_scratch_devpool: "/dev/loop5 /dev/loop6 /dev/loop7 /dev/loop8 /dev/loop9
 fstests_scratch_devpool_rtlogdev: "/dev/loop5 /dev/loop6 /dev/loop7 /dev/loop8 /dev/loop9 /dev/loop10 /dev/loop11"
 fstests_scratch_devpool_zns: "/dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1 /dev/nvme9n1 /dev/nvme10n1 /dev/nvme11n1 /dev/nvme12n1"
 
-run_auto_group_tests: 'n'
-run_custom_group_tests: ''
-exclude_test_groups: ''
-run_tests_on_failures: False
-fstests_debug_localhost: False
+run_auto_group_tests: "n"
+run_custom_group_tests: ""
+exclude_test_groups: ""
+run_tests_on_failures: false
+fstests_debug_localhost: false
 
-kdevops_bootlinux: False
+kdevops_bootlinux: false
 
-fstests_tfp_copy_enable: False
-fstests_tfp_copy_enable_list: False
+fstests_tfp_copy_enable: false
+fstests_tfp_copy_enable_list: false
 fstests_tfp_copy_size_limit_bytes: 10485760
 
-fstests_xfs_build_custom_xfsprogs: False
+fstests_xfs_build_custom_xfsprogs: false
 fstests_xfs_xfsprogs_data: "{{ data_path }}/xfsprogs"
-fstests_xfs_section_crc: False
-fstests_xfs_section_crc_logdev: False
-fstests_xfs_section_crc_rtdev: False
-fstests_xfs_section_crc_rtdev_extsize_28k: False
-fstests_xfs_section_crc_rtdev_extsize_64k: False
-fstests_xfs_section_crc_logdev_rtdev: False
-fstests_xfs_section_nocrc: False
-fstests_xfs_section_nocrc_512: False
-fstests_xfs_section_nocrc_1k: False
-fstests_xfs_section_nocrc_2k: False
-fstests_xfs_section_nocrc_4k: False
-fstests_xfs_section_nocrc_8k: False
-fstests_xfs_section_nocrc_8k_4ks: False
-fstests_xfs_section_nocrc_16k: False
-fstests_xfs_section_nocrc_16k_4ks: False
-fstests_xfs_section_nocrc_32k: False
-fstests_xfs_section_nocrc_32k_4ks: False
-fstests_xfs_section_nocrc_64k: False
-fstests_xfs_section_nocrc_64k_4ks: False
-fstests_xfs_section_reflink: False
-fstests_xfs_section_reflink_1024: False
-fstests_xfs_section_reflink_normapbt: False
-fstests_xfs_section_reflink_stripe_len: False
-fstests_xfs_section_reflink_nrext64: False
-fstests_xfs_section_reflink_logdev: False
-fstests_xfs_section_reflink_2k: False
-fstests_xfs_section_reflink_4k: False
-fstests_xfs_section_reflink_8k: False
-fstests_xfs_section_reflink_8k_4ks: False
-fstests_xfs_section_reflink_16k: False
-fstests_xfs_section_reflink_16k_4ks: False
-fstests_xfs_section_reflink_32k: False
-fstests_xfs_section_reflink_32k_4ks: False
-fstests_xfs_section_reflink_64k: False
-fstests_xfs_section_reflink_64k_4ks: False
-fstests_xfs_section_reflink_dir_bsize_8k: False
-
-fstests_xfs_section_bigblock: False
-
-fstests_btrfs_enables_raid56: False
-fstests_btrfs_enables_compression: False
-fstests_btrfs_enables_compression_zlib: False
-fstests_btrfs_enables_compression_lzo: False
-fstests_btrfs_enables_compression_zstd: False
-fstests_btrfs_enables_holes: False
-fstests_btrfs_enables_noholes: False
-fstests_btrfs_enables_fspace: False
-fstests_btrfs_enables_nohofspace: False
-fstests_btrfs_section_holes: False
-fstests_btrfs_section_holes_zlib: False
-fstests_btrfs_section_holes_lzo: False
-fstests_btrfs_section_holes_zstd: False
-fstests_btrfs_section_noholes: False
-fstests_btrfs_section_noholes_zlib: False
-fstests_btrfs_section_noholes_lzo: False
-fstests_btrfs_section_noholes_zstd: False
-fstests_btrfs_section_fspace: False
-fstests_btrfs_section_fspace_dsync: False
-fstests_btrfs_section_fspace_zlib: False
-fstests_btrfs_section_fspace_lzo: False
-fstests_btrfs_section_fspace_zstd: False
-fstests_btrfs_section_nohofspace: False
-fstests_btrfs_section_nohofspace_zlib: False
-fstests_btrfs_section_nohofspace_lzo: False
-fstests_btrfs_section_nohofspace_zstd: False
-fstests_btrfs_section_simple: False
-fstests_btrfs_section_simple_zns: False
-
-fstests_nfs_enable: False
-fstests_nfs_use_kdevops_nfsd: False
-fstests_nfs_section_pnfs: False
-fstests_nfs_section_rdma: False
-fstests_nfs_section_tls: False
-fstests_nfs_section_nfsd: False
-fstests_nfs_section_default: False
-fstests_nfs_section_v42: False
-fstests_nfs_section_v41: False
-fstests_nfs_section_v40: False
-fstests_nfs_section_v3: False
-
-fstests_cifs_enable: False
-fstests_cifs_use_kdevops_smbd: False
-fstests_cifs_section_smb3: False
-fstests_cifs_section_smb3_seal: False
-fstests_cifs_section_smb3_sign: False
-
-fstests_tmpfs_enable: False
+fstests_xfs_section_crc: false
+fstests_xfs_section_crc_logdev: false
+fstests_xfs_section_crc_rtdev: false
+fstests_xfs_section_crc_rtdev_extsize_28k: false
+fstests_xfs_section_crc_rtdev_extsize_64k: false
+fstests_xfs_section_crc_logdev_rtdev: false
+fstests_xfs_section_nocrc: false
+fstests_xfs_section_nocrc_512: false
+fstests_xfs_section_nocrc_1k: false
+fstests_xfs_section_nocrc_2k: false
+fstests_xfs_section_nocrc_4k: false
+fstests_xfs_section_nocrc_8k: false
+fstests_xfs_section_nocrc_8k_4ks: false
+fstests_xfs_section_nocrc_16k: false
+fstests_xfs_section_nocrc_16k_4ks: false
+fstests_xfs_section_nocrc_32k: false
+fstests_xfs_section_nocrc_32k_4ks: false
+fstests_xfs_section_nocrc_64k: false
+fstests_xfs_section_nocrc_64k_4ks: false
+fstests_xfs_section_reflink: false
+fstests_xfs_section_reflink_1024: false
+fstests_xfs_section_reflink_normapbt: false
+fstests_xfs_section_reflink_stripe_len: false
+fstests_xfs_section_reflink_nrext64: false
+fstests_xfs_section_reflink_logdev: false
+fstests_xfs_section_reflink_2k: false
+fstests_xfs_section_reflink_4k: false
+fstests_xfs_section_reflink_8k: false
+fstests_xfs_section_reflink_8k_4ks: false
+fstests_xfs_section_reflink_16k: false
+fstests_xfs_section_reflink_16k_4ks: false
+fstests_xfs_section_reflink_32k: false
+fstests_xfs_section_reflink_32k_4ks: false
+fstests_xfs_section_reflink_64k: false
+fstests_xfs_section_reflink_64k_4ks: false
+fstests_xfs_section_reflink_dir_bsize_8k: false
+
+fstests_xfs_section_bigblock: false
+
+fstests_btrfs_enables_raid56: false
+fstests_btrfs_enables_compression: false
+fstests_btrfs_enables_compression_zlib: false
+fstests_btrfs_enables_compression_lzo: false
+fstests_btrfs_enables_compression_zstd: false
+fstests_btrfs_enables_holes: false
+fstests_btrfs_enables_noholes: false
+fstests_btrfs_enables_fspace: false
+fstests_btrfs_enables_nohofspace: false
+fstests_btrfs_section_holes: false
+fstests_btrfs_section_holes_zlib: false
+fstests_btrfs_section_holes_lzo: false
+fstests_btrfs_section_holes_zstd: false
+fstests_btrfs_section_noholes: false
+fstests_btrfs_section_noholes_zlib: false
+fstests_btrfs_section_noholes_lzo: false
+fstests_btrfs_section_noholes_zstd: false
+fstests_btrfs_section_fspace: false
+fstests_btrfs_section_fspace_dsync: false
+fstests_btrfs_section_fspace_zlib: false
+fstests_btrfs_section_fspace_lzo: false
+fstests_btrfs_section_fspace_zstd: false
+fstests_btrfs_section_nohofspace: false
+fstests_btrfs_section_nohofspace_zlib: false
+fstests_btrfs_section_nohofspace_lzo: false
+fstests_btrfs_section_nohofspace_zstd: false
+fstests_btrfs_section_simple: false
+fstests_btrfs_section_simple_zns: false
+
+fstests_nfs_enable: false
+fstests_nfs_use_kdevops_nfsd: false
+fstests_nfs_section_pnfs: false
+fstests_nfs_section_rdma: false
+fstests_nfs_section_tls: false
+fstests_nfs_section_nfsd: false
+fstests_nfs_section_default: false
+fstests_nfs_section_v42: false
+fstests_nfs_section_v41: false
+fstests_nfs_section_v40: false
+fstests_nfs_section_v3: false
+
+fstests_cifs_enable: false
+fstests_cifs_use_kdevops_smbd: false
+fstests_cifs_section_smb3: false
+fstests_cifs_section_smb3_seal: false
+fstests_cifs_section_smb3_sign: false
+
+fstests_tmpfs_enable: false
 fstests_tmpfs_test_dev: "/media/test"
 fstests_tmpfs_scratch_devpool: "/media/scratch"
-fstests_tmpfs_section_default: False
-fstests_tmpfs_enable_noswap: False
-fstests_tmpfs_section_noswap_huge_never: False
-fstests_tmpfs_section_noswap_huge_always: False
-fstests_tmpfs_section_noswap_huge_within_size: False
-fstests_tmpfs_section_noswap_huge_advise: False
-fstests_tmpfs_enable_huge: False
-fstests_tmpfs_section_huge_always: False
-fstests_tmpfs_section_huge_within_size: False
-fstests_tmpfs_section_huge_advise: False
-
-devconfig_enable_systemd_journal_remote: False
-
-fstests_xfsdump_build: False
+fstests_tmpfs_section_default: false
+fstests_tmpfs_enable_noswap: false
+fstests_tmpfs_section_noswap_huge_never: false
+fstests_tmpfs_section_noswap_huge_always: false
+fstests_tmpfs_section_noswap_huge_within_size: false
+fstests_tmpfs_section_noswap_huge_advise: false
+fstests_tmpfs_enable_huge: false
+fstests_tmpfs_section_huge_always: false
+fstests_tmpfs_section_huge_within_size: false
+fstests_tmpfs_section_huge_advise: false
+
+devconfig_enable_systemd_journal_remote: false
+
+fstests_xfsdump_build: false
 fstests_xfsdump_git: "https://github.com/linux-kdevops/xfsdump-dev.git"
 fstests_xfsdump_data: "{{ data_path }}/xfsdump"
 
diff --git a/playbooks/roles/fstests/handlers/main.yml b/playbooks/roles/fstests/handlers/main.yml
index 0b2342d..9eb4af1 100644
--- a/playbooks/roles/fstests/handlers/main.yml
+++ b/playbooks/roles/fstests/handlers/main.yml
@@ -1,3 +1,6 @@
+---
 # SPDX-License-Identifier GPL-2.0+ OR MIT
 - name: Restart watchdog daemon
-  service: name="{{watchdog_service_name}}" state=restarted
+  ansible.builtin.service:
+    name: "{{ watchdog_service_name }}"
+    state: restarted
diff --git a/playbooks/roles/fstests/tasks/install-deps/debian/main.yml b/playbooks/roles/fstests/tasks/install-deps/debian/main.yml
index 5ee79b9..d129c22 100644
--- a/playbooks/roles/fstests/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/fstests/tasks/install-deps/debian/main.yml
@@ -1,33 +1,33 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
   tags: linux
 
 - name: Install NVMe tools
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - nvme-cli
 
 - name: Install fstests build dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - bison
       - flex
@@ -74,13 +74,13 @@
       - cifs-utils
       - duperemove
     state: present
-    update_cache: yes
-  tags: [ 'fstests', 'deps' ]
+    update_cache: true
+  tags: ["fstests", "deps"]
 
 - name: Install dependencies for building xfsprogs
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - libinih-dev
       - liburcu-dev
@@ -93,4 +93,4 @@
       - libpcre2-dev
       - pkg-config
       - libblkid-dev
-  when: 'fstests_xfs_build_custom_xfsprogs|bool'
+  when: "fstests_xfs_build_custom_xfsprogs|bool"
diff --git a/playbooks/roles/fstests/tasks/install-deps/main.yml b/playbooks/roles/fstests/tasks/install-deps/main.yml
index 72e0d48..8b14333 100644
--- a/playbooks/roles/fstests/tasks/install-deps/main.yml
+++ b/playbooks/roles/fstests/tasks/install-deps/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Ensure required /media/ directories are created
-  become: yes
-  become_method: sudo
-  file:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     state: directory
     path: "/media/{{ item }}"
   with_items:
@@ -10,14 +10,19 @@
     - "{{ sparsefiles_path }}"
     - test
 
-- include_role:
+- name: Include package management role
+  ansible.builtin.include_role:
     name: pkg
 
 # tasks to install dependencies for oscheck
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: tasks/install-deps/suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: tasks/install-deps/redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/fstests/tasks/install-deps/redhat/main.yml b/playbooks/roles/fstests/tasks/install-deps/redhat/main.yml
index f4f9161..5d3cb31 100644
--- a/playbooks/roles/fstests/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/fstests/tasks/install-deps/redhat/main.yml
@@ -10,10 +10,10 @@
     - ansible_distribution != "Fedora"
 
 - name: Install build dependencies for fstests
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
@@ -74,10 +74,10 @@
       - ncurses-devel
 
 - name: Install xfsprogs-xfs_scrub
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
@@ -90,10 +90,10 @@
     - (ansible_facts['distribution'] != 'RedHat' and ansible_facts['distribution'] != 'CentOS') or ansible_facts['distribution_major_version']|int >= 9
 
 - name: Install btrfs-progs
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
@@ -105,10 +105,10 @@
   when: ansible_distribution == 'Fedora'
 
 - name: Install dependencies for building xfsprogs
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  dnf:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name: "{{ packages }}"
     enablerepo: "*"
   retries: 3
@@ -127,4 +127,4 @@
       - libselinux-devel
       - libsepol-devel
       - pcre2-devel
-  when: 'fstests_xfs_build_custom_xfsprogs|bool'
+  when: "fstests_xfs_build_custom_xfsprogs|bool"
diff --git a/playbooks/roles/fstests/tasks/install-deps/suse/main.yml b/playbooks/roles/fstests/tasks/install-deps/suse/main.yml
index c4df15b..d31007d 100644
--- a/playbooks/roles/fstests/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/fstests/tasks/install-deps/suse/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
 
 - name: Set SLE specific version labels to make checks easier
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle10: '{{ ansible_distribution_major_version == "10" }}'
     is_sle11: '{{ ansible_distribution_major_version == "11" }}'
     is_sle12: '{{ ansible_distribution_major_version == "12" }}'
@@ -24,59 +24,59 @@
     - is_sle|bool
 
 - name: Set SLE specific version labels to make checks easier when not SLE
-  set_fact:
-    is_sle10: False
-    is_sle11: False
-    is_sle12: False
-    is_sle15: False
-    is_sle10sp3: False
-    is_sle11sp1: False
-    is_sle11sp4: False
-    is_sle12sp1: False
-    is_sle12sp3: False
-    is_sle12sp5: False
-    is_sle15sp2: False
-    is_sle15sp3: False
-    is_sle15sp4: False
+  ansible.builtin.set_fact:
+    is_sle10: false
+    is_sle11: false
+    is_sle12: false
+    is_sle15: false
+    is_sle10sp3: false
+    is_sle11sp1: false
+    is_sle11sp4: false
+    is_sle12sp1: false
+    is_sle12sp3: false
+    is_sle12sp5: false
+    is_sle15sp2: false
+    is_sle15sp3: false
+    is_sle15sp4: false
   when:
     - not is_sle|bool
 
 - name: By default we assume we have figured out how to add repos on a release
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: true
 
 - name: Lets us disable things which require a zypper repo present
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: false
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
 
 - name: The default is to assume all distros have the indent package
-  set_fact:
-    has_indent: True
+  ansible.builtin.set_fact:
+    has_indent: true
 
 - name: Does this release lack indent
-  set_fact:
-    has_indent: False
+  ansible.builtin.set_fact:
+    has_indent: false
   when:
     - is_sle|bool
     - is_sle15sp3|bool or is_sle15sp4|bool
 
 - name: The default is to assume all distros supports nvme-utils
-  set_fact:
+  ansible.builtin.set_fact:
     lacks_nvme_utils: false
 
 - name: Does this release lack nvme-utils
-  set_fact:
+  ansible.builtin.set_fact:
     lacks_nvme_utils: true
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool or is_sle12sp1|bool
 
 - name: Install nvme tools
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - nvme-cli
@@ -86,8 +86,8 @@
     - not lacks_nvme_utils|bool
 
 - name: Install build dependencies for fstests
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - bison
@@ -129,8 +129,8 @@
     - repos_present|bool
 
 - name: Install indent when we have it
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - indent
@@ -140,8 +140,8 @@
     - has_indent|bool
 
 - name: Install tumblweed packages
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - libgdbm6
@@ -151,8 +151,8 @@
     - is_tumbleweed|bool
 
 - name: Install leap packages
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - libgdbm4
@@ -163,8 +163,8 @@
     - is_leap|bool
 
 - name: Install sle15 sp2 and sp3 packages
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - libgdbm4
@@ -173,42 +173,42 @@
     - is_sle15sp2|bool or is_sle15sp3|bool or is_sle15sp4|bool
 
 - name: The default is to assume we do not want to add the benchmark repo
-  set_fact:
-    add_benchmark_repo: False
+  ansible.builtin.set_fact:
+    add_benchmark_repo: false
 
 - name: Does this release require the benchmark repo
-  set_fact:
-    add_benchmark_repo: True
+  ansible.builtin.set_fact:
+    add_benchmark_repo: true
   when:
     - is_sle15sp2|bool or is_sle15sp3|bool or is_sle15sp4|bool or is_sle12sp5|bool
 
-- name: add benchmark sles12sp5 openSUSE repo when needed
-  become: yes
-  become_method: sudo
-  script:
+- name: Add benchmark sles12sp5 openSUSE repo when needed
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.script:
     cmd: "{{ role_path }}/scripts/add-suse-repo-if-not-found.sh http://download.opensuse.org/repositories/benchmark/SLE_12_SP5/ benchmark benchmark"
   when:
     - is_sle12sp5|bool
 
 - name: Add benchmark sles15sp2 openSUSE repo when needed
-  become: yes
-  become_method: sudo
-  script:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.script:
     cmd: "{{ role_path }}/scripts/add-suse-repo-if-not-found.sh http://download.opensuse.org/repositories/benchmark/SLE_15_SP2/ benchmark benchmark"
   when:
     - is_sle15sp2|bool
 
 - name: Add benchmark sles15sp3 openSUSE repo when needed
-  become: yes
-  become_method: sudo
-  script:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.script:
     cmd: "{{ role_path }}/scripts/add-suse-repo-if-not-found.sh http://download.opensuse.org/repositories/benchmark/SLE_15_SP3/ benchmark benchmark"
   when:
     - is_sle15sp3|bool or is_sle15sp4|bool
 
 - name: Install dbench for sles15-sp2
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - dbench
@@ -217,8 +217,8 @@
     - add_benchmark_repo|bool
 
 - name: Install nfs-utils
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - nfs-utils
@@ -228,8 +228,8 @@
     - fstests_fstyp == "nfs"
 
 - name: Ensure nfs-client.target is enabled
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd:
     name: nfs-client.target
     enabled: true
@@ -238,8 +238,8 @@
     - fstests_fstyp == "nfs"
 
 - name: Install cifs-utils
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - cifs-utils
diff --git a/playbooks/roles/fstests/tasks/main.yml b/playbooks/roles/fstests/tasks/main.yml
index 2665f69..cf693ff 100644
--- a/playbooks/roles/fstests/tasks/main.yml
+++ b/playbooks/roles/fstests/tasks/main.yml
@@ -1,32 +1,32 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
-- include_role:
+- name: Include role
+  ansible.builtin.include_role:
     name: create_data_partition
-  tags: [ 'oscheck', 'data_partition' ]
+  tags: ["oscheck", "data_partition"]
 
 # Distro specific
 - name: Install dependencies
-  include_tasks: install-deps/main.yml
-
+  ansible.builtin.include_tasks: install-deps/main.yml
 - name: Check if there's an existing xfsprogs directory
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  stat:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.stat:
     path: "{{ fstests_xfs_xfsprogs_data }}"
   register: xfsprogs_dir
-  tags: [ 'oscheck', 'git', 'fstests']
-  when: 'fstests_xfs_build_custom_xfsprogs|bool'
+  tags: ["oscheck", "git", "fstests"]
+  when: "fstests_xfs_build_custom_xfsprogs|bool"
 
 - name: Set up an iSCSI initiator on target nodes
   ansible.builtin.include_role:
@@ -35,172 +35,174 @@
   when:
     - fstests_nfs_section_pnfs|bool
 
-- include_role:
+- name: Include role
+  ansible.builtin.include_role:
     name: common
   when:
     - infer_uid_and_group|bool
 
 - name: Get nproc
-  tags: [ 'oscheck', 'fstests', 'build']
-  command: "nproc"
+  tags: ["oscheck", "fstests", "build"]
+  ansible.builtin.command: "nproc"
+  changed_when: false
   register: nproc
 
 - name: Ensure xfsprogs is not root owned
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ fstests_xfs_xfsprogs_data }}"
     state: directory
-    recurse: yes
-    follow: no
+    recurse: true
+    follow: false
     owner: "{{ data_user }}"
     group: "{{ data_group }}"
-  tags: [ 'oscheck', 'git', 'fstests']
+  tags: ["oscheck", "git", "fstests"]
   when:
     - fstests_xfs_build_custom_xfsprogs|bool
     - xfsprogs_dir.stat.exists
 
 - name: Clean old xfsprogs build
-  command: "git clean -f -x -d"
+  ansible.builtin.command: "git clean -f -x -d"
   args:
     chdir: "{{ fstests_xfs_xfsprogs_data }}"
-  tags: [ 'oscheck', 'git', 'fstests']
+  tags: ["oscheck", "git", "fstests"]
   when:
     - fstests_xfs_build_custom_xfsprogs|bool
     - xfsprogs_dir.stat.exists
 
 - name: Clone xfsprogs git repository
-  git:
+  ansible.builtin.git:
     repo: "{{ fstests_xfs_xfsprogs_git }}"
     dest: "{{ fstests_xfs_xfsprogs_data }}"
-    update: yes
+    update: true
     version: "{{ fstests_xfs_xfsprogs_commit }}"
   retries: 3
   delay: 5
   register: result
   until: not result.failed
-  tags: [ 'oscheck', 'git', 'fstests']
-  when: 'fstests_xfs_build_custom_xfsprogs|bool'
+  tags: ["oscheck", "git", "fstests"]
+  when: "fstests_xfs_build_custom_xfsprogs|bool"
 
 - name: Configure xfsprogs
-  make:
+  community.general.make:
     chdir: "{{ fstests_xfs_xfsprogs_data }}"
     target: configure
-  tags: ['oscheck', 'fstests', 'build']
-  when: 'fstests_xfs_build_custom_xfsprogs|bool'
+  tags: ["oscheck", "fstests", "build"]
+  when: "fstests_xfs_build_custom_xfsprogs|bool"
 
 - name: Build xfsprogs
-  make:
+  community.general.make:
     chdir: "{{ fstests_xfs_xfsprogs_data }}"
     jobs: "{{ nproc.stdout }}"
-  tags: ['oscheck', 'fstests', 'build']
-  when: 'fstests_xfs_build_custom_xfsprogs|bool'
+  tags: ["oscheck", "fstests", "build"]
+  when: "fstests_xfs_build_custom_xfsprogs|bool"
 
 - name: Install xfsprogs
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  make:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  community.general.make:
     target: install
     params:
       DIST_ROOT: "{{ fstests_xfs_xfsprogs_install_path }}"
     chdir: "{{ fstests_xfs_xfsprogs_data }}"
-  tags: ['oscheck', 'fstests', 'build']
-  when: 'fstests_xfs_build_custom_xfsprogs|bool'
+  tags: ["oscheck", "fstests", "build"]
+  when: "fstests_xfs_build_custom_xfsprogs|bool"
 
 - name: Check if there's an existing xfsdump directory
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  stat:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.stat:
     path: "{{ fstests_xfsdump_data }}"
   register: xfdump_dir
-  tags: [ 'oscheck', 'git', 'fstests']
+  tags: ["oscheck", "git", "fstests"]
   when:
     - fstests_xfsdump_build|bool
 
 - name: Ensure xfsdump is not root owned
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ fstests_xfsdump_data }}"
-    recurse: yes
+    recurse: true
     owner: "{{ data_user }}"
     group: "{{ data_group }}"
-  tags: [ 'fstests', 'deps' ]
+  tags: ["fstests", "deps"]
   when:
     - fstests_xfsdump_build|bool
     - xfdump_dir.stat.exists
 
 - name: Clean old xfsdump build
-  command: "git clean -f -x -d"
+  ansible.builtin.command: "git clean -f -x -d"
   args:
     chdir: "{{ fstests_xfsdump_data }}"
-  tags: [ 'oscheck', 'git', 'fstests']
+  tags: ["oscheck", "git", "fstests"]
   when:
     - fstests_xfsdump_build|bool
     - xfdump_dir.stat.exists
 
-- name: git clone xfsdump
-  git:
+- name: Git clone xfsdump
+  ansible.builtin.git:
     repo: "{{ fstests_xfsdump_git }}"
     dest: "{{ fstests_xfsdump_data }}"
-    update: yes
+    update: true
     version: "{{ fstests_xfsdump_commit }}"
-  tags: [ 'fstests', 'deps' ]
+  tags: ["fstests", "deps"]
   when:
     - fstests_xfsdump_build|bool
 
 - name: Build xfsdump
-  tags: [ 'fstests', 'deps' ]
-  make:
+  tags: ["fstests", "deps"]
+  community.general.make:
     chdir: "{{ fstests_xfsdump_data }}"
     jobs: "{{ nproc.stdout }}"
   when:
     - fstests_xfsdump_build|bool
 
 - name: Install xfsdump
-  become: yes
-  become_method: sudo
-  tags: [ 'fstests', 'deps' ]
-  make:
+  become: true
+  become_method: ansible.builtin.sudo
+  tags: ["fstests", "deps"]
+  community.general.make:
     chdir: "{{ fstests_xfsdump_data }}"
     target: install
   when:
     - fstests_xfsdump_build|bool
 
 - name: Setup $PATH environment variable to access custom xfsprogs binaries
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: "/root/.bashrc"
     line: "export PATH={{ fstests_xfs_xfsprogs_install_path }}/usr/sbin/:$PATH"
     state: present
-  tags: ['oscheck', 'fstests', 'build']
-  when: 'fstests_xfs_build_custom_xfsprogs|bool'
+  tags: ["oscheck", "fstests", "build"]
+  when: "fstests_xfs_build_custom_xfsprogs|bool"
 
 - name: Create {{ truncated_path }} if needed
-  include_role:
+  ansible.builtin.include_role:
     name: create_partition
   vars:
     disk_setup_device: "{{ sparsefiles_device }}"
     disk_setup_fstype: "{{ sparsefiles_fstype }}"
-    disk_setup_label : "{{ sparsefiles_label }}"
+    disk_setup_label: "{{ sparsefiles_label }}"
     disk_setup_fs_opts: "{{ sparsefiles_fs_opts }}"
     disk_setup_path: "{{ sparsefiles_path }}"
     disk_setup_user: "{{ data_user }}"
     disk_setup_group: "{{ data_group }}"
-  tags: [ 'oscheck', 'sparse_partition' ]
+  tags: ["oscheck", "sparse_partition"]
   when:
     - fstests_testdev_sparsefile_generation|bool
 
-- name: git clone kdevops
+- name: Git clone kdevops
   environment:
-    GIT_SSL_NO_VERIFY:  true
-  git:
+    GIT_SSL_NO_VERIFY: true
+  ansible.builtin.git:
     repo: "{{ kdevops_git }}"
     dest: "{{ kdevops_data }}"
     version: "{{ kdevops_git_version }}"
@@ -208,22 +210,22 @@
   delay: 5
   register: result
   until: not result.failed
-  tags: [ 'oscheck', 'install', 'git']
+  tags: ["oscheck", "install", "git"]
 
 - name: Copy over our .config
-  copy:
+  ansible.builtin.copy:
     src: "{{ playbook_dir }}/../.config"
     dest: "{{ kdevops_dir }}"
-  tags: [ 'oscheck', 'install', 'root', 'config']
+  tags: ["oscheck", "install", "root", "config"]
 
 - name: Install kdevops as root
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   environment:
-    FSTYP:  "{{ fstests_fstyp }}"
-  command: "{{  make }} install"
-  tags: [ 'oscheck', 'install', 'root']
+    FSTYP: "{{ fstests_fstyp }}"
+  ansible.builtin.command: "{{  make }} install"
+  tags: ["oscheck", "install", "root"]
   args:
     chdir: "{{ kdevops_dir }}"
 
@@ -232,136 +234,137 @@
 # we don't have to bother with the setup of that partition
 # in the dbench role.
 - name: Compile dbench from source if needed by the distribution
-  include_role:
+  ansible.builtin.include_role:
     name: compile_dbench
   vars:
     dbench_data: "{{ data_path }}/dbench"
     dbench_git: "https://github.com/linux-kdevops/dbench.git"
-  tags: [ 'oscheck', 'git', 'dbench']
+  tags: ["oscheck", "git", "dbench"]
 
 - name: Remove any old fstests and install directories
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ item }}"
     state: absent
   with_items:
     - "{{ fstests_data }}"
     - "{{ fstests_data_prefix }}"
     - "{{ fstests_data_target }}"
-  tags: [ 'oscheck', 'git', 'fstests', 'build' ]
+  tags: ["oscheck", "git", "fstests", "build"]
 
-- name: git clone fstests
-  git:
+- name: Git clone fstests
+  ansible.builtin.git:
     repo: "{{ fstests_git }}"
     dest: "{{ fstests_data }}"
     version: "{{ fstests_git_version }}"
-    update: yes
+    update: true
   retries: 3
   delay: 5
   register: result
   until: not result.failed
-  tags: [ 'oscheck', 'git', 'fstests']
+  tags: ["oscheck", "git", "fstests"]
 
 - name: Create {{ fstests_data_prefix }} if it does not exist
-  tags: [ 'oscheck', 'fstests', 'install', 'root']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "install", "root"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ fstests_data_prefix }}"
     state: directory
 
 - name: Build the configure file for fstests
-  tags: [ 'oscheck', 'fstests', 'build']
-  command: "make configure"
+  tags: ["oscheck", "fstests", "build"]
+  ansible.builtin.command: "make configure"
   args:
     chdir: "{{ fstests_data }}"
 
 - name: Configure fstests
-  tags: [ 'oscheck', 'fstests', 'build']
-  command: "./configure --prefix={{ fstests_data_prefix }}"
+  tags: ["oscheck", "fstests", "build"]
+  ansible.builtin.command: "./configure --prefix={{ fstests_data_prefix }}"
   args:
     chdir: "{{ fstests_data }}"
 
 - name: Get nproc
-  tags: [ 'oscheck', 'fstests', 'build']
-  command: "nproc"
+  tags: ["oscheck", "fstests", "build"]
+  ansible.builtin.command: "nproc"
+  changed_when: false
   register: nproc
 
 - name: Build fstests
-  tags: [ 'oscheck', 'fstests', 'build']
-  make:
+  tags: ["oscheck", "fstests", "build"]
+  community.general.make:
     chdir: "{{ fstests_data }}"
     jobs: "{{ nproc.stdout }}"
 
 - name: Copy udev rules for zoned
-  become: yes
-  become_method: sudo
-  template:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "64-btrfs-zoned.rules"
     dest: "/usr/lib/udev/rules.d/"
     owner: "{{ data_user }}"
     group: "{{ data_group }}"
-  tags: [ 'oscheck', 'fstests']
+  tags: ["oscheck", "fstests"]
   when:
     - fstests_zns_enabled == "y"
     - fstests_fstyp == "btrfs"
 
-- name: git pull latest kdevops to ensure expunge lists and scripts are up to date
+- name: Git pull latest kdevops to ensure expunge lists and scripts are up to date
   environment:
-    GIT_SSL_NO_VERIFY:  true
-  git:
+    GIT_SSL_NO_VERIFY: true
+  ansible.builtin.git:
     repo: "{{ kdevops_git }}"
     dest: "{{ kdevops_data }}"
     version: "{{ kdevops_git_version }}"
-    update: yes
+    update: true
   retries: 3
   delay: 5
   register: result
   until: not result.failed
-  tags: [ 'oscheck', 'install', 'git', 'git_update', 'fstests', 'run_tests' ]
+  tags: ["oscheck", "install", "git", "git_update", "fstests", "run_tests"]
 
 - name: Install fstests
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{  make }} install"
-  tags: [ 'oscheck', 'fstests', 'install', 'root']
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{  make }} install"
+  tags: ["oscheck", "fstests", "install", "root"]
   args:
     chdir: "{{ fstests_data }}"
 
 - name: Add symlink for old fstests directory
-  tags: [ 'oscheck', 'fstests', 'install', 'root']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "install", "root"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     src: "{{ fstests_data_prefix }}/xfstests"
     dest: "{{ fstests_data_target }}"
     state: link
 
 - name: Install root generated .kdevops_fstests_setup
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "{{ kdevops_fstests_setup }}"
     dest: "/root/{{ kdevops_fstests_setup }}"
     owner: "root"
     group: "root"
-    mode: 0644
+    mode: "0644"
 
 - name: Source .kdevops_fstests_setup for root if it is not already done
   vars:
     dev_bash_config: ".bashrc"
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' ]
-  shell: |
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install"]
+  ansible.builtin.shell: |
     SOURCE_KDEVOPS_FSTESTS_SETUP="test -s ~/{{ kdevops_fstests_setup }} && . ~/{{ kdevops_fstests_setup }} || true"
     if [ -f {{ dev_bash_config }} ]; then
       if ! grep "{{ kdevops_fstests_setup_name }}" {{ dev_bash_config }}  2>&1 > /dev/null ; then
@@ -376,10 +379,10 @@
     executable: /bin/bash
 
 - name: Add symlinks for kdevops scripts for fstests
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     src: "{{ kdevops_data }}/workflows/fstests/scripts/{{ item }}"
     dest: "{{ fstests_data_target }}/{{ item }}"
@@ -390,10 +393,10 @@
     - naggy-check.sh
 
 - name: Create a few directories which kdevops uses for fstests if they do not exist
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install', 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ item }}"
     state: directory
@@ -403,10 +406,10 @@
     - fstests_testdev_sparsefile_generation|bool
 
 - name: Create a few directories which kdevops uses for fstests if they do not exist
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install', 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ item }}"
     state: directory
@@ -414,84 +417,84 @@
     - "{{ fstests_data_target }}/configs"
 
 - name: Check if there's a host specific fstests at {{ fstests_fstyp }}/{{ inventory_hostname }}.config configuration
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install', 'generate-fstests-config' ]
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
   delegate_to: localhost
-  stat:
+  ansible.builtin.stat:
     path: "{{ topdir_path }}/workflows/fstests/{{ fstests_fstyp }}/{{ inventory_hostname }}.config"
   register: host_specific_fstests_config
 
 - name: Generate filesystem configuration file for debugging purposes using host specific config {{ target_config }}
-  tags: [ 'generate-fstests-config' ]
+  tags: ["generate-fstests-config"]
   vars:
     target_config: "{{ topdir_path }}/workflows/fstests/{{ fstests_fstyp }}/{{ fstests_fstyp }}.config.generated"
-  template:
+  ansible.builtin.template:
     src: "{{ topdir_path }}/workflows/fstests/{{ fstests_fstyp }}/{{ ansible_host }}.config"
     dest: "{{ target_config }}"
-    force: yes
+    force: true
   when:
     - fstests_generate_simple_config_enable|bool
     - fstests_debug_localhost|bool
     - host_specific_fstests_config.stat.exists
 
 - name: Generate filesystem configuration file for debugging purposes using generic config {{ target_config }}
-  tags: [ 'generate-fstests-config' ]
+  tags: ["generate-fstests-config"]
   vars:
     target_config: "{{ topdir_path }}/workflows/fstests/{{ fstests_fstyp }}/{{ fstests_fstyp }}.config.generated"
-  template:
+  ansible.builtin.template:
     src: "{{ fstests_fstyp }}/{{ fstests_fstyp }}.config"
     dest: "{{ topdir_path }}/workflows/fstests/{{ fstests_fstyp }}/{{ fstests_fstyp }}.config.generated"
-    force: yes
+    force: true
   when:
     - fstests_generate_simple_config_enable|bool
     - fstests_debug_localhost|bool
     - not host_specific_fstests_config.stat.exists
 
 - name: Copy and force overwrite of the host specific fstests configuration
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "{{ topdir_path }}/workflows/fstests/{{ fstests_fstyp }}//{{ ansible_host }}.config"
     dest: "{{ fstests_data_target }}/configs/{{ ansible_host }}.config"
-    force: yes
+    force: true
   when:
     - fstests_generate_simple_config_enable|bool
     - not fstests_debug_localhost|bool
     - host_specific_fstests_config.stat.exists
 
 - name: Copy and force overwrite of the target filesystem fstests configuration
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "{{ fstests_fstyp }}/{{ fstests_fstyp }}.config"
     dest: "{{ fstests_data_target }}/configs/{{ ansible_host }}.config"
-    force: yes
+    force: true
   when:
     - fstests_generate_simple_config_enable|bool
     - not fstests_debug_localhost|bool
     - not host_specific_fstests_config.stat.exists
 
 - name: Try to see if NVMe EUIs exist on /dev/disk/by-id/nvme-eui.*
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.find:
     paths: /dev/disk/by-id/
     file_type: "link"
-    patterns: 'nvme-eui.*'
+    patterns: "nvme-eui.*"
   register: real_nvme_euis
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
   when:
     - fstests_generate_nvme_live_config_enable|bool
 
 - name: End if no NVMe EUIs found per node and no fallback mechanism is provided
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.fail:
     msg:
       - "You need at least one NVMe drive with its EUI defined per node, try enabling CONFIG_FSTESTS_TESTDEV_NVME_FALLBACK_MODEL_SERIAL"
@@ -503,26 +506,26 @@
     - real_nvme_euis.files | length == 0
 
 - name: Set real nvmes if one is found from EUI list
-  set_fact:
+  ansible.builtin.set_fact:
     nvmes: "{{ real_nvme_euis }}"
   when:
     - fstests_generate_nvme_live_config_enable|bool
     - real_nvme_euis is success
     - real_nvme_euis.files is defined
     - real_nvme_euis.files | length > 0
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
 
 - name: Fallback look for NVMe drive by model and serial number /dev/disk/by-id/nvme-$(model)-$(serial)
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.find:
     paths: /dev/disk/by-id/
     file_type: "link"
-    patterns: 'nvme-*'
-    excludes: 'nvme-QEMU*,nvme-nvme*'
+    patterns: "nvme-*"
+    excludes: "nvme-QEMU*,nvme-nvme*"
   register: fallback_nvmes
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
   when:
     - real_nvme_euis is success
     - real_nvme_euis.files is defined
@@ -531,7 +534,7 @@
     - fstests_testdev_nvme_fallback_model_serial|bool
 
 - name: Set real nvmes to fallback list if one found
-  set_fact:
+  ansible.builtin.set_fact:
     nvmes: "{{ fallback_nvmes }}"
   when:
     - fstests_generate_nvme_live_config_enable|bool
@@ -539,10 +542,10 @@
     - real_nvme_euis.files is defined
     - real_nvme_euis.files | length == 0
     - fstests_testdev_nvme_fallback_model_serial|bool
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
 
 - name: Get NVMe drives we can use for testing
-  set_fact:
+  ansible.builtin.set_fact:
     nvme_symlinks: |
       {%- set x = [] -%}
       {%- for f in nvmes.files %}
@@ -554,13 +557,13 @@
     - nvmes is defined
     - nvmes is success
     - nvmes.files is defined
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
 
 - name: Read existing partition information for first NVMe drive with an EUI
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.general.parted:
     device: "{{ nvme_symlinks[0] }}"
     unit: MiB
@@ -570,25 +573,25 @@
     - nvme_symlinks | length >= 1
 
 - name: Remove all partitions from the first real NVMe drive with an EUI
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.general.parted:
     device: "{{ nvme_symlinks[0] }}"
-    number: '{{ item.num }}'
+    number: "{{ item.num }}"
     state: absent
-  loop: '{{ nvme_info.partitions }}'
+  loop: "{{ nvme_info.partitions }}"
   when:
     - fstests_testdev_nvme_partition_euis|bool
     - nvme_symlinks | length > 1
     - nvme_info.partitions | length != 13
 
 - name: Create extended partition on sigle NVMe drive
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.general.parted:
     device: "{{ nvme_symlinks[0] }}"
     number: 1
@@ -600,30 +603,30 @@
     - nvme_info.partitions | length < 13
 
 - name: Create 12 logical partitions on sigle NVMe drive
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
     test_partsize: 60
     fuzz: 1
   community.general.parted:
     device: "{{ nvme_symlinks[0] }}"
-    number: '{{ item }}'
+    number: "{{ item }}"
     state: present
     part_type: "logical"
-    part_start: "{{ ((item - 5) * test_partsize ) + 1 }}GiB"
-    part_end:   "{{ ((item - 4) * test_partsize ) }}GiB"
-  loop: '{{ range(5, 17) | list }}'
+    part_start: "{{ ((item - 5) * test_partsize) + 1 }}GiB"
+    part_end: "{{ ((item - 4) * test_partsize) }}GiB"
+  loop: "{{ range(5, 17) | list }}"
   when:
     - fstests_testdev_nvme_partition_euis|bool
     - nvme_symlinks | length >= 1
     - nvme_info.partitions | length < 13
 
 - name: Try to see if new logical NVMe partition exist on /dev/disk/by-id/nvme-*.id.part*
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
     nvme_main: "{{ nvme_symlinks[0] | basename }}"
   ansible.builtin.find:
@@ -631,13 +634,13 @@
     file_type: "link"
     patterns: "{{ nvme_main }}-part*"
   register: part_symlinks
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
   when:
     - fstests_testdev_nvme_partition_euis|bool
     - nvme_symlinks | length >= 1
 
 - name: Get new partition NVMe symlinks
-  set_fact:
+  ansible.builtin.set_fact:
     nvme_parts: |
       {%- set x = [] -%}
       {%- for f in part_symlinks.files %}
@@ -649,13 +652,13 @@
     - part_symlinks is success
     - part_symlinks.files is defined
     - nvme_symlinks | length >= 1
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
 
 - name: End if 13 paritions NVMe EUIs not found per node one extended 12 logical
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.fail:
     msg:
       - "You need at least one extended partition and 12 logical partitions NVMe drives per guest. Detected {{ nvme_parts | length }} NVMe drives. Bailing test."
@@ -665,10 +668,10 @@
     - nvme_parts | length < 13
 
 - name: Copy and force overwrite of the target filesystem fstests configuration using NVMe partition euis
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
     fstests_test_dev: "{{ nvme_symlinks[0] }}-part16"
     fstests_logwrites_dev: "{{ nvme_symlinks[0] }}-part15"
@@ -683,10 +686,10 @@
       {{ nvme_symlinks[0] }}-part12
     fstests_scratch_logdev: "{{ nvme_symlinks[0] }}-part15"
     fstests_scratch_rtdev: "{{ nvme_symlinks[0] }}-part14"
-  template:
+  ansible.builtin.template:
     src: "{{ fstests_fstyp }}/{{ fstests_fstyp }}.config"
     dest: "{{ fstests_data_target }}/configs/{{ ansible_host }}.config"
-    force: yes
+    force: true
   when:
     - fstests_testdev_nvme_partition_euis|bool
     - nvme_symlinks | length >= 1
@@ -695,10 +698,10 @@
 # fstests sparsefile generation uses 11 loop drives, we'll aim for 7
 # if you are using straight a drive per target disk to test.
 - name: End running if 7 NVMe EUIs not found per node
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.fail:
     msg:
       - "You need at least 7 NVMe drives per guest. Detected {{ nvme_symlinks | length }} NVMe drives. Bailing test."
@@ -707,10 +710,10 @@
     - nvme_symlinks | length < 7
 
 - name: Copy and force overwrite of the target filesystem fstests configuration using NVMe euis
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
     fstests_test_dev: "{{ nvme_symlinks[0] }}"
     fstests_logwrites_dev: "{{ nvme_symlinks[1] }}"
@@ -720,39 +723,38 @@
       {{ nvme_symlinks[4] }}
       {{ nvme_symlinks[5] }}
       {{ nvme_symlinks[6] }}
-  template:
+  ansible.builtin.template:
     src: "{{ fstests_fstyp }}/{{ fstests_fstyp }}.config"
     dest: "{{ fstests_data_target }}/configs/{{ ansible_host }}.config"
-    force: yes
+    force: true
   when:
     - fstests_testdev_nvme_euis|bool
     - nvme_symlinks | length >= 7
 
 - name: Set the export volname prefix
   tags: vars
-  set_fact:
-    volname_prefix: "{{ ansible_host|regex_replace(kdevops_host_prefix + '-') }}-fs"
+  ansible.builtin.set_fact:
+    volname_prefix: "{{ ansible_host | regex_replace(kdevops_host_prefix + '-') }}-fs"
   when:
-    - fstests_fstyp == "nfs" or
-      fstests_fstyp == "cifs"
+    - fstests_fstyp == "nfs" or fstests_fstyp == "cifs"
 
 - name: Set the NFS export's fstype
   tags: vars
-  set_fact:
+  ansible.builtin.set_fact:
     fstests_nfs_export_fstype: "{{ nfsd_export_fstype }}"
   when:
     - not fstests_nfs_section_pnfs|bool
 
 - name: Set the NFS export's fstype
   tags: vars
-  set_fact:
+  ansible.builtin.set_fact:
     fstests_nfs_export_fstype: "xfs"
   when:
     - fstests_fstyp == "nfs"
     - fstests_nfs_section_pnfs|bool
 
 - name: Create NFS export for test vol
-  include_role:
+  ansible.builtin.include_role:
     name: nfsd_add_export
   vars:
     server_host: "{{ fstests_nfs_server_host }}"
@@ -766,7 +768,7 @@
     - fstests_nfs_use_kdevops_nfsd|bool
 
 - name: Create NFS export for scratch vol
-  include_role:
+  ansible.builtin.include_role:
     name: nfsd_add_export
   vars:
     server_host: "{{ fstests_nfs_server_host }}"
@@ -780,24 +782,24 @@
     - fstests_nfs_use_kdevops_nfsd|bool
 
 - name: Copy and force overwrite of the target filesystem fstests configuration for NFS
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
     fstests_nfs_test_dev: "{{ fstests_nfs_server_host }}:{{ nfsd_export_path }}/{{ volname_prefix }}-t"
     fstests_nfs_scratch_devpool: "{{ fstests_nfs_server_host }}:{{ nfsd_export_path }}/{{ volname_prefix }}-s"
-  template:
+  ansible.builtin.template:
     src: "{{ fstests_fstyp }}/{{ fstests_fstyp }}.config"
     dest: "{{ fstests_data_target }}/configs/{{ ansible_host }}.config"
-    force: yes
+    force: true
   when:
     - fstests_fstyp == "nfs"
 
 - name: Check to see if /etc/nfsmount.conf exists
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.stat:
     path: /etc/nfsmount.conf
   register: nfsmount_conf
@@ -807,15 +809,15 @@
     - fstests_nfs_auth_flavor
 
 - name: Create /etc/nfsmount.conf
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.template:
     src: "{{ fstests_fstyp }}/nfsmount.conf"
     dest: /etc/nfsmount.conf
     owner: root
     group: root
-    mode: 0644
+    mode: "0644"
   when:
     - fstests_fstyp == "nfs"
     - fstests_nfs_auth_flavor is defined
@@ -823,20 +825,20 @@
     - not nfsmount_conf.stat.exists
 
 - name: Set auth flavor for NFS
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.lineinfile:
     path: /etc/nfsmount.conf
-    regexp: '^# Sec='
-    line: 'Sec={{ fstests_nfs_auth_flavor }}'
+    regexp: "^# Sec="
+    line: "Sec={{ fstests_nfs_auth_flavor }}"
   when:
     - fstests_fstyp == "nfs"
     - fstests_nfs_auth_flavor is defined
     - fstests_nfs_auth_flavor
 
 - name: Create SMB share for test vol
-  include_role:
+  ansible.builtin.include_role:
     name: smbd_add_share
   vars:
     server_host: "{{ fstests_smb_server_host }}"
@@ -848,7 +850,7 @@
     - fstests_cifs_use_kdevops_smbd|bool
 
 - name: Create SMB share for scratch vol
-  include_role:
+  ansible.builtin.include_role:
     name: smbd_add_share
   vars:
     server_host: "{{ fstests_smb_server_host }}"
@@ -860,41 +862,41 @@
     - fstests_cifs_use_kdevops_smbd|bool
 
 - name: Copy and force overwrite of the target filesystem fstests configuration for CIFS
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
     fstests_cifs_test_dev: "//{{ fstests_smb_server_host }}/{{ volname_prefix }}-t"
     fstests_cifs_scratch_devpool: "//{{ fstests_smb_server_host }}/{{ volname_prefix }}-s"
-  template:
+  ansible.builtin.template:
     src: "{{ fstests_fstyp }}/{{ fstests_fstyp }}.config"
     dest: "{{ fstests_data_target }}/configs/{{ ansible_host }}.config"
-    force: yes
+    force: true
   when:
     - fstests_fstyp == "cifs"
 
 - name: Reboot system before our test so we know everything is sane
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'reboot' ]
-  become: yes
-  become_method: sudo
-  reboot:
+  tags: ["oscheck", "fstests", "run_tests", "reboot"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
     post_reboot_delay: 10
 
 - name: Make sure loop device support is loaded
-  tags: [ 'oscheck', 'fstests', 'run_tests' ]
-  become: yes
-  become_method: sudo
-  command: "modprobe loop"
+  tags: ["oscheck", "fstests", "run_tests"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "modprobe loop"
   when:
     - kdevops_run_fstests|bool
 
 - name: Add missing groups for fstests
-  tags: [ 'oscheck', 'fstests', 'install', 'root']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  group:
+  tags: ["oscheck", "fstests", "install", "root"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.group:
     name: "{{ item }}"
     state: present
   with_items:
@@ -903,10 +905,10 @@
     label: "Ensuring that group {{ item }} exists"
 
 - name: Add missing users for fstests
-  tags: [ 'oscheck', 'fstests', 'install', 'root']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "install", "root"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: "useradd {{ badname_arg }} -d /home/{{ item }} -U {{ item }}"
   with_items:
     - 123456-fsgqa
@@ -922,17 +924,17 @@
 - name: Verify section name {{ fstests_section }} exists on fstests config file
   vars:
     fstests_section: "{{ ansible_host | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') | regex_replace('-', '_') }}"
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'section' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests", "section"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   register: section_grep
   failed_when: not section_grep.changed
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: "{{ fstests_data_target }}/configs/{{ ansible_host }}.config"
     regexp: "\\[{{ fstests_section }}\\]$"
-    line: ''
-  check_mode: yes
+    line: ""
+  check_mode: true
   when:
     - kdevops_run_fstests|bool
     - fstests_section != "all"
@@ -941,11 +943,11 @@
 # or systems might have on /etc/sudoers env_reset enabled, which gives us
 # as root a clean slate of variables.
 - name: Generate loopback disks using sparefiles with gendisk.sh
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'gendisks' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "./gendisks.sh -d -m"
+  tags: ["oscheck", "fstests", "run_tests", "gendisks"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "./gendisks.sh -d -m"
   register: gendisk_cmd
   args:
     chdir: "{{ fstests_data_target }}"
@@ -962,8 +964,8 @@
     - fstests_testdev_sparsefile_generation|bool
 
 - name: Capture gendisk output
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'gendisks' ]
-  debug:
+  tags: ["oscheck", "fstests", "run_tests", "gendisks"]
+  ansible.builtin.debug:
     msg: "{{ gendisk_cmd.stdout_lines }}"
   when:
     - kdevops_run_fstests|bool
@@ -973,11 +975,11 @@
 - name: Check and verify fstests dependencies are met prior to running fstests
   vars:
     fstests_section: "{{ ansible_host | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') | regex_replace('-', '_') }}"
-  tags: [ 'oscheck', 'fstests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: |
+  tags: ["oscheck", "fstests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: |
     ./oscheck.sh
       --check-deps
       --journal {{ fstests_journal }}
@@ -998,30 +1000,30 @@
     - fstests_testdev_sparsefile_generation|bool
 
 - name: Set the path where we collect our fstests results
-  set_fact:
+  ansible.builtin.set_fact:
     fstests_results_full_path: "{{ topdir_path }}/workflows/fstests/results"
     fstests_workflow_dir: "../workflows/fstests"
     fstests_results_target: "../workflows/fstests/results/last-run/"
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'checktime', 'augment_expunge_list', 'copy_results', 'print_results' ]
+  tags: ["oscheck", "fstests", "run_tests", "checktime", "augment_expunge_list", "copy_results", "print_results"]
 
 - name: Look for prior check.time files on {{ fstests_data_target }}
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'checktime' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  find:
+  tags: ["oscheck", "fstests", "run_tests", "checktime"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.find:
     paths: "{{ fstests_data_target }}"
-    recurse: yes
+    recurse: true
     patterns: "check.time"
   register: checktime_files
 
 - name: Copy prior check.time files from {{ fstests_data_target }}
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'checktime' ]
-  fetch:
+  tags: ["oscheck", "fstests", "run_tests", "checktime"]
+  ansible.builtin.fetch:
     src: "{{ item.path }}"
     dest: "{{ fstests_workflow_dir }}/{{ item.path | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
-    flat: yes
-    validate_checksum: False
+    flat: true
+    validate_checksum: false
   with_items: "{{ checktime_files.files }}"
   loop_control:
     label: "{{ item.path | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
@@ -1032,7 +1034,7 @@
   vars:
     expunge_file: "-E "
     space: " "
-  set_fact:
+  ansible.builtin.set_fact:
     fstests_initial_baseline_args: |
       {%- set x = [] -%}
       {%- for f in checktime_files.files %}
@@ -1044,24 +1046,24 @@
     - checktime_files.files is defined
     - checktime_files.files | length > 0
     - fstests_initial_baseline|bool
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'checktime' ]
+  tags: ["oscheck", "fstests", "run_tests", "checktime"]
 
 - name: Expand tests to skip for initial baseline
-  set_fact:
+  ansible.builtin.set_fact:
     fstests_initial_baseline_args: "--start-after {{ fstests_start_after_test }}"
   when:
     - fstests_start_after|bool
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'checktime' ]
+  tags: ["oscheck", "fstests", "run_tests", "checktime"]
 
 - name: Expand tests to skip tests dynamically passed on the command line
-  set_fact:
+  ansible.builtin.set_fact:
     fstests_skip_tests_args: "-e {{ fstests_skip_tests }}"
   when:
     - fstests_skip_tests_enable|bool
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'checktime' ]
+  tags: ["oscheck", "fstests", "run_tests", "checktime"]
 
 - name: Verify use of START_AFTER
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'kdevops_fstests_setup', 'install' , 'generate-fstests-config' ]
+  tags: ["oscheck", "fstests", "run_tests", "kdevops_fstests_setup", "install", "generate-fstests-config"]
   ansible.builtin.fail:
     msg:
       - "You used START_AFTER={{ fstests_start_after_test }} and it must not be empty"
@@ -1070,52 +1072,61 @@
     - fstests_start_after_test == ""
 
 - name: Clear out old results directory
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     state: absent
     path: "{{ fstests_data_target }}/results/"
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'clean_results' ]
+  tags: ["oscheck", "fstests", "run_tests", "clean_results"]
   when:
     - not fstests_initial_baseline|bool
 
 - name: Print uname for each host
-  tags: [ 'oscheck', 'fstests', 'run_tests' ]
-  debug: var=ansible_kernel
-
+  tags: ["oscheck", "fstests", "run_tests"]
+  ansible.builtin.debug:
+    var: ansible_kernel
 - name: Clean up our localhost results/last-run directory
-  local_action: file path="{{ fstests_results_target }}/" state=absent
+  ansible.builtin.file:
+    path: "{{ fstests_results_target }}/"
+    state: absent
+  delegate_to: localhost
   run_once: true
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'clean_local_results' ]
+  tags: ["oscheck", "fstests", "copy_results", "clean_local_results"]
 
 - name: Create empty last-run directory
-  local_action: file path="{{ fstests_results_target }}/" state=directory
+  ansible.builtin.file:
+    path: "{{ fstests_results_target }}/"
+    state: directory
+  delegate_to: localhost
   run_once: true
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'clean_local_results' ]
+  tags: ["oscheck", "fstests", "copy_results", "clean_local_results"]
 
 - name: Get used target kernel version
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'print_results', 'augment_expunge_list' ]
-  command: "uname -r"
+  tags: ["oscheck", "fstests", "copy_results", "print_results", "augment_expunge_list"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Store last kernel variable
-  set_fact:
-    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\",'') }}"
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'print_results', 'augment_expunge_list' ]
+  ansible.builtin.set_fact:
+    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\", '') }}"
+  tags: ["oscheck", "fstests", "copy_results", "print_results", "augment_expunge_list"]
   run_once: true
 
 - name: Document used target kernel version
-  local_action: "shell echo {{ last_kernel }} > {{ fstests_results_target }}/../last-kernel.txt"
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'print_results', 'augment_expunge_list' ]
+  ansible.builtin.shell: echo {{ last_kernel }} > {{ fstests_results_target }}/../last-kernel.txt
+  changed_when: false
+  delegate_to: localhost
+  tags: ["oscheck", "fstests", "copy_results", "print_results", "augment_expunge_list"]
   run_once: true
 
 - name: Ensure systemd-journal-remote.service is running on the server
-  tags: [ 'oscheck', 'fstests', 'run_tests' ]
+  tags: ["oscheck", "fstests", "run_tests"]
   delegate_to: localhost
-  become_method: sudo
-  become: yes
-  become_flags: 'su - -c'
+  become_method: ansible.builtin.sudo
+  become: true
+  become_flags: "su - -c"
   ansible.builtin.systemd_service:
     name: systemd-journal-remote.service
     state: started
@@ -1123,42 +1134,43 @@
     - devconfig_enable_systemd_journal_remote|bool
 
 - name: Ensure systemd-journal-upload.service is running
-  tags: [ 'oscheck', 'fstests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: systemd-journal-upload.service
     state: started
   when:
     - devconfig_enable_systemd_journal_remote|bool
 
-
 - name: Hint to watchdog tests are about to kick off
-  local_action: file path="{{ fstests_workflow_dir }}/.begin" state=touch
-  tags: [ 'oscheck', 'fstests', 'run_tests' ]
+  ansible.builtin.file:
+    path: "{{ fstests_workflow_dir }}/.begin"
+    state: touch
+  delegate_to: localhost
+  tags: ["oscheck", "fstests", "run_tests"]
   when:
     - kdevops_run_fstests|bool
   run_once: true
 
 - name: Enable low-level messages on console
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: sysctl kernel.printk="8 8 1 7"
-
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: sysctl kernel.printk="8 8 1 7"
 - name: Check to see if dynamic test limit scope was set
-  set_fact:
+  ansible.builtin.set_fact:
     dynamic_limit_tests: "{{ lookup('ansible.builtin.env', 'LIMIT_TESTS') }}"
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'vars', 'limit-tests' ]
+  tags: ["oscheck", "fstests", "run_tests", "vars", "limit-tests"]
   when:
     - not run_tests_on_failures|bool
     - kdevops_run_fstests|bool
 
 - name: Set test limit scope from CONFIG_FSTESTS_RUN_CUSTOM_TESTS, this may be empty
-  set_fact:
+  ansible.builtin.set_fact:
     all_limit_tests: "{{ limit_tests }}"
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'vars', 'limit-tests' ]
+  tags: ["oscheck", "fstests", "run_tests", "vars", "limit-tests"]
   when:
     - not run_tests_on_failures|bool
     - kdevops_run_fstests|bool
@@ -1166,9 +1178,9 @@
     - limit_tests != None
 
 - name: Allow dynamic test override
-  set_fact:
+  ansible.builtin.set_fact:
     all_limit_tests: "{{ dynamic_limit_tests }}"
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'vars', 'limit-tests' ]
+  tags: ["oscheck", "fstests", "run_tests", "vars", "limit-tests"]
   when:
     - not run_tests_on_failures|bool
     - kdevops_run_fstests|bool
@@ -1177,9 +1189,9 @@
     - dynamic_limit_tests | length > 0
 
 - name: Empty out test limit if None is set
-  set_fact:
+  ansible.builtin.set_fact:
     all_limit_tests: ""
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'vars', 'limit-tests' ]
+  tags: ["oscheck", "fstests", "run_tests", "vars", "limit-tests"]
   when:
     - not run_tests_on_failures|bool
     - kdevops_run_fstests|bool
@@ -1189,13 +1201,13 @@
 - name: Run oscheck-get-failures.sh to get list of known failed tests
   vars:
     fstests_section: "{{ ansible_host | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') | regex_replace('-', '_') }}"
-  tags: [ 'oscheck', 'fstests', 'run_tests' ]
-  command: "{{ kdevops_data }}/workflows/fstests/scripts/oscheck-get-failures.sh --test-section {{ fstests_section }}"
+  tags: ["oscheck", "fstests", "run_tests"]
+  ansible.builtin.command: "{{ kdevops_data }}/workflows/fstests/scripts/oscheck-get-failures.sh --test-section {{ fstests_section }}"
   args:
     chdir: "{{ fstests_data_target }}"
   environment:
     FSTYP: "{{ fstests_fstyp }}"
-    FSTESTS_LINUX_LOCALVERSION: "{{ target_linux_localversion  | default ('') }}"
+    FSTESTS_LINUX_LOCALVERSION: "{{ target_linux_localversion | default('') }}"
     KEEP_DMESG: "yes"
   register: failed_tests_limit
   when:
@@ -1203,26 +1215,26 @@
     - kdevops_run_fstests|bool
 
 - name: Inform user no failures are known
-  fail:
+  ansible.builtin.fail:
     msg: "No known failures for this run! Go find bugs!"
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'vars', 'limit-tests' ]
+  tags: ["oscheck", "fstests", "run_tests", "vars", "limit-tests"]
   when:
     - run_tests_on_failures|bool
     - kdevops_run_fstests|bool
     - failed_tests_limit.stdout | replace('\n', ' ') | length == 0
 
 - name: Set test limit to known failed tests
-  set_fact:
+  ansible.builtin.set_fact:
     all_limit_tests: "{{ failed_tests_limit.stdout | replace('\n', ' ') }}"
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'vars', 'limit-tests' ]
+  tags: ["oscheck", "fstests", "run_tests", "vars", "limit-tests"]
   when:
     - run_tests_on_failures|bool
     - kdevops_run_fstests|bool
 
 - name: Print test list limits for this run
-  debug:
+  ansible.builtin.debug:
     msg: "all_limit_tests: {{ all_limit_tests }}"
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'vars', 'limit-tests' ]
+  tags: ["oscheck", "fstests", "run_tests", "vars", "limit-tests"]
   when:
     - kdevops_run_fstests|bool
     - all_limit_tests is defined
@@ -1231,23 +1243,24 @@
 
 - name: Stop fstests if we're debbugging limit_tests
   ansible.builtin.meta: end_play
-  tags: [ 'oscheck', 'fstests', 'run_tests', 'vars', 'limit-tests' ]
+  tags: ["oscheck", "fstests", "run_tests", "vars", "limit-tests"]
   when:
     - fstests_skip_run|bool
 
 # Recent environments runs are showing that environment variables
 # set below are not propagated. So best to stuff what you need
 # into the .kdevops_fstests_setup file which is sourced by root.
-- name: Run fstests using ./oscheck.sh --print-start --journal {{ fstests_journal }} --print-done --test-section {{ fstests_section }} {{ oscheck_extra_args }} {{ all_limit_tests }}
+- name: Run fstests using ./oscheck.sh --print-start --journal {{ fstests_journal }} --print-done --test-section {{ fstests_section }} {{ oscheck_extra_args }} {{
+    all_limit_tests }}
   vars:
     fstests_section: "{{ ansible_host | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') | regex_replace('-', '_') }}"
     initial_baseline_expunges: "{{ fstests_initial_baseline_args | trim }}"
     skip_tests_args: "{{ fstests_skip_tests_args | trim }}"
-  tags: [ 'oscheck', 'fstests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: |
+  tags: ["oscheck", "fstests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: |
     ./oscheck.sh
       --print-start
       --print-done
@@ -1258,19 +1271,19 @@
       {{ all_limit_tests }}
       {{ initial_baseline_expunges }}
       {{ skip_tests_args }}
-  ignore_errors: yes
-  no_log: True
+  ignore_errors: true
+  no_log: true
   args:
     chdir: "{{ fstests_data_target }}"
   environment:
     FSTYP: "{{ fstests_fstyp }}"
     FSTESTS_SPARSE_FILE_PATH: "{{ sparsefiles_path }}"
     FSTESTS_SETUP_SYSTEM: "{{ fstests_setup_system }}"
-    FSTESTS_LINUX_LOCALVERSION: "{{ target_linux_localversion  | default ('') }}"
+    FSTESTS_LINUX_LOCALVERSION: "{{ target_linux_localversion | default('') }}"
     FSTESTS_TESTDEV_SPARSEFILE_GENERATION: "{{ sparsefiles_generation }}"
     FSTESTS_SPARSE_FILE_SIZE: "{{ sparsefiles_size }}"
     FSTESTS_SPARSE_FILENAME_PREFIX: "{{ sparsefiles_filename_prefix }}"
-    FSTESTS_RUN_LARGE_DISK_TESTS: "{{ run_large_disk_tests | default ('') }}"
+    FSTESTS_RUN_LARGE_DISK_TESTS: "{{ run_large_disk_tests | default('') }}"
     FSTESTS_RUN_AUTO_GROUP_TESTS: "{{ run_auto_group_tests }}"
     FSTESTS_RUN_CUSTOM_GROUP_TESTS: "{{ run_custom_group_tests }}"
     FSTESTS_EXCLUDE_TEST_GROUPS: "{{ exclude_test_groups }}"
@@ -1282,32 +1295,35 @@
     - kdevops_run_fstests|bool
 
 - name: Remove watchdog hint that tests have started
-  local_action: file path="{{ fstests_workflow_dir }}/.begin" state=absent
-  tags: [ 'oscheck', 'fstests', 'run_tests' ]
+  ansible.builtin.file:
+    path: "{{ fstests_workflow_dir }}/.begin"
+    state: absent
+  delegate_to: localhost
+  tags: ["oscheck", "fstests", "run_tests"]
   when:
     - kdevops_run_fstests|bool
   run_once: true
 
 - name: Look for the check.time files on {{ fstests_data_target }}
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'checktime' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  find:
+  tags: ["oscheck", "fstests", "copy_results", "checktime"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.find:
     paths: "{{ fstests_data_target }}"
-    recurse: yes
+    recurse: true
     patterns: "check.time"
   register: checktime_files
 
 - name: Copy the latest run check.time files from {{ fstests_data_target }}
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'checktime' ]
+  tags: ["oscheck", "fstests", "copy_results", "checktime"]
   vars:
     item_path_without_host: "{{ item.path | regex_replace('results') | regex_replace(ansible_host) }}"
-  fetch:
+  ansible.builtin.fetch:
     src: "{{ item.path }}"
     dest: "{{ fstests_results_target }}/{{ item_path_without_host | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
-    flat: yes
-    validate_checksum: False
+    flat: true
+    validate_checksum: false
   with_items: "{{ checktime_files.files }}"
   loop_control:
     label: "{{ item.path | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
@@ -1315,25 +1331,25 @@
     - checktime_files.matched > 0
 
 - name: Look for the check.log files on {{ fstests_data_target }}
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'checklog' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  find:
+  tags: ["oscheck", "fstests", "copy_results", "checklog"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.find:
     paths: "{{ fstests_data_target }}"
-    recurse: yes
+    recurse: true
     patterns: "check.log"
   register: checklog_files
 
 - name: Copy the latest run check.log files from {{ fstests_data_target }}
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'checklog' ]
+  tags: ["oscheck", "fstests", "copy_results", "checklog"]
   vars:
     item_path_without_host: "{{ item.path | regex_replace('results') | regex_replace(ansible_host) }}"
-  fetch:
+  ansible.builtin.fetch:
     src: "{{ item.path }}"
     dest: "{{ fstests_results_target }}/{{ item_path_without_host | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
-    flat: yes
-    validate_checksum: False
+    flat: true
+    validate_checksum: false
   with_items: "{{ checklog_files.files }}"
   loop_control:
     label: "{{ item.path | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
@@ -1341,25 +1357,25 @@
     - checklog_files.matched > 0
 
 - name: Look for xunit results files on {{ fstests_data_target }}
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'xunit' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  find:
+  tags: ["oscheck", "fstests", "copy_results", "xunit"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.find:
     paths: "{{ fstests_data_target }}"
-    recurse: yes
+    recurse: true
     patterns: "*.xml"
   register: xunit_files
 
 - name: Copy xunit results files from {{ fstests_data_target }}
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'xunit' ]
+  tags: ["oscheck", "fstests", "copy_results", "xunit"]
   vars:
     item_path_without_host: "{{ item.path | regex_replace('results') | regex_replace(ansible_host) }}"
-  fetch:
+  ansible.builtin.fetch:
     src: "{{ item.path }}"
     dest: "{{ fstests_results_target }}/{{ item_path_without_host | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
-    flat: yes
-    validate_checksum: False
+    flat: true
+    validate_checksum: false
   with_items: "{{ xunit_files.files }}"
   loop_control:
     label: "{{ item.path | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
@@ -1367,34 +1383,34 @@
     - xunit_files.matched > 0
 
 - name: Look for tests which failed
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'failed_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  find:
+  tags: ["oscheck", "fstests", "copy_results", "failed_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.find:
     paths: "{{ fstests_data_target }}"
-    recurse: yes
+    recurse: true
     patterns: "*.out.bad"
   register: failed_tests
 
 - name: Look for TFB results files
-  tags: [ 'copy_results', 'failed_tests', 'tfb' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  find:
+  tags: ["copy_results", "failed_tests", "tfb"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.find:
     paths: "{{ fstests_data_target }}/results/"
-    recurse: yes
+    recurse: true
     patterns: "*"
     size: "{{ fstests_tfp_copy_size_limit_bytes }}"
-    excludes: '*.xml,*.md'
+    excludes: "*.xml,*.md"
   register: tfb_reg
   when:
     - fstests_tfp_copy_enable_list|bool or fstests_tfp_copy_enable|bool
 
 - name: Show TFB results files
-  tags: [ 'copy_results', 'failed_tests', 'tfb' ]
-  debug:
+  tags: ["copy_results", "failed_tests", "tfb"]
+  ansible.builtin.debug:
     msg: "{{ item.path }}"
   with_items: "{{ tfb_reg.files }}"
   loop_control:
@@ -1403,18 +1419,18 @@
     - fstests_tfp_copy_enable_list|bool
 
 - name: Show TFB results total files greater than {{ fstests_tfp_copy_size_limit_bytes | human_readable(true) }}
-  tags: [ 'copy_results', 'failed_tests', 'tfb' ]
-  debug:
+  tags: ["copy_results", "failed_tests", "tfb"]
+  ansible.builtin.debug:
     msg: "Examined {{ tfb_reg.examined }} files and TFB number of files: {{ tfb_reg.matched }}"
   when:
     - fstests_tfp_copy_enable_list|bool
 
 - name: Truncate TFB files
-  tags: [ 'copy_results', 'failed_tests', 'tfb' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  copy:
+  tags: ["copy_results", "failed_tests", "tfb"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "kdevops TFB trimming enabled, original file size: {{ item.size | human_readable(true) }}"
     dest: "{{ item.path }}"
   with_items: "{{ tfb_reg.files }}"
@@ -1427,44 +1443,44 @@
 # want to consider removing *.md TFB files. Use 'future' tag for these
 # sort of things.
 - name: Look for TFB results *.md files
-  tags: [ 'copy_results', 'failed_tests', 'tfb', 'future' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  find:
+  tags: ["copy_results", "failed_tests", "tfb", "future"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.find:
     paths: "{{ fstests_data_target }}/results/"
-    recurse: yes
+    recurse: true
     patterns: "*.md"
     size: "{{ fstests_tfp_copy_size_limit_bytes }}"
   register: tfb_reg
   when:
-    - False
+    - false
     - fstests_tfp_copy_enable_list|bool or fstests_tfp_copy_enable|bool
 
 - name: Remove TFB results *.md files
-  tags: [ 'copy_results', 'failed_tests', 'tfb', 'future' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  tags: ["copy_results", "failed_tests", "tfb", "future"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ item.path }}"
     state: "absent"
   with_items: "{{ tfb_reg.files }}"
   loop_control:
     label: "{{ item.path }} {{ item.size | human_readable(true) }}"
   when:
-    - False
+    - false
     - fstests_tfp_copy_enable_list|bool or fstests_tfp_copy_enable|bool
 
 - name: Copy over all *.bad files which represent failed tests
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'copy_final', 'failed_tests', 'tfb' ]
+  tags: ["oscheck", "fstests", "copy_results", "copy_final", "failed_tests", "tfb"]
   vars:
     item_path_without_host: "{{ item.path | regex_replace('results') | regex_replace(ansible_host) }}"
-  fetch:
+  ansible.builtin.fetch:
     src: "{{ item.path }}"
     dest: "{{ fstests_results_target }}/{{ item_path_without_host | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
-    flat: yes
-    validate_checksum: False
+    flat: true
+    validate_checksum: false
   with_items: "{{ failed_tests.files }}"
   loop_control:
     label: "{{ item.path | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
@@ -1473,16 +1489,16 @@
     - failed_tests.matched > 0
 
 - name: Check if respective bad full file exists
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'failed_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "copy_results", "failed_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
     tests_full_group_dir: "{{ item.path | dirname }}"
     tests_group_dir: "{{ tests_full_group_dir | split('/') | last }}"
     tests_full_name: "{{ item.path | basename | split('.') | first }}.full"
     tests_name: "{{ tests_group_dir }}/{{ tests_full_name }}"
-  stat:
+  ansible.builtin.stat:
     path: "{{ tests_full_group_dir }}/{{ tests_full_name }}"
   with_items: "{{ failed_tests.files }}"
   loop_control:
@@ -1492,18 +1508,18 @@
     - failed_tests.matched > 0
 
 - name: Copy test full bad result file over
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'failed_tests' ]
+  tags: ["oscheck", "fstests", "copy_results", "failed_tests"]
   vars:
     tests_full_group_dir: "{{ item.item.path | dirname }}"
     tests_group_dir: "{{ tests_full_group_dir | split('/') | last }}"
     tests_full_name: "{{ item.item.path | basename | split('.') | first }}.full"
     tests_name: "{{ tests_group_dir }}/{{ tests_full_name }}"
     item_path_without_host: "{{ item.stat.path | regex_replace('results') | regex_replace(ansible_host) }}"
-  fetch:
+  ansible.builtin.fetch:
     src: "{{ item.stat.path }}"
     dest: "{{ fstests_results_target }}/{{ item_path_without_host | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
-    flat: yes
-    validate_checksum: False
+    flat: true
+    validate_checksum: false
   with_items: "{{ bad_full_file_stats.results }}"
   loop_control:
     label: "Copying over {{ tests_name }}"
@@ -1512,16 +1528,16 @@
     - item.stat.exists
 
 - name: Check if respective dmesg file exists for failed tests
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'failed_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["oscheck", "fstests", "copy_results", "failed_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
     tests_full_group_dir: "{{ item.path | dirname }}"
     tests_group_dir: "{{ tests_full_group_dir | split('/') | last }}"
     tests_dmesg_name: "{{ item.path | basename | split('.') | first }}.dmesg"
     tests_name: "{{ tests_group_dir }}/{{ tests_dmesg_name }}"
-  stat:
+  ansible.builtin.stat:
     path: "{{ tests_full_group_dir }}/{{ tests_dmesg_name }}"
   with_items: "{{ failed_tests.files }}"
   loop_control:
@@ -1531,18 +1547,18 @@
     - failed_tests.matched > 0
 
 - name: Copy test dmesg results file over
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'failed_tests' ]
+  tags: ["oscheck", "fstests", "copy_results", "failed_tests"]
   vars:
     tests_full_group_dir: "{{ item.item.path | dirname }}"
     tests_group_dir: "{{ tests_full_group_dir | split('/') | last }}"
     tests_dmesg_name: "{{ item.item.path | basename | split('.') | first }}.dmesg"
     tests_name: "{{ tests_group_dir }}/{{ tests_dmesg_name }}"
     item_path_without_host: "{{ item.stat.path | regex_replace('results') | regex_replace(ansible_host) }}"
-  fetch:
+  ansible.builtin.fetch:
     src: "{{ item.stat.path }}"
     dest: "{{ fstests_results_target }}/{{ item_path_without_host | regex_replace(fstests_data_target | regex_escape()) | regex_replace('^/', '') }}"
-    flat: yes
-    validate_checksum: False
+    flat: true
+    validate_checksum: false
   with_items: "{{ bad_dmesg_file_stats.results }}"
   loop_control:
     label: "Copying over dmesg {{ tests_name }}"
@@ -1551,53 +1567,62 @@
     - item.stat.exists
 
 - name: Print fstests results to xunit_results.txt on localhost if xunit xml file was found
-  local_action: "shell ./python/workflows/fstests/gen_results_summary --results_file result.xml  --print_section --output_file {{ fstests_results_target }}/{{ last_kernel }}/xunit_results.txt {{ fstests_results_target }}/"
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'print_results', 'augment_expunge_list' ]
+  ansible.builtin.command: ./python/workflows/fstests/gen_results_summary --results_file result.xml  --print_section --output_file {{ fstests_results_target }}/{{
+    last_kernel }}/xunit_results.txt {{ fstests_results_target }}/
+  delegate_to: localhost
+  tags: ["oscheck", "fstests", "copy_results", "print_results", "augment_expunge_list"]
   when:
     - xunit_files.matched > 0
   run_once: true
 
 - name: Print fstests bad results for {{ fstests_fstyp }} to bad_results.txt on localhost
-  local_action: "shell ./python/workflows/fstests/bad_files_summary.py {{ fstests_fstyp }} {{ fstests_results_target }}/ > {{ fstests_results_target }}/bad_results.txt"
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'print_results', 'augment_expunge_list' ]
+  ansible.builtin.shell: ./python/workflows/fstests/bad_files_summary.py {{ fstests_fstyp }} {{ fstests_results_target }}/ > {{ fstests_results_target }}/bad_results.txt
+  delegate_to: localhost
+  tags: ["oscheck", "fstests", "copy_results", "print_results", "augment_expunge_list"]
   when:
     - failed_tests.matched > 0
   run_once: true
 
 - name: Create check.time.distribution files for {{ fstests_results_target }}/results
-  local_action: "shell ./python/workflows/fstests/fstests-checktime-distribution.py {{ fstests_results_target }}"
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'augment_expunge_list' ]
+  ansible.builtin.command: ./python/workflows/fstests/fstests-checktime-distribution.py {{ fstests_results_target }}
+  delegate_to: localhost
+  tags: ["oscheck", "fstests", "copy_results", "augment_expunge_list"]
   run_once: true
   when:
     - checktime_files.matched > 0
 
 - name: Augment expunge list for {{ fstests_fstyp }}, just run git diff after this to see new failures found
-  local_action: "shell ./python/workflows/fstests/augment_expunge_list.py {{ fstests_fstyp }} {{ fstests_results_target }}/ {{ fstests_workflow_dir }}/expunges/"
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'augment_expunge_list' ]
+  ansible.builtin.command: ./python/workflows/fstests/augment_expunge_list.py {{ fstests_fstyp }} {{ fstests_results_target }}/ {{ fstests_workflow_dir }}/expunges/
+  delegate_to: localhost
+  tags: ["oscheck", "fstests", "copy_results", "augment_expunge_list"]
   run_once: true
 
 - name: Print fstests new expunge files for {{ fstests_fstyp }} which are not yet committed
-  local_action: "shell ./python/workflows/fstests/get_new_expunge_files.py {{ fstests_fstyp }} {{ fstests_workflow_dir }}/expunges/ > {{ fstests_results_target }}/new_expunge_files.txt"
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'print_results', 'augment_expunge_list' ]
+  ansible.builtin.shell: ./python/workflows/fstests/get_new_expunge_files.py {{ fstests_fstyp }} {{ fstests_workflow_dir }}/expunges/ > {{ fstests_results_target
+    }}/new_expunge_files.txt
+  delegate_to: localhost
+  tags: ["oscheck", "fstests", "copy_results", "print_results", "augment_expunge_list"]
   run_once: true
 
 - name: Get stat of new files not yet committed, ie, new expunge files
-  local_action: stat path="{{ fstests_results_target }}/new_expunge_files.txt"
+  ansible.builtin.stat:
+    path: "{{ fstests_results_target }}/new_expunge_files.txt"
+  delegate_to: localhost
   register: new_expunge_files_stat
   run_once: true
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'print_results', 'augment_expunge_list' ]
+  tags: ["oscheck", "fstests", "copy_results", "print_results", "augment_expunge_list"]
 
 - name: Inform user if new expunge files have been found
   run_once: true
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'augment_expunge_list' ]
-  debug:
+  tags: ["oscheck", "fstests", "copy_results", "augment_expunge_list"]
+  ansible.builtin.debug:
     msg: "New expunge files found in: {{ fstests_results_target | regex_replace('^../', '') }}new_expunge_files.txt"
   when:
     - new_expunge_files_stat.stat.size != 0
 
 - name: Inform user if no failures have been found
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'augment_expunge_list' ]
-  debug:
+  tags: ["oscheck", "fstests", "copy_results", "augment_expunge_list"]
+  ansible.builtin.debug:
     msg: No *.bad or xunit xml files were found on the target host
   when:
     - failed_tests.matched == 0
@@ -1605,18 +1630,18 @@
     - new_expunge_files_stat.stat.size != 0
 
 - name: Verify last-run kernel directory exists
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'augment_expunge_list' ]
+  tags: ["oscheck", "fstests", "copy_results", "augment_expunge_list"]
   delegate_to: localhost
-  stat:
+  ansible.builtin.stat:
     path: "{{ fstests_results_full_path }}/last-run/{{ last_kernel }}"
   register: last_run_kernel_dir
 
 - name: Copy over the last-run into the results directory for archiving into kdevops
-  copy:
+  ansible.builtin.copy:
     src: "{{ fstests_results_full_path }}/last-run/{{ last_kernel }}"
     dest: "{{ fstests_results_full_path }}/"
   run_once: true
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'augment_expunge_list' ]
+  tags: ["oscheck", "fstests", "copy_results", "augment_expunge_list"]
   delegate_to: localhost
   when:
     - last_run_kernel_dir.stat.exists
@@ -1629,5 +1654,5 @@
     dest: "{{ fstests_results_full_path }}/{{ last_kernel }}.xz"
     format: xz
   run_once: true
-  tags: [ 'oscheck', 'fstests', 'copy_results', 'augment_expunge_list' ]
+  tags: ["oscheck", "fstests", "copy_results", "augment_expunge_list"]
   delegate_to: localhost
diff --git a/playbooks/roles/fstests_prep_localhost/defaults/main.yml b/playbooks/roles/fstests_prep_localhost/defaults/main.yml
index 412f744..44d221a 100644
--- a/playbooks/roles/fstests_prep_localhost/defaults/main.yml
+++ b/playbooks/roles/fstests_prep_localhost/defaults/main.yml
@@ -1,3 +1,3 @@
 # SPDX-License-Identifier copyleft-next-0.3.1
 ---
-install_local_deps: True
+install_local_deps: true
diff --git a/playbooks/roles/fstests_prep_localhost/tasks/install-deps/debian/main.yml b/playbooks/roles/fstests_prep_localhost/tasks/install-deps/debian/main.yml
index 3ed1786..39ba0fb 100644
--- a/playbooks/roles/fstests_prep_localhost/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/fstests_prep_localhost/tasks/install-deps/debian/main.yml
@@ -1,7 +1,7 @@
 ---
 - name: Install local dependencies for fstests command and control
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - python3-junitparser
diff --git a/playbooks/roles/fstests_prep_localhost/tasks/install-deps/main.yml b/playbooks/roles/fstests_prep_localhost/tasks/install-deps/main.yml
index 97c3abc..5be8b6a 100644
--- a/playbooks/roles/fstests_prep_localhost/tasks/install-deps/main.yml
+++ b/playbooks/roles/fstests_prep_localhost/tasks/install-deps/main.yml
@@ -1,9 +1,13 @@
 ---
 # tasks to install dependencies for oscheck
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: tasks/install-deps/suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: tasks/install-deps/redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/fstests_prep_localhost/tasks/install-deps/redhat/main.yml b/playbooks/roles/fstests_prep_localhost/tasks/install-deps/redhat/main.yml
index 1f42ebc..60b50de 100644
--- a/playbooks/roles/fstests_prep_localhost/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/fstests_prep_localhost/tasks/install-deps/redhat/main.yml
@@ -1,9 +1,9 @@
 ---
 - name: Install local dependencies for fstests command and control
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
@@ -15,11 +15,11 @@
       - python-pip
 
 - name: Install junitparser
-  become: yes
-  become_method: sudo
-  pip:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.pip:
     name:
       - junitparser
   when:
     - install_local_deps|bool
-  tags: [ 'local_deps' ]
+  tags: ["local_deps"]
diff --git a/playbooks/roles/fstests_prep_localhost/tasks/install-deps/suse/main.yml b/playbooks/roles/fstests_prep_localhost/tasks/install-deps/suse/main.yml
index a180dd9..524f7c7 100644
--- a/playbooks/roles/fstests_prep_localhost/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/fstests_prep_localhost/tasks/install-deps/suse/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
 
 - name: Set SLE specific version labels to make checks easier
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle10: '{{ ansible_distribution_major_version == "10" }}'
     is_sle11: '{{ ansible_distribution_major_version == "11" }}'
     is_sle12: '{{ ansible_distribution_major_version == "12" }}'
@@ -22,19 +22,19 @@
     - is_sle|bool
 
 - name: By default we assume we have figured out how to add repos on a release
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: true
 
 - name: Lets us disable things which require a zypper repo present
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: false
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
 
 - name: Install local dependencies for fstests command and control
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - python3-junit-xml
@@ -43,14 +43,14 @@
   when:
     - repos_present|bool
     - install_local_deps|bool
-  tags: [ 'local_deps' ]
+  tags: ["local_deps"]
 
 - name: Install junitparser
-  become: yes
-  become_method: sudo
-  pip:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.pip:
     name:
       - junitparser
   when:
     - install_local_deps|bool
-  tags: [ 'local_deps' ]
+  tags: ["local_deps"]
diff --git a/playbooks/roles/fstests_prep_localhost/tasks/main.yml b/playbooks/roles/fstests_prep_localhost/tasks/main.yml
index 5088f8e..a01161d 100644
--- a/playbooks/roles/fstests_prep_localhost/tasks/main.yml
+++ b/playbooks/roles/fstests_prep_localhost/tasks/main.yml
@@ -1,15 +1,15 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 # Distro specific
 - name: Install our own fstests localhost dependencies
-  include_tasks: install-deps/main.yml
+  ansible.builtin.include_tasks: install-deps/main.yml
diff --git a/playbooks/roles/gen_hosts/defaults/main.yml b/playbooks/roles/gen_hosts/defaults/main.yml
index bd0b87c..c62debf 100644
--- a/playbooks/roles/gen_hosts/defaults/main.yml
+++ b/playbooks/roles/gen_hosts/defaults/main.yml
@@ -2,9 +2,9 @@
 ---
 topdir_path: "/dev/null"
 
-hosts_type_generic: True
-hosts_type_fs: False
-hosts_type_block: False
+hosts_type_generic: true
+hosts_type_fs: false
+hosts_type_block: false
 
 kdevops_hosts_template: "hosts.in"
 kdevops_playbooks_dir: "/dev/null"
@@ -12,33 +12,33 @@ kdevops_genhosts_templates_dir: "/dev/null"
 kdevops_hosts_prefix: "kdevops"
 kdevops_python_interpreter: "/usr/bin/python3"
 kdevops_python_old_interpreter: "/usr/bin/python2"
-kdevops_baseline_and_dev: False
+kdevops_baseline_and_dev: false
 kdevops_playbooks_dir_full_path: "/dev/null"
 kdevops_hosts_template_full_path: "/dev/null"
 
-kdevops_workflows_dedicated_workflow: False
-kdevops_workflow_enable_fstests: False
-kdevops_workflow_enable_blktests: False
-kdevops_workflow_enable_selftests: False
+kdevops_workflows_dedicated_workflow: false
+kdevops_workflow_enable_fstests: false
+kdevops_workflow_enable_blktests: false
+kdevops_workflow_enable_selftests: false
 
-kdevops_workflow_enable_cxl: False
-kdevops_workflow_enable_pynfs: False
-kdevops_workflow_enable_gitr: False
-kdevops_workflow_enable_ltp: False
+kdevops_workflow_enable_cxl: false
+kdevops_workflow_enable_pynfs: false
+kdevops_workflow_enable_gitr: false
+kdevops_workflow_enable_ltp: false
 kdevops_workflow_enable_nfstest: false
 kdevops_workflow_enable_sysbench: false
 kdevops_workflow_enable_fio_tests: false
-kdevops_workflow_enable_mmtests: False
+kdevops_workflow_enable_mmtests: false
 
-is_fstests: False
+is_fstests: false
 fstests_fstyp: "bogus"
 fs_config_role_path: "/dev/null"
 fs_config_data: "[section_1]"
 
-kdevops_nfsd_enable: False
-kdevops_loopback_nfs_enable: False
-kdevops_smbd_enable: False
-kdevops_krb5_enable: False
+kdevops_nfsd_enable: false
+kdevops_loopback_nfs_enable: false
+kdevops_smbd_enable: false
+kdevops_krb5_enable: false
 kdevops_enable_iscsi: false
 
 bootlinux_builder: false
diff --git a/playbooks/roles/gen_hosts/tasks/main.yml b/playbooks/roles/gen_hosts/tasks/main.yml
index 0a742d8..5437949 100644
--- a/playbooks/roles/gen_hosts/tasks/main.yml
+++ b/playbooks/roles/gen_hosts/tasks/main.yml
@@ -1,33 +1,35 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Get our user
-  command: "whoami"
+  ansible.builtin.command: "whoami"
+  changed_when: false
   register: my_user
 
 - name: Get our primary group
-  command: "id -g -n"
+  ansible.builtin.command: "id -g -n"
+  changed_when: false
   register: my_group
 
 - name: Check if the inventory file exists already
-  stat:
+  ansible.builtin.stat:
     path: "{{ ansible_cfg_inventory }}"
   register: kdevops_hosts_dest
 
 - name: Ensure proper permission on the inventory file
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ ansible_cfg_inventory }}"
     owner: "{{ my_user.stdout }}"
     group: "{{ my_group.stdout }}"
@@ -35,13 +37,13 @@
     - kdevops_hosts_dest.stat.exists
 
 - name: Verify Ansible inventory template file exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ kdevops_hosts_template_full_path }}"
   register: ansible_hosts_template
 
 - name: Set fstests config file variable for {{ fstests_fstyp }}
-  set_fact:
-    is_fstests: True
+  ansible.builtin.set_fact:
+    is_fstests: true
     fs_config_path: "{{ kdevops_playbooks_dir_full_path }}/{{ fs_config_role_path }}"
   when:
     - kdevops_workflows_dedicated_workflow
@@ -50,32 +52,32 @@
   tags: vars
 
 - name: Verify fstest config file exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ fs_config_path }}"
   register: fstests_config_file_reg
   when:
     - is_fstests|bool
 
 - name: Generate the Ansible hosts file for a Linux kernel build
-  tags: [ 'hosts' ]
-  template:
+  tags: ["hosts"]
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ ansible_cfg_inventory }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - bootlinux_builder
     - ansible_hosts_template.stat.exists
 
 - name: Generate the Ansible inventory file
-  tags: [ 'hosts' ]
-  template:
+  tags: ["hosts"]
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ ansible_cfg_inventory }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - not kdevops_workflows_dedicated_workflow
     - ansible_hosts_template.stat.exists
@@ -84,39 +86,39 @@
   ansible.builtin.file:
     path: "{{ ansible_cfg_inventory }}"
     state: touch
-    mode: '0755'
+    mode: "0755"
 
 - name: Generate the Ansible inventory file for dedicated cxl work
-  tags: [ 'hosts' ]
-  template:
+  tags: ["hosts"]
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ anisble_cfg_inventory }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_cxl
     - ansible_hosts_template.stat.exists
 
 - name: Generate the Ansible inventory file for dedicated pynfs work
-  tags: [ 'hosts' ]
-  template:
+  tags: ["hosts"]
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ ansible_cfg_inventory }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_pynfs
     - ansible_hosts_template.stat.exists
 
 - name: Generate the Ansible inventory file for dedicated gitr workflow
-  tags: [ 'hosts' ]
+  tags: ["hosts"]
   vars:
-    gitr_enabled_hosts: "{{ gitr_enabled_test_groups|ansible.builtin.split }}"
-  template:
+    gitr_enabled_hosts: "{{ gitr_enabled_test_groups | ansible.builtin.split }}"
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ ansible_cfg_inventory }}"
     force: true
@@ -128,25 +130,25 @@
     - ansible_hosts_template.stat.exists
 
 - name: Generate an Ansible inventory file for a dedicated ltp workflow
-  tags: [ 'hosts' ]
+  tags: ["hosts"]
   vars:
-    ltp_enabled_hosts: "{{ ltp_enabled_test_groups|ansible.builtin.split }}"
+    ltp_enabled_hosts: "{{ ltp_enabled_test_groups | ansible.builtin.split }}"
   ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ ansible_cfg_inventory }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_ltp
     - ansible_hosts_template.stat.exists
 
 - name: Generate the Ansible inventory file for dedicated nfstest workflow
-  tags: [ 'hosts' ]
+  tags: ["hosts"]
   vars:
     nfstest_enabled_hosts: "{{ nfstest_enabled_test_groups | ansible.builtin.split }}"
-  template:
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ ansible_cfg_inventory }}"
     force: true
@@ -158,8 +160,8 @@
     - ansible_hosts_template.stat.exists
 
 - name: Set empty enabled test types list for fstests
-  tags: [ 'hosts' ]
-  set_fact:
+  tags: ["hosts"]
+  ansible.builtin.set_fact:
     fstests_enabled_test_types: []
   when:
     - is_fstests
@@ -176,12 +178,12 @@
     sections_lines: "{{ sections_without_default_and_nfsd | regex_findall('^\\[(.*)', multiline=True) }}"
     clean_section_lines: "{{ sections_lines | regex_replace('\\[') | regex_replace('\\]') }}"
     clean_section_lines_without_fsname: "{{ clean_section_lines | regex_replace(fstests_fstyp + '_') }}"
-    config_sections_targets: "{{ clean_section_lines_without_fsname |  replace(\"'\", '') | split(', ') }}"
-  lineinfile:
+    config_sections_targets: "{{ clean_section_lines_without_fsname | replace(\"'\", '') | split(', ') }}"
+  ansible.builtin.lineinfile:
     path: "{{ topdir_path }}/.config"
-    regexp: '^({{ config_val + item.upper() }})=y'
-    line: ''
-  check_mode: yes
+    regexp: "^({{ config_val + item.upper() }})=y"
+    line: ""
+  check_mode: true
   with_items: "{{ config_sections_targets }}"
   loop_control:
     label: "Checking for {{ config_val + item.upper() }}"
@@ -190,9 +192,9 @@
     - ansible_hosts_template.stat.exists
 
 - name: Now expand the list of enabled fstests for valid configuration sections
-  tags: [ 'hosts' ]
-  set_fact:
-    fstests_enabled_test_types: "{{ fstests_enabled_test_types  + [ fstests_fstyp + '-' + item.item | regex_replace('_', '-') ] }}"
+  tags: ["hosts"]
+  ansible.builtin.set_fact:
+    fstests_enabled_test_types: "{{ fstests_enabled_test_types + [fstests_fstyp + '-' + item.item | regex_replace('_', '-')] }}"
   with_items: "{{ fstests_enabled_test_types_reg.results }}"
   loop_control:
     label: "Checking for {{ item.item }} "
@@ -202,26 +204,26 @@
     - item.changed
 
 - name: Generate the Ansible inventory file for a dedicated fstests setup
-  tags: [ 'hosts' ]
+  tags: ["hosts"]
   vars:
     fs_config_data: "{{ lookup('file', fs_config_path) }}"
     sections_without_default: "{{ fs_config_data | regex_replace('\\[default\\]', multiline=True) }}"
     sections_lines: "{{ sections_without_default | regex_findall('^\\[(.*)', multiline=True) }}"
     clean_section_lines: "{{ sections_lines | regex_replace('\\[') | regex_replace('\\]') }}"
-    sections_replace_underscore: "{{ clean_section_lines |  replace('_', '-') }}"
-    sections: "{{ sections_replace_underscore |  replace(\"'\", '') | split(', ') }}"
-  template:
+    sections_replace_underscore: "{{ clean_section_lines | replace('_', '-') }}"
+    sections: "{{ sections_replace_underscore | replace(\"'\", '') | split(', ') }}"
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ ansible_cfg_inventory }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - is_fstests
     - ansible_hosts_template.stat.exists
 
 - name: Infer enabled blktests test section types
-  set_fact:
+  ansible.builtin.set_fact:
     blktests_enabled_test_types: >-
       {{
         lookup('file', topdir_path + '/.config')
@@ -235,22 +237,22 @@
     - ansible_hosts_template.stat.exists
 
 - name: Debug inferring block test types
-  debug:
+  ansible.builtin.debug:
     var: blktests_enabled_test_types
   when:
-    - False
+    - false
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_blktests
     - ansible_hosts_template.stat.exists
 
 - name: Generate the Ansible inventory file for a dedicated blktests setup
-  tags: [ 'hosts' ]
-  template:
+  tags: ["hosts"]
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ ansible_cfg_inventory }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_blktests
@@ -259,25 +261,25 @@
 - name: Infer enabled selftests test section types
   ansible.builtin.set_fact:
     selftests_enabled_test_types: >-
-     {{
-       lookup('file', topdir_path + '/.config')
-       | regex_findall('^CONFIG_SELFTESTS_SECTION_(.*)=y$', multiline=True)
-       | map('lower')
-       | list
-     }}
+      {{
+        lookup('file', topdir_path + '/.config')
+        | regex_findall('^CONFIG_SELFTESTS_SECTION_(.*)=y$', multiline=True)
+        | map('lower')
+        | list
+      }}
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_selftests
     - ansible_hosts_template.stat.exists
 
 - name: Generate the Ansible inventory file for a dedicated selftests setup
-  tags: [ 'hosts' ]
-  template:
+  tags: ["hosts"]
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ ansible_cfg_inventory }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_selftests
@@ -286,8 +288,9 @@
 - name: Collect dynamically supported filesystems
   vars:
     supported_filesystems_variables: "{{ vars | dict2items | selectattr('key', 'search', '^sysbench_supported_filesystem_') }}"
-    supported_filesystems: "{{ supported_filesystems_variables | selectattr('value', 'eq', True) | map(attribute='key') | map('regex_replace', '^sysbench_supported_filesystem_', '') | list }}"
-  set_fact:
+    supported_filesystems: "{{ supported_filesystems_variables | selectattr('value', 'eq', True) | map(attribute='key') | map('regex_replace', '^sysbench_supported_filesystem_',
+      '') | list }}"
+  ansible.builtin.set_fact:
     sysbench_enabled_filesystems: "{{ supported_filesystems }}"
     enabled_sysbench_tests: "{{ [] }}"
   when:
@@ -305,27 +308,27 @@
     enabled_fs_sections: "{{ enabled_fs_sysbench | map('regex_replace', 'sysbench_', '') }}"
     enabled_fs: "{{ enabled_fs_sections | map('regex_replace', 'section_', '') }}"
     enabled_fs_node: "{{ enabled_fs | map('regex_replace', '_', '-') }}"
-  set_fact:
+  ansible.builtin.set_fact:
     enabled_sysbench_tests: "{{ enabled_sysbench_tests + enabled_fs_node }}"
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_sysbench
 
 - name: Generate the Ansible inventory file for a dedicated sysbench setup
-  tags: [ 'hosts' ]
-  template:
+  tags: ["hosts"]
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ ansible_cfg_inventory }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_sysbench
     - ansible_hosts_template.stat.exists
 
 - name: Infer enabled mmtests test types
-  set_fact:
+  ansible.builtin.set_fact:
     mmtests_enabled_test_types: >-
       {{
         lookup('file', topdir_path + '/.config')
@@ -339,26 +342,26 @@
     - ansible_hosts_template.stat.exists
 
 - name: Generate the Ansible hosts file for a dedicated mmtests setup
-  tags: [ 'hosts' ]
-  template:
+  tags: ["hosts"]
+  ansible.builtin.template:
     src: "{{ kdevops_hosts_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_hosts }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_mmtests
     - ansible_hosts_template.stat.exists
 
 - name: Verify if final host file exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ ansible_cfg_inventory }}"
   register: final_hosts_file
 
 - name: Fail if the dedicated workflow has no rules for node configuration for hosts file configuration
-  tags: [ 'hosts' ]
-  fail:
+  tags: ["hosts"]
+  ansible.builtin.fail:
     msg: "Your dedicated workflow lacks rules for what nodes to use, go work on allowed topologies to parallelize testing one per node"
   when:
     - kdevops_workflows_dedicated_workflow
diff --git a/playbooks/roles/gen_nodes/defaults/main.yml b/playbooks/roles/gen_nodes/defaults/main.yml
index 6aed530..d4a416b 100644
--- a/playbooks/roles/gen_nodes/defaults/main.yml
+++ b/playbooks/roles/gen_nodes/defaults/main.yml
@@ -1,72 +1,72 @@
 # SPDX-License-Identifier GPL-2.0+
 ---
-kdevops_enable_guestfs: False
-kdevops_enable_terraform: False
+kdevops_enable_guestfs: false
+kdevops_enable_terraform: false
 kdevops_nodes: "kdevops_nodes.yaml"
-kdevops_baseline_and_dev: False
-kdevops_workflow_enable_cxl: False
-kdevops_workflow_enable_pynfs: False
-kdevops_workflow_enable_gitr: False
-kdevops_workflow_enable_ltp: False
+kdevops_baseline_and_dev: false
+kdevops_workflow_enable_cxl: false
+kdevops_workflow_enable_pynfs: false
+kdevops_workflow_enable_gitr: false
+kdevops_workflow_enable_ltp: false
 kdevops_workflow_enable_nfstest: false
-kdevops_workflow_enable_selftests: False
-kdevops_workflow_enable_mmtests: False
-kdevops_workflow_enable_fio_tests: False
-kdevops_nfsd_enable: False
-kdevops_smbd_enable: False
-kdevops_krb5_enable: False
+kdevops_workflow_enable_selftests: false
+kdevops_workflow_enable_mmtests: false
+kdevops_workflow_enable_fio_tests: false
+kdevops_nfsd_enable: false
+kdevops_smbd_enable: false
+kdevops_krb5_enable: false
 kdevops_enable_iscsi: false
 
-virtualbox_provider: False
-libvirt_provider: False
+virtualbox_provider: false
+libvirt_provider: false
 
-libvirt_extra_drive_format: 'qcow2'
+libvirt_extra_drive_format: "qcow2"
 libvirt_vcpus_count: 8
 libvirt_mem_mb: 4096
-gdb_port_conflict: False
-libvirt_enable_gdb: False
+gdb_port_conflict: false
+libvirt_enable_gdb: false
 libvirt_gdb_baseport: 1234
 qemu_bin_path: "/usr/bin/qemu-system-x86_64"
 extra_disk_path: "./nvme_disks"
 extra_disk_driver: "nvme"
 extra_disk_controller: "NVMe"
-nvme_zone_enable: False
+nvme_zone_enable: false
 nvme_zone_drive_size: 102400
 nvme_zone_zasl: 0
-nvme_zone_size: '128M'
+nvme_zone_size: "128M"
 nvme_zone_capacity: 0
 nvme_zone_max_active: 0
 nvme_zone_max_open: 0
 nvme_zone_physical_block_size: 4096
 nvme_zone_logical_block_size: 4096
 kdevops_storage_pool_path: "/var/lib/libvirt/images/"
-libvirt_storage_pool_create: False
-libvirt_uri: 'qemu:///system'
-libvirt_system_uri: 'qemu:///system'
-libvirt_session: False
-libvirt_session_socket: '/run/libvirt/libvirt-sock-ro'
-libvirt_session_management_network_device: 'virbr0'
-libvirt_session_public_network_dev: 'virbr0'
-libvirt_override_machine_type: False
+libvirt_storage_pool_create: false
+libvirt_uri: "qemu:///system"
+libvirt_system_uri: "qemu:///system"
+libvirt_session: false
+libvirt_session_socket: "/run/libvirt/libvirt-sock-ro"
+libvirt_session_management_network_device: "virbr0"
+libvirt_session_public_network_dev: "virbr0"
+libvirt_override_machine_type: false
 libvirt_qemu_group: libvirt-qemu
 # we imply this is this the default for libvirt, we however
 # don't actually use this variable unless libvirt_override_machine_type is
 # True. So by default we use whatever libvirt uses by default.
-libvirt_machine_type: 'pc'
-libvirt_host_passthrough: False
-libvirt_enable_cxl: False
-libvirt_enable_qmp: False
+libvirt_machine_type: "pc"
+libvirt_host_passthrough: false
+libvirt_enable_cxl: false
+libvirt_enable_qmp: false
 libvirt_qemu_qmp_string: ""
-libvirt_qemu_qmp_wait: False
-libvirt_enable_cxl_demo_topo1: False
-libvirt_enable_cxl_demo_topo2: False
-libvirt_enable_cxl_switch_topo1: False
-libvirt_enable_cxl_dcd_topo1: False
-libvirt_extra_drive_id_prefix: 'drv'
-libvirt_extra_storage_drive_nvme: False
-libvirt_extra_storage_drive_virtio: False
-libvirt_extra_storage_drive_ide: False
-libvirt_extra_storage_drive_scsi: False
+libvirt_qemu_qmp_wait: false
+libvirt_enable_cxl_demo_topo1: false
+libvirt_enable_cxl_demo_topo2: false
+libvirt_enable_cxl_switch_topo1: false
+libvirt_enable_cxl_dcd_topo1: false
+libvirt_extra_drive_id_prefix: "drv"
+libvirt_extra_storage_drive_nvme: false
+libvirt_extra_storage_drive_virtio: false
+libvirt_extra_storage_drive_ide: false
+libvirt_extra_storage_drive_scsi: false
 libvirt_extra_storage_aio_mode: "native"
 libvirt_extra_storage_aio_cache_mode: "none"
 # Note that NVMe on qemu does not allow the physical block size
@@ -75,26 +75,25 @@ libvirt_extra_storage_nvme_logical_block_size: 512
 libvirt_extra_storage_virtio_logical_block_size: 512
 libvirt_extra_storage_virtio_physical_block_size: 512
 
-libvirt_largeio_enable: False
-libvirt_largeio_logical_compat: False
+libvirt_largeio_enable: false
+libvirt_largeio_logical_compat: false
 libvirt_largeio_logical_compat_size: 512
 libvirt_largeio_drives_per_space: 6
 libvirt_largeio_base_size: 10240
 libvirt_largeio_pow_limit: 12
 
-kdevops_workflows_dedicated_workflow: False
-kdevops_workflow_enable_fstests: False
-kdevops_workflow_enable_blktests: False
+kdevops_workflows_dedicated_workflow: false
+kdevops_workflow_enable_fstests: false
+kdevops_workflow_enable_blktests: false
 
 builder_nodes: []
 iscsi_nodes: []
-
-is_fstests: False
+is_fstests: false
 fstests_fstyp: "bogus"
 fs_config_role_path: "/dev/null"
 fs_config_data: "[section_1]"
 
-bootlinux_9p: False
+bootlinux_9p: false
 bootlinux_9p_host_path: "/dev/null"
 bootlinux_9p_msize: 0
 bootlinux_9p_fsdev: "ignore"
@@ -104,14 +103,14 @@ bootlinux_9p_driver: "virtio-9p-pci"
 
 bootlinux_builder: false
 
-guestfs_requires_uefi: False
+guestfs_requires_uefi: false
 
-kdevops_workflow_enable_sysbench: False
+kdevops_workflow_enable_sysbench: false
 
-pcie_passthrough_enable: False
-pcie_passthrough_target_type_first_guest: False
-pcie_passthrough_target_type_all_one_guest_name: False
-pcie_passthrough_target_type_each_per_device: False
+pcie_passthrough_enable: false
+pcie_passthrough_target_type_first_guest: false
+pcie_passthrough_target_type_all_one_guest_name: false
+pcie_passthrough_target_type_each_per_device: false
 pcie_passthrough_target_type: "first_guest"
 pcie_passthrough_target: "ignore"
 pcie_passthrough_devices:
diff --git a/playbooks/roles/gen_nodes/tasks/main.yml b/playbooks/roles/gen_nodes/tasks/main.yml
index 4192ae8..a7710c6 100644
--- a/playbooks/roles/gen_nodes/tasks/main.yml
+++ b/playbooks/roles/gen_nodes/tasks/main.yml
@@ -1,21 +1,23 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Get our user
-  command: "whoami"
+  ansible.builtin.command: "whoami"
+  changed_when: false
   register: my_user
 
 - name: Get our primary group
-  command: "id -g -n"
+  ansible.builtin.command: "id -g -n"
+  changed_when: false
   register: my_group
 
 - name: Create guestfs directory
@@ -25,27 +27,27 @@
   when: kdevops_enable_guestfs|bool
 
 - name: Verify Ansible nodes template file exists {{ kdevops_nodes_template_full_path }}
-  stat:
+  ansible.builtin.stat:
     path: "{{ kdevops_nodes_template_full_path }}"
   register: ansible_nodes_template
 
 - name: Set generic nodes array
   tags: vars
-  set_fact:
-    generic_nodes: "{{ [ kdevops_host_prefix ] }}"
+  ansible.builtin.set_fact:
+    generic_nodes: "{{ [kdevops_host_prefix] }}"
   when:
     - not kdevops_baseline_and_dev
 
 - name: Set generic nodes array on dual baseline and dev systems
   tags: vars
-  set_fact:
-    generic_nodes: "{{ [ kdevops_host_prefix ] + [ kdevops_host_prefix + '-dev' ] }}"
+  ansible.builtin.set_fact:
+    generic_nodes: "{{ [kdevops_host_prefix] + [kdevops_host_prefix + '-dev'] }}"
   when:
     - kdevops_baseline_and_dev
 
 - name: Set builder nodes array
   tags: vars
-  set_fact:
+  ansible.builtin.set_fact:
     builder_nodes:
       - "{{ kdevops_host_prefix + '-builder' }}"
   when:
@@ -64,44 +66,44 @@
     - kdevops_enable_iscsi|bool
 
 - name: Set nfsd_nodes list
-  set_fact:
-    nfsd_nodes: "{{ [ kdevops_host_prefix + '-nfsd' ] }}"
+  ansible.builtin.set_fact:
+    nfsd_nodes: "{{ [kdevops_host_prefix + '-nfsd'] }}"
   when:
     - kdevops_nfsd_enable|bool
 
 - name: Add an nfs server if one was selected
-  set_fact:
+  ansible.builtin.set_fact:
     generic_nodes: "{{ generic_nodes + nfsd_nodes }}"
   when:
     - kdevops_nfsd_enable|bool
 
 - name: Set smbd_nodes list
-  set_fact:
-    smbd_nodes: "{{ [ kdevops_host_prefix + '-smbd' ] }}"
+  ansible.builtin.set_fact:
+    smbd_nodes: "{{ [kdevops_host_prefix + '-smbd'] }}"
   when:
     - kdevops_smbd_enable|bool
 
 - name: Add an smb server if one was selected
-  set_fact:
+  ansible.builtin.set_fact:
     generic_nodes: "{{ generic_nodes + smbd_nodes }}"
   when:
     - kdevops_smbd_enable|bool
 
 - name: Set kdc_nodes list
-  set_fact:
-    kdc_nodes: "{{ [ kdevops_host_prefix + '-kdc' ] }}"
+  ansible.builtin.set_fact:
+    kdc_nodes: "{{ [kdevops_host_prefix + '-kdc'] }}"
   when:
     - kdevops_krb5_enable|bool
 
 - name: Add a KRB5 KDC if one was selected
-  set_fact:
+  ansible.builtin.set_fact:
     generic_nodes: "{{ generic_nodes + kdc_nodes }}"
   when:
     - kdevops_krb5_enable|bool
 
 - name: Set fstests config file variable for {{ fstests_fstyp }}
-  set_fact:
-    is_fstests: True
+  ansible.builtin.set_fact:
+    is_fstests: true
     fs_config_path: "{{ kdevops_playbooks_dir_full_path }}/{{ fs_config_role_path }}"
   when:
     - kdevops_workflows_dedicated_workflow
@@ -110,22 +112,22 @@
   tags: vars
 
 - name: Verify fstest config file exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ fs_config_path }}"
   register: fstests_config_file_reg
   when:
     - is_fstests|bool
 
 - name: Check if {{ kdevops_nodes }} exists already
-  stat:
+  ansible.builtin.stat:
     path: "{{ topdir_path }}/{{ kdevops_nodes }}"
   register: kdevops_nodes_dest
 
 - name: Ensure proper permission on {{ kdevops_nodes }}
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ topdir_path }}/{{ kdevops_nodes }}"
     owner: "{{ my_user.stdout }}"
     group: "{{ my_group.stdout }}"
@@ -133,58 +135,58 @@
     - kdevops_nodes_dest.stat.exists
 
 - name: Generate the generic kdevops nodes file using {{ kdevops_nodes_template }} as jinja2 source template
-  tags: [ 'nodes' ]
+  tags: ["nodes"]
   vars:
     node_template: "{{ kdevops_nodes_template | basename }}"
     all_generic_nodes: "{{ generic_nodes }}"
     nodes: "{{ all_generic_nodes }}"
-  template:
+  ansible.builtin.template:
     src: "{{ node_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
-    force: yes
+    force: true
   when:
     - not kdevops_workflows_dedicated_workflow
     - ansible_nodes_template.stat.exists
 
 - name: Generate the builder kdevops nodes file using {{ kdevops_nodes_template }} as jinja2 source template
-  tags: [ 'nodes' ]
+  tags: ["nodes"]
   vars:
     node_template: "{{ kdevops_nodes_template | basename }}"
     all_generic_nodes: "{{ builder_nodes }}"
     nodes: "{{ all_generic_nodes }}"
-  template:
+  ansible.builtin.template:
     src: "{{ node_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
-    force: yes
+    force: true
   when:
     - bootlinux_builder
     - ansible_nodes_template.stat.exists
 
 - name: Generate the pynfs kdevops nodes file using {{ kdevops_nodes_template }} as jinja2 source template
-  tags: [ 'nodes' ]
+  tags: ["nodes"]
   vars:
     node_template: "{{ kdevops_nodes_template | basename }}"
     all_generic_nodes: "{{ nfsd_nodes + iscsi_nodes }}"
     nodes: "{{ all_generic_nodes }}"
-  template:
+  ansible.builtin.template:
     src: "{{ node_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
-    force: yes
+    force: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_pynfs
     - ansible_nodes_template.stat.exists
 
 - name: Generate the cxl kdevops nodes file using {{ kdevops_nodes_template }} as jinja2 source template
-  tags: [ 'nodes' ]
+  tags: ["nodes"]
   vars:
     node_template: "{{ kdevops_nodes_template | basename }}"
     all_generic_nodes: "{{ generic_nodes }}"
     nodes: "{{ all_generic_nodes }}"
-  template:
+  ansible.builtin.template:
     src: "{{ node_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
-    force: yes
+    force: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_cxl
@@ -221,8 +223,8 @@
     - ansible_nodes_template.stat.exists
 
 - name: Set empty enabled test types list for fstests
-  tags: [ 'hosts' ]
-  set_fact:
+  tags: ["hosts"]
+  ansible.builtin.set_fact:
     fstests_enabled_nodes: []
   when:
     - is_fstests|bool
@@ -239,12 +241,12 @@
     sections_lines: "{{ sections_without_default_and_nfsd | regex_findall('^\\[(.*)', multiline=True) }}"
     clean_section_lines: "{{ sections_lines | regex_replace('\\[') | regex_replace('\\]') }}"
     clean_section_lines_without_fsname: "{{ clean_section_lines | regex_replace(fstests_fstyp + '_') }}"
-    config_sections_targets: "{{ clean_section_lines_without_fsname |  replace(\"'\", '') | split(', ') }}"
-  lineinfile:
+    config_sections_targets: "{{ clean_section_lines_without_fsname | replace(\"'\", '') | split(', ') }}"
+  ansible.builtin.lineinfile:
     path: "{{ topdir_path }}/.config"
-    regexp: '^({{ config_val + item.upper() }})=y'
-    line: ''
-  check_mode: yes
+    regexp: "^({{ config_val + item.upper() }})=y"
+    line: ""
+  check_mode: true
   with_items: "{{ config_sections_targets }}"
   loop_control:
     label: "Checking for {{ config_val + item.upper() }}"
@@ -253,12 +255,12 @@
     - ansible_nodes_template.stat.exists
 
 - name: Now expand the list of enabled fstests for valid configuration sections
-  tags: [ 'nodes' ]
+  tags: ["nodes"]
   vars:
     fs_test_section: "{{ fstests_fstyp + '-' + item.item | regex_replace('_', '-') }}"
     node: "{{ kdevops_host_prefix + '-' + fs_test_section }}"
-  set_fact:
-    fstests_enabled_nodes: "{{ fstests_enabled_nodes + [ node ] }}"
+  ansible.builtin.set_fact:
+    fstests_enabled_nodes: "{{ fstests_enabled_nodes + [node] }}"
   with_items: "{{ fstests_enabled_test_types_reg.results }}"
   loop_control:
     label: "Checking for {{ item.item }} "
@@ -269,12 +271,12 @@
     - not kdevops_baseline_and_dev
 
 - name: Now expand the list of enabled fstests for valid configuration sections with dev hosts
-  tags: [ 'nodes' ]
+  tags: ["nodes"]
   vars:
     fs_test_section: "{{ fstests_fstyp + '-' + item.item | regex_replace('_', '-') }}"
     node: "{{ kdevops_host_prefix + '-' + fs_test_section }}"
-  set_fact:
-    fstests_enabled_nodes: "{{ fstests_enabled_nodes + [ node ] + [ node + '-dev' ] }}"
+  ansible.builtin.set_fact:
+    fstests_enabled_nodes: "{{ fstests_enabled_nodes + [node] + [node + '-dev'] }}"
   with_items: "{{ fstests_enabled_test_types_reg.results }}"
   loop_control:
     label: "Checking for {{ item.item }} "
@@ -285,14 +287,14 @@
     - kdevops_baseline_and_dev
 
 - name: Add the nfs server if one was selected
-  set_fact:
+  ansible.builtin.set_fact:
     fstests_enabled_nodes: "{{ fstests_enabled_nodes + nfsd_nodes }}"
   when:
     - is_fstests|bool
     - kdevops_nfsd_enable|bool
 
 - name: Add the smb server if one was selected
-  set_fact:
+  ansible.builtin.set_fact:
     fstests_enabled_nodes: "{{ fstests_enabled_nodes + smbd_nodes }}"
   when:
     - is_fstests|bool
@@ -306,28 +308,28 @@
     - kdevops_enable_iscsi|bool
 
 - name: Add the KRB5 KDC if one was selected
-  set_fact:
+  ansible.builtin.set_fact:
     fstests_enabled_nodes: "{{ fstests_enabled_nodes + kdc_nodes }}"
   when:
     - is_fstests|bool
     - kdevops_krb5_enable|bool
 
 - name: Generate the fstests kdevops nodes file using {{ kdevops_nodes_template }} as jinja2 source template
-  tags: [ 'hosts' ]
+  tags: ["hosts"]
   vars:
     node_template: "{{ kdevops_nodes_template | basename }}"
-    nodes: "{{ fstests_enabled_nodes |  regex_replace('\\[') | regex_replace('\\]') | replace(\"'\", '') | split(', ') }}"
+    nodes: "{{ fstests_enabled_nodes | regex_replace('\\[') | regex_replace('\\]') | replace(\"'\", '') | split(', ') }}"
     all_generic_nodes: "{{ fstests_enabled_nodes }}"
-  template:
+  ansible.builtin.template:
     src: "{{ node_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
-    force: yes
+    force: true
   when:
     - is_fstests|bool
     - ansible_nodes_template.stat.exists
 
 - name: Infer enabled blktests test section types
-  set_fact:
+  ansible.builtin.set_fact:
     blktests_enabled_test_types: >-
       {{
         [kdevops_host_prefix + '-']
@@ -354,7 +356,7 @@
     config_block_test_types: "{{ kdevops_config_data | regex_findall('^' + config_val + '(.*)=y$', multiline=True) }}"
     config_block_test_type_names: "{{ config_block_test_types | lower }}"
     all_nodes: "{{ [kdevops_host_prefix + '-'] | product(config_block_test_type_names) | map('join') | list }}"
-  set_fact:
+  ansible.builtin.set_fact:
     blktests_enabled_test_types: "{{ all_nodes | product(['', '-dev']) | map('join') | list }}"
   when:
     - kdevops_workflows_dedicated_workflow
@@ -363,24 +365,24 @@
     - kdevops_baseline_and_dev
 
 - name: Debug inferring block test types
-  debug:
+  ansible.builtin.debug:
     var: blktests_enabled_test_types
   when:
-    - False
+    - false
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_blktests
     - ansible_nodes_template.stat.exists
 
 - name: Generate the blktests kdevops nodes file using {{ kdevops_nodes_template }} as jinja2 source template
-  tags: [ 'hosts' ]
+  tags: ["hosts"]
   vars:
     node_template: "{{ kdevops_nodes_template | basename }}"
     nodes: "{{ blktests_enabled_test_types }}"
     all_generic_nodes: "{{ blktests_enabled_test_types }}"
-  template:
+  ansible.builtin.template:
     src: "{{ node_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
-    force: yes
+    force: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_blktests
@@ -413,7 +415,7 @@
     config_selftests_test_types: "{{ kdevops_config_data | regex_findall('^' + config_val + '(.*)=y$', multiline=True) }}"
     config_selftests_test_type_names: "{{ config_selftests_test_types | lower }}"
     all_nodes: "{{ [kdevops_host_prefix + '-'] | product(config_selftests_test_type_names) | map('join') | list }}"
-  set_fact:
+  ansible.builtin.set_fact:
     selftests_enabled_test_types: "{{ all_nodes | product(['', '-dev']) | map('join') | list }}"
   when:
     - kdevops_workflows_dedicated_workflow
@@ -422,15 +424,15 @@
     - kdevops_baseline_and_dev
 
 - name: Generate the selftests kdevops nodes file using {{ kdevops_nodes_template }} as jinja2 source template
-  tags: [ 'hosts' ]
+  tags: ["hosts"]
   vars:
     node_template: "{{ kdevops_nodes_template | basename }}"
     nodes: "{{ selftests_enabled_test_types }}"
     all_generic_nodes: "{{ selftests_enabled_test_types }}"
-  template:
+  ansible.builtin.template:
     src: "{{ node_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
-    force: yes
+    force: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_selftests
@@ -439,8 +441,9 @@
 - name: Collect dynamically supported filesystems
   vars:
     supported_filesystems_variables: "{{ vars | dict2items | selectattr('key', 'search', '^sysbench_supported_filesystem_') }}"
-    supported_filesystems: "{{ supported_filesystems_variables | selectattr('value', 'eq', True) | map(attribute='key') | map('regex_replace', '^sysbench_supported_filesystem_', '') | list }}"
-  set_fact:
+    supported_filesystems: "{{ supported_filesystems_variables | selectattr('value', 'eq', True) | map(attribute='key') | map('regex_replace', '^sysbench_supported_filesystem_',
+      '') | list }}"
+  ansible.builtin.set_fact:
     sysbench_enabled_filesystems: "{{ supported_filesystems }}"
     enabled_sysbench_tests: "{{ [] }}"
   when:
@@ -459,7 +462,7 @@
     enabled_fs: "{{ enabled_fs_sections | map('regex_replace', 'section_', '') }}"
     prefixed_fs: "{{ enabled_fs | map('regex_replace', '^', kdevops_host_prefix + '-') }}"
     enabled_fs_node: "{{ prefixed_fs | map('regex_replace', '_', '-') }}"
-  set_fact:
+  ansible.builtin.set_fact:
     enabled_sysbench_tests: "{{ enabled_sysbench_tests + enabled_fs_node }}"
   when:
     - kdevops_workflows_dedicated_workflow
@@ -477,7 +480,7 @@
     enabled_fs: "{{ enabled_fs_sections | map('regex_replace', 'section_', '') }}"
     prefixed_and_postfixed_fs: "{{ enabled_fs | map('regex_replace', '^', kdevops_host_prefix + '-') | map('regex_replace', '$', '-dev') }}"
     enabled_fs_node: "{{ prefixed_and_postfixed_fs | map('regex_replace', '_', '-') }}"
-  set_fact:
+  ansible.builtin.set_fact:
     enabled_sysbench_tests: "{{ enabled_sysbench_tests + enabled_fs_node }}"
   when:
     - kdevops_workflows_dedicated_workflow
@@ -485,7 +488,7 @@
     - kdevops_baseline_and_dev
 
 - name: Fail if no sysbench tests are enabled
-  fail:
+  ansible.builtin.fail:
     msg: "No sysbench tests are enabled. You should enable at least one."
   when:
     - kdevops_workflows_dedicated_workflow
@@ -494,22 +497,22 @@
     - enabled_sysbench_tests | length == 0
 
 - name: Generate the sysbench kdevops nodes file using {{ kdevops_nodes_template }} as jinja2 source template
-  tags: [ 'hosts' ]
+  tags: ["hosts"]
   vars:
     node_template: "{{ kdevops_nodes_template | basename }}"
     nodes: "{{ enabled_sysbench_tests }}"
     all_generic_nodes: "{{ enabled_sysbench_tests }}"
-  template:
+  ansible.builtin.template:
     src: "{{ node_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
-    force: yes
+    force: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_sysbench
     - ansible_nodes_template.stat.exists
 
 - name: Infer enabled mmtests test section types
-  set_fact:
+  ansible.builtin.set_fact:
     mmtests_enabled_test_types: >-
       {{
         [kdevops_host_prefix + '-']
@@ -535,7 +538,7 @@
     config_mmtests_test_types: "{{ kdevops_config_data | regex_findall('^' + config_val + '(.*)=y$', multiline=True) }}"
     config_mmtests_test_type_names: "{{ config_mmtests_test_types | lower }}"
     all_nodes: "{{ [kdevops_host_prefix + '-'] | product(config_mmtests_test_type_names) | map('join') | list }}"
-  set_fact:
+  ansible.builtin.set_fact:
     mmtests_enabled_test_types: "{{ all_nodes | product(['', '-dev']) | map('join') | list }}"
   when:
     - kdevops_workflows_dedicated_workflow
@@ -544,15 +547,15 @@
     - kdevops_baseline_and_dev
 
 - name: Generate the mmtests kdevops nodes file using {{ kdevops_nodes_template }} as jinja2 source template
-  tags: [ 'hosts' ]
+  tags: ["hosts"]
   vars:
     node_template: "{{ kdevops_nodes_template | basename }}"
     nodes: "{{ mmtests_enabled_test_types }}"
     all_generic_nodes: "{{ mmtests_enabled_test_types }}"
-  template:
+  ansible.builtin.template:
     src: "{{ node_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
-    force: yes
+    force: true
   when:
     - kdevops_workflows_dedicated_workflow
     - kdevops_workflow_enable_mmtests
@@ -563,13 +566,13 @@
   register: kdevops_host_timezone
 
 - name: Verify if dedicated workflow defined a custom nodes template and the final file exists {{ kdevops_nodes_template_full_path }}
-  stat:
+  ansible.builtin.stat:
     path: "{{ topdir_path }}/{{ kdevops_nodes }}"
   register: dedicated_nodes_template
 
 - name: Fail if the dedicated workflow has no rules for node configuration
-  tags: [ 'nodes' ]
-  fail:
+  tags: ["nodes"]
+  ansible.builtin.fail:
     msg: "Your dedicated workflow lacks rules for what nodes to use, go work on allowed topologies to parallelize testing one per node"
   when:
     - kdevops_workflows_dedicated_workflow
@@ -580,11 +583,11 @@
   ansible.builtin.file:
     path: "{{ topdir_path }}/{{ kdevops_nodes }}"
     state: touch
-    mode: '0755'
+    mode: "0755"
 
 - name: Import list of guest nodes
-  include_vars: "{{ topdir_path }}/{{ kdevops_nodes }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ topdir_path }}/{{ kdevops_nodes }}"
+  ignore_errors: true
   when:
     - kdevops_enable_guestfs|bool
 
@@ -598,7 +601,7 @@
 - name: Generate XML files for the libvirt guests for PCI passthrough for guestfs
   delegate_to: localhost
   run_once: true
-  shell: |
+  ansible.builtin.shell: |
     set -o pipefail
     {{ role_path }}/python/gen_pcie_passthrough_guestfs_xml.py
   args:
@@ -621,15 +624,15 @@
     - kdevops_enable_guestfs|bool
 
 - name: Set the conflict flag on if conflict occur
-  set_fact:
-    gdb_port_conflict: True
+  ansible.builtin.set_fact:
+    gdb_port_conflict: true
   when:
     - libvirt_enable_gdb|bool
     - gdb_port_reg.results is defined
     - gdb_port_reg.results | selectattr('rc', 'equalto', 0) | list | length > 0
 
 - name: Fail bringup if gdb port conflict occur
-  fail:
+  ansible.builtin.fail:
     msg: "GDB port conflict occur, please check the base port number {{ libvirt_gdb_baseport }} and try with another"
   when:
     - libvirt_enable_gdb|bool
@@ -639,10 +642,10 @@
   vars:
     hostname: "{{ item.name }}"
     guestidx: "{{ idx }}"
-  template:
+  ansible.builtin.template:
     src: "guestfs_{{ libvirt_machine_type }}.j2.xml"
     dest: "{{ topdir_path }}/guestfs/{{ hostname }}/{{ hostname }}.xml"
-    force: yes
+    force: true
   with_items: "{{ guestfs_nodes }}"
   loop_control:
     index_var: idx
diff --git a/playbooks/roles/gen_pci_kconfig/defaults/main.yml b/playbooks/roles/gen_pci_kconfig/defaults/main.yml
index dc87802..42b51a2 100644
--- a/playbooks/roles/gen_pci_kconfig/defaults/main.yml
+++ b/playbooks/roles/gen_pci_kconfig/defaults/main.yml
@@ -1,3 +1,3 @@
 # SPDX-License-Identifier GPL-2.0+
 ---
-kdevops_pcie_dynamic_kconfig: False
+kdevops_pcie_dynamic_kconfig: false
diff --git a/playbooks/roles/gen_pci_kconfig/tasks/main.yml b/playbooks/roles/gen_pci_kconfig/tasks/main.yml
index 8f10d1e..ac8966e 100644
--- a/playbooks/roles/gen_pci_kconfig/tasks/main.yml
+++ b/playbooks/roles/gen_pci_kconfig/tasks/main.yml
@@ -1,10 +1,11 @@
 ---
 - name: Dump pci output in machine-readible form
-  shell: "lspci -Dvmmm > {{ topdir_path }}/.dynamic-kconfig.pci.txt"
+  ansible.builtin.shell: "lspci -Dvmmm > {{ topdir_path }}/.dynamic-kconfig.pci.txt"
+  changed_when: false
   when:
     - kdevops_pcie_dynamic_kconfig
 
 - name: Generate libvirt PCI-E kcofig files
-  shell: "./python/workflows/dynamic-kconfig/gen-dynamic-pci.py {{ topdir_path }}/.dynamic-kconfig.pci.txt > {{ topdir_path }}/Kconfig.passthrough_libvirt.generated"
+  ansible.builtin.shell: "./python/workflows/dynamic-kconfig/gen-dynamic-pci.py {{ topdir_path }}/.dynamic-kconfig.pci.txt > {{ topdir_path }}/Kconfig.passthrough_libvirt.generated"
   when:
     - kdevops_pcie_dynamic_kconfig
diff --git a/playbooks/roles/gen_tfvars/defaults/main.yml b/playbooks/roles/gen_tfvars/defaults/main.yml
index a99c016..fce7afd 100644
--- a/playbooks/roles/gen_tfvars/defaults/main.yml
+++ b/playbooks/roles/gen_tfvars/defaults/main.yml
@@ -1,8 +1,8 @@
 # SPDX-License-Identifier GPL-2.0+
 ---
-kdevops_terraform_ssh_config_update: False
-kdevops_terraform_ssh_config_update_strict: False
-kdevops_terraform_ssh_config_update_backup: False
+kdevops_terraform_ssh_config_update: false
+kdevops_terraform_ssh_config_update_strict: false
+kdevops_terraform_ssh_config_update_backup: false
 
 kdevops_terraform_provider: "aws"
 kdevops_terraform_ssh_pubkey_file: "/dev/null"
diff --git a/playbooks/roles/gen_tfvars/tasks/main.yml b/playbooks/roles/gen_tfvars/tasks/main.yml
index 2967f43..e6f7790 100644
--- a/playbooks/roles/gen_tfvars/tasks/main.yml
+++ b/playbooks/roles/gen_tfvars/tasks/main.yml
@@ -1,38 +1,40 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Verify Terraform variable template file exists {{ kdevops_terraform_tfvars_template_full_path }}
-  stat:
+  ansible.builtin.stat:
     path: "{{ kdevops_nodes_template_full_path }}"
   register: terraform_tfvars_template
 
 - name: Get our user
-  command: "whoami"
+  ansible.builtin.command: "whoami"
+  changed_when: false
   register: my_user
 
 - name: Get our primary group
-  command: "id -g -n"
+  ansible.builtin.command: "id -g -n"
+  changed_when: false
   register: my_group
 
 - name: Check if {{ kdevops_terraform_tfvars }} exists already
-  stat:
+  ansible.builtin.stat:
     path: "{{ topdir_path }}/{{ kdevops_terraform_tfvars }}"
   register: kdevops_tfvars_dest
 
 - name: Ensure proper permission on {{ kdevops_terraform_tfvars }}
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ topdir_path }}/{{ kdevops_terraform_tfvars }}"
     owner: "{{ my_user.stdout }}"
     group: "{{ my_group.stdout }}"
@@ -40,13 +42,13 @@
     - kdevops_tfvars_dest.stat.exists
 
 - name: Generate the terraform variables file file using {{ kdevops_terraform_tfvars }} as jinja2 source template
-  tags: [ 'nodes' ]
+  tags: ["nodes"]
   vars:
     tfvars_template: "{{ kdevops_terraform_tfvars_template }}"
-  template:
+  ansible.builtin.template:
     src: "{{ tfvars_template }}"
     dest: "{{ topdir_path }}/{{ kdevops_terraform_tfvars }}"
-    force: yes
+    force: true
   when:
     - kdevops_enable_terraform
     - terraform_tfvars_template.stat.exists
diff --git a/playbooks/roles/gitr/defaults/main.yml b/playbooks/roles/gitr/defaults/main.yml
index ff737ca..faefedf 100644
--- a/playbooks/roles/gitr/defaults/main.yml
+++ b/playbooks/roles/gitr/defaults/main.yml
@@ -3,12 +3,12 @@
 # Our sensible defaults for the gitr role.
 #
 # The default is to not run the gitr tests.
-kdevops_run_gitr: False
+kdevops_run_gitr: false
 
 kdevops_workflows_dedicated_workflow: false
 
 gitr_test_list: ""
-gitr_uses_no_devices: False
+gitr_uses_no_devices: false
 
 # NFS-specific defaults
 gitr_nfs_use_kdevops_nfsd: false
diff --git a/playbooks/roles/gitr/tasks/install-deps/debian/main.yml b/playbooks/roles/gitr/tasks/install-deps/debian/main.yml
index 50b73d2..8fb60c0 100644
--- a/playbooks/roles/gitr/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/gitr/tasks/install-deps/debian/main.yml
@@ -1,7 +1,7 @@
 ---
 - name: Install dependencies for gitr
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name: "{{ gitr_packages }}"
diff --git a/playbooks/roles/gitr/tasks/install-deps/main.yml b/playbooks/roles/gitr/tasks/install-deps/main.yml
index 73a1da3..896da6a 100644
--- a/playbooks/roles/gitr/tasks/install-deps/main.yml
+++ b/playbooks/roles/gitr/tasks/install-deps/main.yml
@@ -4,11 +4,11 @@
   vars:
     params:
       files:
-        - '{{ ansible_distribution }}.yml'
-        - '{{ ansible_os_family }}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Debian-specific setup
   ansible.builtin.include_tasks: debian/main.yml
diff --git a/playbooks/roles/gitr/tasks/install-deps/redhat/main.yml b/playbooks/roles/gitr/tasks/install-deps/redhat/main.yml
index d3f0aab..2028d62 100644
--- a/playbooks/roles/gitr/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/gitr/tasks/install-deps/redhat/main.yml
@@ -19,7 +19,7 @@
 
 - name: Install dependencies for gitr
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name: "{{ gitr_packages }}"
@@ -27,7 +27,7 @@
 
 - name: Install CPAN modules for gitr
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   community.general.cpanm:
     name: "{{ item }}"
@@ -56,7 +56,7 @@
 
     - name: Install cvsps
       become: true
-      become_flags: 'su - -c'
+      become_flags: "su - -c"
       become_method: ansible.builtin.sudo
       community.general.make:
         target: install
diff --git a/playbooks/roles/gitr/tasks/install-deps/suse/main.yml b/playbooks/roles/gitr/tasks/install-deps/suse/main.yml
index 50b73d2..8fb60c0 100644
--- a/playbooks/roles/gitr/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/gitr/tasks/install-deps/suse/main.yml
@@ -1,7 +1,7 @@
 ---
 - name: Install dependencies for gitr
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name: "{{ gitr_packages }}"
diff --git a/playbooks/roles/gitr/tasks/main.yml b/playbooks/roles/gitr/tasks/main.yml
index f1e7b6c..dbbe0bc 100644
--- a/playbooks/roles/gitr/tasks/main.yml
+++ b/playbooks/roles/gitr/tasks/main.yml
@@ -12,7 +12,7 @@
   tags: vars
 
 - name: Set up the /data mount point
-  tags: ['data_partition']
+  tags: ["data_partition"]
   ansible.builtin.include_role:
     name: create_data_partition
 
@@ -29,29 +29,38 @@
     gitr_run_uniqifier: "{{ ansible_date_time.iso8601_basic_short }}"
 
 - name: Clean up our localhost results/last-run directory
-  local_action: file path="{{ gitr_results_target }}/" state=absent
+  ansible.builtin.file:
+    path: "{{ gitr_results_target }}/"
+    state: absent
+  delegate_to: localhost
   run_once: true
-  tags: [ 'run_tests', 'copy_results', 'clean_local_results' ]
+  tags: ["run_tests", "copy_results", "clean_local_results"]
 
 - name: Create empty last-run directory
-  local_action: file path="{{ gitr_results_target }}/" state=directory
+  ansible.builtin.file:
+    path: "{{ gitr_results_target }}/"
+    state: directory
+  delegate_to: localhost
   run_once: true
-  tags: [ 'run_tests', 'copy_results', 'clean_local_results' ]
+  tags: ["run_tests", "copy_results", "clean_local_results"]
 
 - name: Get used target kernel version
-  tags: [ 'copy_results' ]
-  command: "uname -r"
+  tags: ["copy_results"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Store last kernel variable
-  tags: [ 'copy_results' ]
-  set_fact:
-    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\",'') }}"
+  tags: ["copy_results"]
+  ansible.builtin.set_fact:
+    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\", '') }}"
   run_once: true
 
 - name: Document used target kernel version
-  local_action: "shell echo {{ last_kernel }} > {{ gitr_results_target }}/../last-kernel.txt"
-  tags: [ 'run_tests', 'copy_results', 'print_results' ]
+  ansible.builtin.shell: echo {{ last_kernel }} > {{ gitr_results_target }}/../last-kernel.txt
+  changed_when: false
+  delegate_to: localhost
+  tags: ["run_tests", "copy_results", "print_results"]
   run_once: true
 
 - name: Ensure the local results directory exists
@@ -78,7 +87,7 @@
 - name: Remove the old test file system
   tags: gitr
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.posix.mount:
     path: "{{ gitr_mnt }}"
@@ -158,7 +167,7 @@
   tags: gitr
   ansible.builtin.include_role:
     name: create_nfs_mount
-  vars:  # noqa: var-naming[no-role-prefix]
+  vars: # noqa: var-naming[no-role-prefix]
     nfs_mounted_on: "{{ gitr_mnt }}"
     nfs_server_hostname: "{{ gitr_nfs_server_host }}"
     nfs_server_export: "{{ nfsd_export_path }}/{{ gitr_nfs_server_export }}"
@@ -171,7 +180,7 @@
   tags: gitr
   ansible.builtin.include_role:
     name: create_nfs_mount
-  vars:  # noqa: var-naming[no-role-prefix]
+  vars: # noqa: var-naming[no-role-prefix]
     nfs_mounted_on: "{{ gitr_mnt }}"
     nfs_server_hostname: "{{ gitr_nfs_server_host }}"
     nfs_server_export: "{{ nfsd_export_path }}/{{ gitr_nfs_server_export }}"
@@ -183,7 +192,7 @@
 - name: Remove existing git build directory
   tags: gitr
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ gitr_mnt }}/git"
@@ -219,7 +228,7 @@
     - not kdevops_workflows_dedicated_workflow|bool
 
 - name: Build git on the target nodes
-  tags: ['gitr', 'build']
+  tags: ["gitr", "build"]
   community.general.make:
     chdir: "{{ gitr_mnt }}/git"
     jobs: "{{ ansible_processor_nproc }}"
@@ -373,18 +382,18 @@
     - ansible_os_family == 'RedHat'
 
 - name: Verify last-run kernel directory exists
-  tags: [ 'copy_results' ]
+  tags: ["copy_results"]
   delegate_to: localhost
-  stat:
+  ansible.builtin.stat:
     path: "{{ gitr_results_full_path }}/last-run/{{ last_kernel }}"
   register: last_run_kernel_dir
 
 - name: Copy over the last-run into the results directory for archiving into kdevops
-  copy:
+  ansible.builtin.copy:
     src: "{{ gitr_results_full_path }}/last-run/{{ last_kernel }}"
     dest: "{{ gitr_results_full_path }}/"
   run_once: true
-  tags: [ 'copy_results' ]
+  tags: ["copy_results"]
   delegate_to: localhost
   when:
     - last_run_kernel_dir.stat.exists
diff --git a/playbooks/roles/guestfs/defaults/main.yml b/playbooks/roles/guestfs/defaults/main.yml
index 76854d0..bb77f54 100644
--- a/playbooks/roles/guestfs/defaults/main.yml
+++ b/playbooks/roles/guestfs/defaults/main.yml
@@ -3,4 +3,4 @@ distro_debian_based: false
 
 libvirt_uri_system: false
 libvirt_enable_largeio: false
-bootlinux_9p: False
+bootlinux_9p: false
diff --git a/playbooks/roles/guestfs/tasks/bringup/console-permissions.yml b/playbooks/roles/guestfs/tasks/bringup/console-permissions.yml
index ad169a4..dc4dbc3 100644
--- a/playbooks/roles/guestfs/tasks/bringup/console-permissions.yml
+++ b/playbooks/roles/guestfs/tasks/bringup/console-permissions.yml
@@ -7,7 +7,7 @@
 
 - name: Look for console.log files in guestfs subdirectories to check for CI enablement
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.find:
     paths: "{{ topdir_path }}/guestfs"
@@ -18,7 +18,7 @@
 
 - name: Ensure console.log files are owned by the main user for CI monitoring
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ item.path }}"
diff --git a/playbooks/roles/guestfs/tasks/bringup/main.yml b/playbooks/roles/guestfs/tasks/bringup/main.yml
index af95c5d..fef8a59 100644
--- a/playbooks/roles/guestfs/tasks/bringup/main.yml
+++ b/playbooks/roles/guestfs/tasks/bringup/main.yml
@@ -8,7 +8,7 @@
 
 - name: Provision each target node
   when:
-    - 'inventory_hostname not in defined_vms.list_vms'
+    - "inventory_hostname not in defined_vms.list_vms"
   block:
     - name: Set the pathname of the ssh directory for each target node
       ansible.builtin.set_fact:
@@ -128,10 +128,10 @@
         - passthrough_devices.matched > 0
 
 - name: Ensure 9P host directory exists before bringing nodes on libvirt
-  file:
+  ansible.builtin.file:
     path: "{{ bootlinux_9p_host_path }}"
     state: directory
-    mode: '0755'
+    mode: "0755"
   run_once: true
   delegate_to: localhost
   when:
diff --git a/playbooks/roles/guestfs/tasks/bringup/network.yml b/playbooks/roles/guestfs/tasks/bringup/network.yml
index ca516e0..db3608a 100644
--- a/playbooks/roles/guestfs/tasks/bringup/network.yml
+++ b/playbooks/roles/guestfs/tasks/bringup/network.yml
@@ -22,7 +22,7 @@
 - name: Check if dnsmasq service is enabled
   # noqa: command-instead-of-module
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.command:
     cmd: "systemctl is-enabled dnsmasq"
@@ -36,7 +36,7 @@
 - name: Check if dnsmasq service is active
   # noqa: command-instead-of-module
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.command:
     cmd: "systemctl is-active dnsmasq"
@@ -62,7 +62,7 @@
 
 - name: Check if libvirt default network is running
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   environment:
     LIBVIRT_DEFAULT_URI: "{{ libvirt_uri }}"
@@ -75,7 +75,7 @@
 
 - name: Start the libvirt default network
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   environment:
     LIBVIRT_DEFAULT_URI: "{{ libvirt_uri }}"
diff --git a/playbooks/roles/guestfs/tasks/bringup/storage-pool-path.yml b/playbooks/roles/guestfs/tasks/bringup/storage-pool-path.yml
index 385b6cd..0abab27 100644
--- a/playbooks/roles/guestfs/tasks/bringup/storage-pool-path.yml
+++ b/playbooks/roles/guestfs/tasks/bringup/storage-pool-path.yml
@@ -24,7 +24,7 @@
 
 - name: Create storage pool path directory and set group (libvirt system uri)
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ libvirt_storage_pool_path }}"
@@ -45,7 +45,7 @@
 
 - name: Create kdevops guestfs storage directory (libvirt system uri)
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ guestfs_base_image_dir }}"
@@ -57,7 +57,7 @@
 
 - name: Check if directory is owned by the correct group (libvirt system uri)
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.command:
     cmd: stat -c '%G' "{{ libvirt_storage_pool_path }}"
@@ -68,7 +68,7 @@
 
 - name: Check if directory has group write permissions (libvirt system uri)
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.command:
     cmd: stat -c '%A' "{{ libvirt_storage_pool_path }}"
@@ -79,7 +79,7 @@
 
 - name: Verify storage pool path directory is group-writable (libvirt system uri)
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.fail:
     msg: |
diff --git a/playbooks/roles/hypervisor-tuning/defaults/main.yml b/playbooks/roles/hypervisor-tuning/defaults/main.yml
index 3d6cfcc..a7c197b 100644
--- a/playbooks/roles/hypervisor-tuning/defaults/main.yml
+++ b/playbooks/roles/hypervisor-tuning/defaults/main.yml
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier copyleft-next-0.3.1
 ---
-hypervisor_tunning_enabled: False
-hypervisor_tunning_ksm_enable: False
-hypervisor_tunning_zswap_enable: False
+hypervisor_tunning_enabled: false
+hypervisor_tunning_ksm_enable: false
+hypervisor_tunning_zswap_enable: false
 hypervisor_tunning_zswap_max_pool_percent: 20
diff --git a/playbooks/roles/hypervisor-tuning/tasks/main.yml b/playbooks/roles/hypervisor-tuning/tasks/main.yml
index 0732b6d..c1bcf2e 100644
--- a/playbooks/roles/hypervisor-tuning/tasks/main.yml
+++ b/playbooks/roles/hypervisor-tuning/tasks/main.yml
@@ -1,71 +1,74 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   when:
     - hypervisor_tunning_enabled|bool
-  tags: [ 'vars', 'hypervisor' ]
+  tags: ["vars", "hypervisor"]
 
 - name: Check to see if ksm file exists /sys/kernel/mm/ksm/run
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  stat:
-    path=/sys/kernel/mm/ksm/run
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.stat:
+    path: /sys/kernel/mm/ksm/run
   register: ksm_enable_file
-  tags: [ 'hypervisor' ]
+  tags: ["hypervisor"]
 
 - name: Enable ksm
-  become: yes
-  become_method: sudo
-  shell: echo 1 > /sys/kernel/mm/ksm/run
-  tags: [ 'hypervisor' ]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: echo 1 > /sys/kernel/mm/ksm/run
+  changed_when: false
+  tags: ["hypervisor"]
   when:
     - ksm_enable_file.stat.exists
     - hypervisor_tunning_enabled|bool
 
 - name: Check to see if zswap enable file exists /sys/module/zswap/parameters/enabled
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  stat:
-    path=/sys/module/zswap/parameters/enabled
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.stat:
+    path: /sys/module/zswap/parameters/enabled
   register: zswap_enable_file
-  tags: [ 'hypervisor' ]
+  tags: ["hypervisor"]
 
 - name: Check to see if zswap max pool percent file exists /sys/module/zswap/parameters/max_pool_percent
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  stat:
-    path=/sys/module/zswap/parameters/max_pool_percent
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.stat:
+    path: /sys/module/zswap/parameters/max_pool_percent
   register: zswap_max_pool_percent_file
   when:
     - hypervisor_tunning_zswap_enable|bool
-  tags: [ 'hypervisor' ]
+  tags: ["hypervisor"]
 
 - name: Configure zswap max pool percent to desired setting
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  shell: echo {{ hypervisor_tunning_zswap_max_pool_percent }} > /sys/module/zswap/parameters/max_pool_percent
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: echo {{ hypervisor_tunning_zswap_max_pool_percent }} > /sys/module/zswap/parameters/max_pool_percent
+  changed_when: false
   register: zswap_max_pool_percent_file
   when:
     - hypervisor_tunning_zswap_enable|bool
     - zswap_max_pool_percent_file.stat.exists
-  tags: [ 'hypervisor' ]
+  tags: ["hypervisor"]
 
 - name: Enable zswap
-  become: yes
-  become_method: sudo
-  shell: echo 1 > /sys/module/zswap/parameters/enabled
-  tags: [ 'hypervisor' ]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: echo 1 > /sys/module/zswap/parameters/enabled
+  changed_when: false
+  tags: ["hypervisor"]
   when:
     - zswap_enable_file.stat.exists
     - hypervisor_tunning_zswap_enable|bool
diff --git a/playbooks/roles/install-menuconfig-deps/defaults/main.yml b/playbooks/roles/install-menuconfig-deps/defaults/main.yml
index e9160ec..015da56 100644
--- a/playbooks/roles/install-menuconfig-deps/defaults/main.yml
+++ b/playbooks/roles/install-menuconfig-deps/defaults/main.yml
@@ -1,3 +1,3 @@
 # SPDX-License-Identifier GPL-2.0+
 ---
-kdevops_first_run: False
+kdevops_first_run: false
diff --git a/playbooks/roles/install-menuconfig-deps/tasks/install-deps/debian/main.yml b/playbooks/roles/install-menuconfig-deps/tasks/install-deps/debian/main.yml
index 275b971..0ca28b0 100644
--- a/playbooks/roles/install-menuconfig-deps/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/install-menuconfig-deps/tasks/install-deps/debian/main.yml
@@ -1,15 +1,15 @@
 ---
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
   tags: linux
 
 - name: Install generic kdevops deps
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - gcc
       - make
@@ -20,5 +20,5 @@
       - sed
       - libncurses-dev
     state: present
-    update_cache: yes
-  tags: [ 'kdevops', 'deps' ]
+    update_cache: true
+  tags: ["kdevops", "deps"]
diff --git a/playbooks/roles/install-menuconfig-deps/tasks/install-deps/fedora/main.yml b/playbooks/roles/install-menuconfig-deps/tasks/install-deps/fedora/main.yml
index 80680dc..c21634b 100644
--- a/playbooks/roles/install-menuconfig-deps/tasks/install-deps/fedora/main.yml
+++ b/playbooks/roles/install-menuconfig-deps/tasks/install-deps/fedora/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install kdevops generic dependencies
-  become: yes
-  become_method: sudo
-  dnf:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - gcc
       - make
diff --git a/playbooks/roles/install-menuconfig-deps/tasks/install-deps/main.yml b/playbooks/roles/install-menuconfig-deps/tasks/install-deps/main.yml
index c652ab2..2dee349 100644
--- a/playbooks/roles/install-menuconfig-deps/tasks/install-deps/main.yml
+++ b/playbooks/roles/install-menuconfig-deps/tasks/install-deps/main.yml
@@ -1,21 +1,27 @@
 ---
 - name: Import optional distribution specific variables
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "{{ ansible_facts['os_family']|lower }}.yml"
+        - "{{ ansible_facts['os_family'] | lower }}.yml"
       skip: true
   tags: vars
 
-- name: Distribution specific setup
-  import_tasks: debian/main.yml
+- name: Debian/Ubuntu distribution specific setup
+  ansible.builtin.import_tasks: debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: redhat/main.yml
   when:
     - ansible_facts['os_family']|lower == 'redhat'
     - ansible_facts['distribution']|lower != "fedora"
-- import_tasks: fedora/main.yml
+
+- name: Fedora distribution specific setup
+  ansible.builtin.import_tasks: fedora/main.yml
   when: ansible_facts['distribution']|lower == "fedora"
diff --git a/playbooks/roles/install-menuconfig-deps/tasks/install-deps/redhat/main.yml b/playbooks/roles/install-menuconfig-deps/tasks/install-deps/redhat/main.yml
index ea14105..c4284f1 100644
--- a/playbooks/roles/install-menuconfig-deps/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/install-menuconfig-deps/tasks/install-deps/redhat/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install kdevops generic dependencies
-  become: yes
-  become_method: sudo
-  dnf:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - bison
       - flex
diff --git a/playbooks/roles/install-menuconfig-deps/tasks/install-deps/suse/main.yml b/playbooks/roles/install-menuconfig-deps/tasks/install-deps/suse/main.yml
index 63d4439..6a1dad8 100644
--- a/playbooks/roles/install-menuconfig-deps/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/install-menuconfig-deps/tasks/install-deps/suse/main.yml
@@ -1,14 +1,14 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Install kdevops generic dependencies
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - gcc
diff --git a/playbooks/roles/install-menuconfig-deps/tasks/main.yml b/playbooks/roles/install-menuconfig-deps/tasks/main.yml
index baab2e1..4ba3a06 100644
--- a/playbooks/roles/install-menuconfig-deps/tasks/main.yml
+++ b/playbooks/roles/install-menuconfig-deps/tasks/main.yml
@@ -1,17 +1,17 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 # Distro specific
 - name: Install kdevops deps to run make menuconfig
-  include_tasks: install-deps/main.yml
+  ansible.builtin.include_tasks: install-deps/main.yml
   when:
     - kdevops_first_run | bool
diff --git a/playbooks/roles/install_systemd_journal_remote/defaults/main.yml b/playbooks/roles/install_systemd_journal_remote/defaults/main.yml
index e98ec39..470ab46 100644
--- a/playbooks/roles/install_systemd_journal_remote/defaults/main.yml
+++ b/playbooks/roles/install_systemd_journal_remote/defaults/main.yml
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier copyleft-next-0.3.1
 ---
-devconfig_enable_systemd_journal_remote: False
-devconfig_systemd_journal_use_http: False
+devconfig_enable_systemd_journal_remote: false
+devconfig_systemd_journal_use_http: false
 foo: "/dev/null"
diff --git a/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/debian/main.yml b/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/debian/main.yml
index 4aa13e7..99caa4d 100644
--- a/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/debian/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install systemd-journal-remote
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - systemd-journal-remote
   when:
diff --git a/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/main.yml b/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/main.yml
index 2464e15..79213c7 100644
--- a/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/main.yml
+++ b/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/main.yml
@@ -1,9 +1,13 @@
 ---
 # tasks to install dependencies
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: tasks/install-deps/suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: tasks/install-deps/redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/redhat/main.yml b/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/redhat/main.yml
index 646fc0e..38e4cb9 100644
--- a/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/redhat/main.yml
@@ -1,9 +1,9 @@
 ---
 - name: Install systemd-journal-remote
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "systemd-journal-remote"
   retries: 3
   delay: 5
diff --git a/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/suse/main.yml b/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/suse/main.yml
index 198dad7..d966afe 100644
--- a/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/install_systemd_journal_remote/tasks/install-deps/suse/main.yml
@@ -1,7 +1,7 @@
 ---
 - name: Install systemd-journal-remote
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - systemd-journal-remote
diff --git a/playbooks/roles/install_systemd_journal_remote/tasks/main.yml b/playbooks/roles/install_systemd_journal_remote/tasks/main.yml
index 8cd317a..055b54e 100644
--- a/playbooks/roles/install_systemd_journal_remote/tasks/main.yml
+++ b/playbooks/roles/install_systemd_journal_remote/tasks/main.yml
@@ -1,64 +1,63 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 # Distro specific
 - name: Install systemd-journal-remote
-  include_tasks: install-deps/main.yml
-
+  ansible.builtin.include_tasks: install-deps/main.yml
 - name: Set up the server /etc/systemd/journal-remote.conf
-  tags: [ 'journal' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  tags: ["journal"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "journal-remote.conf.j2"
     dest: "/etc/systemd/journal-remote.conf"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - devconfig_enable_systemd_journal_remote|bool
 
 - name: Use custom systemd-journal-remote.service to disable SSL
-  tags: [ 'journal' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  tags: ["journal"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "systemd-journal-remote.service.j2"
     dest: "/lib/systemd/system/systemd-journal-remote.service"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - devconfig_enable_systemd_journal_remote|bool
     - devconfig_systemd_journal_use_http|bool
 
 - name: Ensure our user is part of the systemd-journal-remote group
-  tags: [ 'journal' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["journal"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.user:
-    name:  "{{ ansible_user_id }}"
+    name: "{{ ansible_user_id }}"
     groups: systemd-journal-remote
-    append: yes
+    append: true
   when:
     - devconfig_enable_systemd_journal_remote|bool
 
 - name: Restart systemd-journal-remote on the server
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: systemd-journal-remote.service
     daemon_reload: true
@@ -68,9 +67,9 @@
     - devconfig_enable_systemd_journal_remote|bool
 
 - name: Ensure systemd-journal-remote.service is running on the server
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: systemd-journal-remote.service
     state: started
@@ -78,16 +77,16 @@
     - devconfig_enable_systemd_journal_remote|bool
 
 - name: Set group sticky bit for /var/log/journal/remote/
-  tags: [ 'journal' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  tags: ["journal"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "/var/log/journal/remote/"
     owner: systemd-journal-remote
     group: systemd-journal-remote
     mode: u=rwx,g=rwx,o=rx,g+s
-    recurse: True
+    recurse: true
     state: directory
   when:
     - devconfig_enable_systemd_journal_remote|bool
diff --git a/playbooks/roles/install_systemd_timesyncd/defaults/main.yml b/playbooks/roles/install_systemd_timesyncd/defaults/main.yml
index 98f2b9d..3bc1e4a 100644
--- a/playbooks/roles/install_systemd_timesyncd/defaults/main.yml
+++ b/playbooks/roles/install_systemd_timesyncd/defaults/main.yml
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier copyleft-next-0.3.1
 ---
-devconfig_enable_systemd_timesyncd: False
-devconfig_enable_systemd_timesyncd_ntp: False
-devconfig_enable_systemd_timesyncd_ntp_google: False
-devconfig_enable_systemd_timesyncd_ntp_debian: False
-devconfig_enable_systemd_timesyncd_ntp_google_debian: False
+devconfig_enable_systemd_timesyncd: false
+devconfig_enable_systemd_timesyncd_ntp: false
+devconfig_enable_systemd_timesyncd_ntp_google: false
+devconfig_enable_systemd_timesyncd_ntp_debian: false
+devconfig_enable_systemd_timesyncd_ntp_google_debian: false
diff --git a/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/debian/main.yml b/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/debian/main.yml
index ad1331a..1fb33f5 100644
--- a/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/debian/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install systemd-timesyncd
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - systemd-timesyncd
   when:
diff --git a/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/main.yml b/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/main.yml
index 2464e15..79213c7 100644
--- a/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/main.yml
+++ b/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/main.yml
@@ -1,9 +1,13 @@
 ---
 # tasks to install dependencies
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: tasks/install-deps/suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: tasks/install-deps/redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/redhat/main.yml b/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/redhat/main.yml
index d807206..a606811 100644
--- a/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/redhat/main.yml
@@ -1,9 +1,9 @@
 ---
 - name: Install systemd-timesyncd
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: systemd-udev
   retries: 3
   delay: 5
diff --git a/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/suse/main.yml b/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/suse/main.yml
index 6559d5f..6a35206 100644
--- a/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/install_systemd_timesyncd/tasks/install-deps/suse/main.yml
@@ -1,7 +1,7 @@
 ---
 - name: Install systemd-timesyncd
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - systemd-timesyncd
diff --git a/playbooks/roles/install_systemd_timesyncd/tasks/main.yml b/playbooks/roles/install_systemd_timesyncd/tasks/main.yml
index de70996..1494887 100644
--- a/playbooks/roles/install_systemd_timesyncd/tasks/main.yml
+++ b/playbooks/roles/install_systemd_timesyncd/tasks/main.yml
@@ -1,45 +1,44 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 # Distro specific
 - name: Install systemd-timesyncd
-  include_tasks: install-deps/main.yml
-
+  ansible.builtin.include_tasks: install-deps/main.yml
 - name: Set up the server /etc/systemd/timesyncd.conf
-  tags: [ 'timesyncd' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  tags: ["timesyncd"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "timesyncd.conf.j2"
     dest: "/etc/systemd/timesyncd.conf"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - devconfig_enable_systemd_timesyncd|bool
 
 - name: Enable NTP
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "timedatectl set-ntp true"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "timedatectl set-ntp true"
   when:
     - devconfig_enable_systemd_timesyncd_ntp|bool
 
 - name: Restart systemd-timesyncd.service on the server
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: systemd-timesyncd.service
     daemon_reload: true
@@ -49,9 +48,9 @@
     - devconfig_enable_systemd_timesyncd|bool
 
 - name: Ensure systemd-timesyncd.service is running on the server
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "timedatectl status"
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "timedatectl status"
   when:
     - devconfig_enable_systemd_timesyncd|bool
diff --git a/playbooks/roles/install_terraform/defaults/main.yml b/playbooks/roles/install_terraform/defaults/main.yml
index 0e1e7c7..230fa17 100644
--- a/playbooks/roles/install_terraform/defaults/main.yml
+++ b/playbooks/roles/install_terraform/defaults/main.yml
@@ -3,7 +3,7 @@
 
 # You can override these
 terraform_version: "1.2.3"
-force_install_if_present: False
+force_install_if_present: false
 
 # Ignores using distro packages and installs from zip file instead
-force_install_zip: False
+force_install_zip: false
diff --git a/playbooks/roles/install_terraform/tasks/install-deps/debian/main.yml b/playbooks/roles/install_terraform/tasks/install-deps/debian/main.yml
index f7753f8..f62753a 100644
--- a/playbooks/roles/install_terraform/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/install_terraform/tasks/install-deps/debian/main.yml
@@ -1,14 +1,14 @@
 ---
 - name: Verify Terraform installation
-  command: "which terraform"
+  ansible.builtin.command: "which terraform"
   register: terraform_present
   changed_when: terraform_present.rc == 1
   failed_when: terraform_present.rc != 0 and terraform_present.rc != 1
-  tags: [ 'terraform', 'verify' ]
+  tags: ["terraform", "verify"]
 
 - name: Install Terraform Dependencies
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.apt:
     name:
       - unzip
@@ -16,11 +16,11 @@
     update_cache: true
 
 - name: Download Terraform from the latest release and install locally
-  become: yes
-  become_method: sudo
-  unarchive:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.unarchive:
     src: https://releases.hashicorp.com/terraform/{{ terraform_version }}/terraform_{{ terraform_version }}_linux_amd64.zip
     dest: /usr/local/bin
-    remote_src: yes
+    remote_src: true
   when:
     - force_install_if_present|bool or terraform_present.rc != 0
diff --git a/playbooks/roles/install_terraform/tasks/install-deps/main.yml b/playbooks/roles/install_terraform/tasks/install-deps/main.yml
index d2d9b14..ce131ce 100644
--- a/playbooks/roles/install_terraform/tasks/install-deps/main.yml
+++ b/playbooks/roles/install_terraform/tasks/install-deps/main.yml
@@ -1,8 +1,12 @@
 ---
-- name: Distribution specific setup
-  import_tasks: debian/main.yml
+- name: Debian/Ubuntu distribution specific setup
+  ansible.builtin.import_tasks: debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/install_terraform/tasks/install-deps/redhat/main.yml b/playbooks/roles/install_terraform/tasks/install-deps/redhat/main.yml
index 3397f40..0f76314 100644
--- a/playbooks/roles/install_terraform/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/install_terraform/tasks/install-deps/redhat/main.yml
@@ -1,17 +1,17 @@
 ---
 - name: Verify Terraform installation
-  command: "which terraform"
+  ansible.builtin.command: "which terraform"
   register: terraform_present
   changed_when: terraform_present.rc == 1
   failed_when: terraform_present.rc != 0 and terraform_present.rc != 1
-  tags: [ 'terraform', 'verify' ]
+  tags: ["terraform", "verify"]
 
 - name: Download Terraform from the latest release and install locally
-  become: yes
-  become_method: sudo
-  unarchive:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.unarchive:
     src: https://releases.hashicorp.com/terraform/{{ terraform_version }}/terraform_{{ terraform_version }}_linux_amd64.zip
     dest: /usr/local/bin
-    remote_src: yes
+    remote_src: true
   when:
     - force_install_if_present|bool or terraform_present.rc != 0
diff --git a/playbooks/roles/install_terraform/tasks/install-deps/suse/main.yml b/playbooks/roles/install_terraform/tasks/install-deps/suse/main.yml
index 0b24a06..7a78c08 100644
--- a/playbooks/roles/install_terraform/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/install_terraform/tasks/install-deps/suse/main.yml
@@ -1,38 +1,38 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
 
 # SLE has no good package for terraform, and the one from package hub tends to be old
 - name: Override default setting for force_install_zip for SLE
-  set_fact:
+  ansible.builtin.set_fact:
     force_install_zip: true
   when:
     - is_sle
 
 - name: Verify Terraform installation
-  command: "which terraform"
+  ansible.builtin.command: "which terraform"
   register: terraform_present
   changed_when: terraform_present.rc == 1
   failed_when: terraform_present.rc != 0 and terraform_present.rc != 1
-  tags: [ 'terraform', 'verify' ]
+  tags: ["terraform", "verify"]
 
 - name: Download Terraform from the latest release and install locally
-  become: yes
-  become_method: sudo
-  unarchive:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.unarchive:
     src: https://releases.hashicorp.com/terraform/{{ terraform_version }}/terraform_{{ terraform_version }}_linux_amd64.zip
     dest: /usr/local/bin
-    remote_src: yes
+    remote_src: true
   when:
     - force_install_zip|bool
     - force_install_if_present|bool or (is_sle or is_leap and terraform_present.rc != 0)
 
 - name: Install vagrant and vagrant-libvirt from your tumbleweed repository
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - terraform
diff --git a/playbooks/roles/install_terraform/tasks/main.yml b/playbooks/roles/install_terraform/tasks/main.yml
index 8e682b7..8c0799b 100644
--- a/playbooks/roles/install_terraform/tasks/main.yml
+++ b/playbooks/roles/install_terraform/tasks/main.yml
@@ -1,15 +1,15 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 # Distro specific
 - name: Install terraform
-  include_tasks: install-deps/main.yml
+  ansible.builtin.include_tasks: install-deps/main.yml
diff --git a/playbooks/roles/iscsi/tasks/add_initiator.yml b/playbooks/roles/iscsi/tasks/add_initiator.yml
index 3afddda..a1a5da0 100644
--- a/playbooks/roles/iscsi/tasks/add_initiator.yml
+++ b/playbooks/roles/iscsi/tasks/add_initiator.yml
@@ -4,15 +4,15 @@
   vars:
     params:
       files:
-        - '{{ ansible_distribution }}.yml'
-        - '{{ ansible_os_family }}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Install dependencies for iSCSI initiator
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name: "{{ iscsi_initiator_packages }}"
@@ -20,7 +20,7 @@
 
 - name: Discover iSCSI targets and login
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   community.general.open_iscsi:
     portal: "{{ iscsi_target_hostname }}"
@@ -35,7 +35,7 @@
 
 - name: Add an ACL on the iSCSI target for {{ initiator_name['content'] | b64decode | replace('InitiatorName=', '') }}
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ iscsi_target_hostname }}"
   ansible.builtin.command:
@@ -50,10 +50,10 @@
 
 - name: Back up the iSCSI target configuration
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ iscsi_target_hostname }}"
-  throttle: 1  # running this in parallel can clobber the backup file
+  throttle: 1 # running this in parallel can clobber the backup file
   ansible.builtin.command:
     cmd: "targetctl save"
   changed_when: true
diff --git a/playbooks/roles/iscsi/tasks/add_lun.yml b/playbooks/roles/iscsi/tasks/add_lun.yml
index 646f12d..8c94501 100644
--- a/playbooks/roles/iscsi/tasks/add_lun.yml
+++ b/playbooks/roles/iscsi/tasks/add_lun.yml
@@ -1,7 +1,7 @@
 ---
 - name: Allocate an LVM logical device on the iSCSI target
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ iscsi_target_hostname }}"
   community.general.lvol:
@@ -11,7 +11,7 @@
 
 - name: Create an iSCSI backstore for the new device
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ iscsi_target_hostname }}"
   ansible.builtin.command:
@@ -27,7 +27,7 @@
 
 - name: Create the new Logical Unit
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ iscsi_target_hostname }}"
   ansible.builtin.command:
@@ -42,10 +42,10 @@
 
 - name: Back up the iSCSI target configuration
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ iscsi_target_hostname }}"
-  throttle: 1  # running this in parallel can clobber the backup file
+  throttle: 1 # running this in parallel can clobber the backup file
   ansible.builtin.command:
     cmd: "targetctl save"
   changed_when: true
diff --git a/playbooks/roles/iscsi/tasks/main.yml b/playbooks/roles/iscsi/tasks/main.yml
index 904e0c2..29234d5 100644
--- a/playbooks/roles/iscsi/tasks/main.yml
+++ b/playbooks/roles/iscsi/tasks/main.yml
@@ -4,15 +4,15 @@
   vars:
     params:
       files:
-        - '{{ ansible_distribution }}.yml'
-        - '{{ ansible_os_family }}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Install dependencies for iSCSI target
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name: "{{ iscsi_target_packages }}"
@@ -26,7 +26,7 @@
 
 - name: Create a directory for storing iSCSI persistent reservations
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "/etc/target/pr"
@@ -38,7 +38,7 @@
 
 - name: Disable firewalld
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: firewalld.service
@@ -48,7 +48,7 @@
 
 - name: Enable the systemd iSCSI service
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: "{{ iscsi_target_service_name }}"
@@ -57,7 +57,7 @@
 
 - name: Enable targetcli auto_save_on_exit
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.command:
     cmd: "targetcli set global auto_save_on_exit=true"
@@ -67,7 +67,7 @@
 
 - name: Create iSCSI target {{ iscsi_target_wwn }}
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.command:
     cmd: "targetcli iscsi/ create {{ iscsi_target_wwn }}"
@@ -77,7 +77,7 @@
 
 - name: Enable the target's generate_node_acls attribute
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.command:
     cmd: "targetcli iscsi/{{ iscsi_target_wwn }}/tpg1 set attribute generate_node_acls=1"
@@ -87,7 +87,7 @@
 
 - name: Disable initiator authentication
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.command:
     cmd: "targetcli iscsi/{{ iscsi_target_wwn }}/tpg1 set attribute authentication=0"
@@ -97,9 +97,9 @@
 
 - name: Back up the iSCSI target configuration
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
-  throttle: 1  # running this in parallel can clobber the backup file
+  throttle: 1 # running this in parallel can clobber the backup file
   ansible.builtin.command:
     cmd: "targetctl save"
   changed_when: true
diff --git a/playbooks/roles/kdc/tasks/install-deps/debian/main.yml b/playbooks/roles/kdc/tasks/install-deps/debian/main.yml
index bc2a6a7..91ae91a 100644
--- a/playbooks/roles/kdc/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/kdc/tasks/install-deps/debian/main.yml
@@ -1,11 +1,11 @@
 ---
 - name: Install kdc dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - krb5-admin-server
       - krb5-kdc
       - krb5-user
     state: present
-    update_cache: yes
+    update_cache: true
diff --git a/playbooks/roles/kdc/tasks/install-deps/redhat/main.yml b/playbooks/roles/kdc/tasks/install-deps/redhat/main.yml
index f92f510..8861d78 100644
--- a/playbooks/roles/kdc/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/kdc/tasks/install-deps/redhat/main.yml
@@ -1,9 +1,9 @@
 ---
 - name: Install kdc dependencies
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
diff --git a/playbooks/roles/kdc/tasks/install-deps/suse/main.yml b/playbooks/roles/kdc/tasks/install-deps/suse/main.yml
index c063563..c4f4ada 100644
--- a/playbooks/roles/kdc/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/kdc/tasks/install-deps/suse/main.yml
@@ -1,7 +1,7 @@
 ---
 - name: Install kdc dependencies
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - krb5
diff --git a/playbooks/roles/kdc/tasks/main.yml b/playbooks/roles/kdc/tasks/main.yml
index dbcb309..23930c7 100644
--- a/playbooks/roles/kdc/tasks/main.yml
+++ b/playbooks/roles/kdc/tasks/main.yml
@@ -4,11 +4,11 @@
   vars:
     params:
       files:
-        - '{{ansible_distribution}}.yml'
-        - '{{ansible_os_family}}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Debian-specific setup
   ansible.builtin.include_tasks: install-deps/debian/main.yml
@@ -23,68 +23,68 @@
   when: ansible_os_family == 'RedHat'
 
 - name: Configure /etc/krb5.conf
-  become: yes
-  become_method: sudo
-  template:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: krb5.conf.j2
     dest: /etc/krb5.conf
     owner: root
     group: root
-    mode: 0644
+    mode: "0644"
 
 - name: Ensure /etc/krb5.conf.d exists
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: /etc/krb5.conf.d
     state: directory
     owner: root
     group: root
-    mode: 0755
+    mode: "0755"
 
 - name: Configure {{ kdc_conf_dir }}/kdc.conf
-  become: yes
-  become_method: sudo
-  template:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: kdc.conf.j2
     dest: "{{ kdc_conf_dir }}/kdc.conf"
     owner: root
     group: root
-    mode: 0600
+    mode: "0600"
 
 - name: Configure {{ kdc_data_dir }}/kadm5.acl
-  become: yes
-  become_method: sudo
-  template:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: kadm5.acl.j2
     dest: "{{ kdc_data_dir }}/kadm5.acl"
     owner: root
     group: root
-    mode: 0600
+    mode: "0600"
 
 - name: Check to see if Kerberos database exists
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.stat:
     path: "{{ kdc_data_dir }}/principal"
   register: kerberos_db
 
 - name: Create database
-  become: yes
-  become_method: sudo
-  ansible.builtin.shell:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: kdb5_util -P {{ krb5_admin_pw }} create -s
   when: not kerberos_db.stat.exists
 
 - name: Create admin principal
-  become: yes
-  become_method: sudo
-  ansible.builtin.shell:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: kadmin.local -q "addprinc -pw {{ krb5_admin_pw }} root/admin"
 
 - name: Allow access to kerberos service in firewalld
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.posix.firewalld:
     service: kerberos
     permanent: true
@@ -93,8 +93,8 @@
   when: ansible_os_family == 'RedHat'
 
 - name: Allow access to kadmin service in firewalld
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.posix.firewalld:
     service: kadmin
     permanent: true
@@ -103,16 +103,16 @@
   when: ansible_os_family == 'RedHat'
 
 - name: Start and enable {{ krb5kdc_service_name }} systemd service
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd:
     name: "{{ krb5kdc_service_name }}"
     enabled: true
     state: started
 
 - name: Start and enable {{ kadmin_service_name }} systemd service
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd:
     name: "{{ kadmin_service_name }}"
     enabled: true
diff --git a/playbooks/roles/kdc/vars/RedHat.yml b/playbooks/roles/kdc/vars/RedHat.yml
index 16de574..536a47f 100644
--- a/playbooks/roles/kdc/vars/RedHat.yml
+++ b/playbooks/roles/kdc/vars/RedHat.yml
@@ -2,6 +2,7 @@
 kdc_conf_dir: /var/kerberos/krb5kdc
 kdc_data_dir: /var/kerberos/krb5kdc
 kdc_master_key_type: aes256-cts-hmac-sha384-192
-kdc_supported_enctypes: aes256-cts-hmac-sha384-192:normal aes128-cts-hmac-sha256-128:normal aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal camellia256-cts-cmac:normal camellia128-cts-cmac:normal
+kdc_supported_enctypes: aes256-cts-hmac-sha384-192:normal aes128-cts-hmac-sha256-128:normal aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal camellia256-cts-cmac:normal
+  camellia128-cts-cmac:normal
 krb5kdc_service_name: krb5kdc
 kadmin_service_name: kadmin
diff --git a/playbooks/roles/kdc/vars/default.yml b/playbooks/roles/kdc/vars/default.yml
index 16de574..536a47f 100644
--- a/playbooks/roles/kdc/vars/default.yml
+++ b/playbooks/roles/kdc/vars/default.yml
@@ -2,6 +2,7 @@
 kdc_conf_dir: /var/kerberos/krb5kdc
 kdc_data_dir: /var/kerberos/krb5kdc
 kdc_master_key_type: aes256-cts-hmac-sha384-192
-kdc_supported_enctypes: aes256-cts-hmac-sha384-192:normal aes128-cts-hmac-sha256-128:normal aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal camellia256-cts-cmac:normal camellia128-cts-cmac:normal
+kdc_supported_enctypes: aes256-cts-hmac-sha384-192:normal aes128-cts-hmac-sha256-128:normal aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal camellia256-cts-cmac:normal
+  camellia128-cts-cmac:normal
 krb5kdc_service_name: krb5kdc
 kadmin_service_name: kadmin
diff --git a/playbooks/roles/kdevops_archive/defaults/main.yml b/playbooks/roles/kdevops_archive/defaults/main.yml
index 790a6ed..73e3f5c 100644
--- a/playbooks/roles/kdevops_archive/defaults/main.yml
+++ b/playbooks/roles/kdevops_archive/defaults/main.yml
@@ -11,8 +11,8 @@ kdevops_results_archive_dir: "{{ topdir_path }}/../{{ kdevops_results_name }}"
 kdevops_archive_mirror_present: false
 kdevops_archive_host: "{{ kdevops_results_repo_path.split(':')[0] }}"
 kdevops_archive: "/mirror/{{ kdevops_results_name }}.git"
-kdevops_archive_demo: False
-bootlinux_tree_set_by_cli: False
+kdevops_archive_demo: false
+bootlinux_tree_set_by_cli: false
 kdevops_archive_base: "selftests/gh/linux-modules-kpd/20241021"
 kdevops_archive_test_number: "0001"
 kdevops_archive_prefix: "{{ kdevops_archive_base }}/{{ kdevops_archive_test_number }}/v6.12-rc4/"
diff --git a/playbooks/roles/kdevops_archive/tasks/main.yml b/playbooks/roles/kdevops_archive/tasks/main.yml
index 2851477..5b38317 100644
--- a/playbooks/roles/kdevops_archive/tasks/main.yml
+++ b/playbooks/roles/kdevops_archive/tasks/main.yml
@@ -1,25 +1,25 @@
 ---
 - name: Install git-lfs
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  package:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.package:
     name:
       - git-lfs
       - rsync
     state: present
 
 - name: Override kdevops archive repo url to demo URL if in demo mode
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_results_repo_url: "{{ kdevops_results_repo_url_demo }}"
   when:
-    - 'kdevops_archive_demo|bool'
+    - "kdevops_archive_demo|bool"
 
 - name: Notify this is a kdevops-results-archive demo
   ansible.builtin.debug:
     msg: "This is a kdevops archive demo: {{ kdevops_results_repo_url }}"
   when:
-    - 'kdevops_archive_demo|bool'
+    - "kdevops_archive_demo|bool"
 
 - name: Check if kdevops archive/ directory exists
   ansible.builtin.stat:
@@ -31,28 +31,28 @@
     path: "{{ kdevops_results_local }}"
     state: absent
   when: results_dir.stat.exists
-  become: yes
+  become: true
 
 - name: Create new kdevops archive/ for new results
-  file:
+  ansible.builtin.file:
     path: "{{ kdevops_results_local }}"
     state: directory
-    mode: '0755'
+    mode: "0755"
 
 - name: Get list of files from make ci-results for our archive/
-  command: make ci-results
+  ansible.builtin.command: make ci-results
   register: ci_results
   args:
     chdir: "{{ topdir_path }}"
 
 - name: Get current user
-  command: whoami
+  ansible.builtin.command: whoami
   register: current_user
   changed_when: false
 
 - name: Ensure source files are readable by current user
-  become: yes
-  shell: |
+  become: true
+  ansible.builtin.shell: |
     for item in {{ ci_results.stdout_lines | join(' ') }}; do
       if [ -e "$item" ] || compgen -G "$item" > /dev/null; then
         find "$item" -type d -exec chmod 755 {} +
@@ -65,7 +65,7 @@
   when: ci_results.stdout_lines | length > 0
 
 - name: Copy files and directories to the our archive/
-  shell: |
+  ansible.builtin.shell: |
     for item in {{ ci_results.stdout_lines | join(' ') }}; do
       if [ -e "$item" ] || compgen -G "$item" > /dev/null; then
         rsync -a --relative "$item" "{{ kdevops_results_local }}"
@@ -76,20 +76,20 @@
   when: ci_results.stdout_lines | length > 0
 
 - name: Count files and directories in archive/
-  command: find "{{ kdevops_results_local }}" -mindepth 1 -type f,d
+  ansible.builtin.command: find "{{ kdevops_results_local }}" -mindepth 1 -type f,d
   register: kdevops_archive_data
   changed_when: false
 
 - name: Count files and directories we're putting into archive/
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_data_count: "{{ kdevops_archive_data.stdout_lines | length }}"
 
 - name: CI archive not setup
-  debug:
+  ansible.builtin.debug:
     msg: |
       The output of `make ci-results` yielded no files, this likely means
       you have not setup which results we should copy for this target
-      development tree: {{ target_linux_tree}}
+      development tree: {{ target_linux_tree }}
       To set this up you need these set up:
         .ci/build-test/{{ target_linux_tree }}
         .ci/tests-test/{{ target_linux_tree }}
@@ -98,13 +98,13 @@
     - kdevops_archive_data_count | int == 0
 
 - name: Archiving disabled
-  meta: end_play
+  ansible.builtin.meta: end_play
   when:
     - kdevops_archive_data_count | int == 0
 
 - name: Ensure copied files are readable by current user
-  become: yes
-  shell: |
+  become: true
+  ansible.builtin.shell: |
     find "{{ kdevops_results_local }}" -type d -exec chmod 755 {} +
     find "{{ kdevops_results_local }}" -type f -exec chmod 644 {} +
     chown -R {{ current_user.stdout }}:{{ current_user.stdout }} "{{ kdevops_results_local }}"
@@ -112,7 +112,7 @@
     executable: /bin/bash
 
 - name: Copy files and directories to the archive/
-  shell: |
+  ansible.builtin.shell: |
     for item in {{ ci_results.stdout_lines | join(' ') }}; do
       if [ -e "$item" ]; then
         cp -R --parents "$item" "{{ kdevops_results_local }}"
@@ -123,42 +123,42 @@
   when: ci_results.stdout_lines | length > 0
 
 - name: Check if ci.ref file exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ topdir_path }}/ci.ref"
   register: ci_ref_file
 
 - name: Read ci.ref file if it exists
-  slurp:
+  ansible.builtin.slurp:
     path: "{{ topdir_path }}/ci.ref"
   register: ci_ref_content
   when: ci_ref_file.stat.exists
 
 - name: Set kdevops_archive_test_ref from ci.ref
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_test_ref: "{{ ci_ref_content.content | b64decode | trim }}"
   when: ci_ref_file.stat.exists
 
 - name: Set kdevops_archive_test_ref in case ci.ref is not set
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_test_ref: "{{ target_linux_tree }}"
   when: not ci_ref_file.stat.exists
 
 - name: Create our archive/ xz file for kdevops-results-archive
-  archive:
+  community.general.archive:
     path: "{{ kdevops_results_local }}"
     dest: "{{ kdevops_results }}/{{ kdevops_archive_test_ref }}.xz"
     format: xz
-    remove: no
+    remove: false
 
 - name: Create the same archive/ zip file for web CI artifacts
-  archive:
+  community.general.archive:
     path: "{{ kdevops_results_local }}"
     dest: "{{ kdevops_results }}/{{ kdevops_archive_test_ref }}.zip"
     format: zip
-    remove: no
+    remove: false
 
 - name: Find archive files to verify
-  find:
+  ansible.builtin.find:
     paths: "{{ kdevops_results }}"
     patterns:
       - "*.zip"
@@ -166,7 +166,7 @@
   register: archive_files
 
 - name: Get archive file stat
-  stat:
+  ansible.builtin.stat:
     path: "{{ item.path }}"
   register: archive_stats
   loop: "{{ archive_files.files }}"
@@ -174,30 +174,30 @@
   no_log: true
 
 - name: Display archive file information
-  debug:
+  ansible.builtin.debug:
     msg: "{{ item.stat.path }} ({{ (item.stat.size / 1024 / 1024) | round(2) }}MB)"
   loop: "{{ archive_stats.results }}"
   loop_control:
     label: "{{ item.stat.path | basename }}"
 
 - name: Check if kdevops-results-archive directory exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ kdevops_results_archive_dir }}"
   register: archive_dir
 
 - name: Check if mirror directory exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ kdevops_archive }}"
   register: mirror_dir
 
 - name: Set kdevops_archive_mirror_present based on mirror directory existence
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_mirror_present: "{{ mirror_dir.stat.exists }}"
   when:
     - mirror_dir.stat.exists
 
 - name: Remove kdevops-results-archive always to account for epochs changes
-  file:
+  ansible.builtin.file:
     path: "{{ kdevops_results_archive_dir }}"
     state: absent
   when:
@@ -215,12 +215,12 @@
     - not kdevops_archive_mirror_present | bool
 
 - name: Committing to kdevops-results-archive not possible
-  meta: end_play
+  ansible.builtin.meta: end_play
   when:
     - not kdevops_archive_mirror_present|bool
 
 - name: Clone kdevops-results-archive repository with git LFS and use the local mirror
-  git:
+  ansible.builtin.git:
     repo: "{{ kdevops_results_repo_url }}"
     dest: "{{ kdevops_results_archive_dir }}"
     version: main
@@ -235,96 +235,96 @@
   ansible.builtin.debug:
     msg: "This is a kdevops archive demo, throw away results"
   when:
-    - 'kdevops_archive_demo|bool'
+    - "kdevops_archive_demo|bool"
 
 - name: Check if ci.trigger file exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ topdir_path }}/ci.trigger"
   register: ci_trigger_file
 
 - name: Read ci.trigger file if it exists
-  slurp:
+  ansible.builtin.slurp:
     path: "{{ topdir_path }}/ci.trigger"
   register: ci_trigger_content
   when: ci_trigger_file.stat.exists
 
 - name: Set kdevops_archive_test_subject from ci.trigger
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_test_trigger: "{{ ci_trigger_content.content | b64decode | trim }}"
   when: ci_trigger_file.stat.exists
 
 - name: Set kdevops_archive_test_trigger in case ci.trigger is not set
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_test_trigger: "{{ target_linux_tree }}"
   when: not ci_trigger_file.stat.exists
 
 - name: Get current date in YYYYMMDD format
-  set_fact:
+  ansible.builtin.set_fact:
     current_date: "{{ '%Y%m%d' | strftime }}"
 
 - name: Construct base directory path
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_base: "{{ kdevops_workflow_name }}/{{ current_user.stdout }}/{{ kdevops_archive_test_trigger }}/{{ current_date }}"
 
 - name: Ensure base directory exists
-  file:
+  ansible.builtin.file:
     path: "{{ kdevops_results_archive_dir }}/{{ kdevops_archive_base }}"
     state: directory
-    mode: '0755'
+    mode: "0755"
 
 - name: List all directories in base path
-  find:
+  ansible.builtin.find:
     paths: "{{ kdevops_results_archive_dir }}/{{ kdevops_archive_base }}"
     file_type: directory
   register: all_dirs
 
 - name: Get directory names only
-  set_fact:
+  ansible.builtin.set_fact:
     dir_names: "{{ all_dirs.files | map(attribute='path') | map('basename') | list }}"
 
 - name: Filter for numbered directories
-  set_fact:
+  ansible.builtin.set_fact:
     numbered_dirs: "{{ dir_names | select('match', '^\\d{4}$') | list }}"
 
 - name: Get highest number or default to 0
-  set_fact:
+  ansible.builtin.set_fact:
     current_highest: "{{ (numbered_dirs | map('int') | max | default(0)) | int }}"
 
 - name: Calculate next number
-  set_fact:
+  ansible.builtin.set_fact:
     next_number_int: "{{ (current_highest | int) + 1 }}"
 
 - name: Convert to padded string
-  set_fact:
-    next_number: "{{ '%04d' % (next_number_int | int)}}"
+  ansible.builtin.set_fact:
+    next_number: "{{ '%04d' % (next_number_int | int) }}"
 
 - name: Set archive test number
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_test_number: "{{ next_number }}"
 
 - name: Check if ci.subject file exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ topdir_path }}/ci.subject"
   register: ci_subject_file
 
 - name: Read ci.subject file if it exists
-  slurp:
+  ansible.builtin.slurp:
     path: "{{ topdir_path }}/ci.subject"
   register: ci_subject_content
   when: ci_subject_file.stat.exists
 
 - name: Set kdevops_archive_test_subject from ci.subject
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_test_subject: "{{ ci_subject_content.content | b64decode | trim }}"
   when: ci_subject_file.stat.exists
 
 - name: Set best-effort heuristic subject in case ci.subject is not set
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_test_subject: "{{ target_linux_tree }} {{ kdevops_archive_test_ref }} result #{{ kdevops_archive_test_number }}"
   when: not ci_subject_file.stat.exists
 
 - name: Generate git-format-patch style filename from subject
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_ci_subject_patchform_name: >-
       {{
         (kdevops_archive_test_subject | lower
@@ -337,35 +337,35 @@
       }}
 
 - name: Set complete archive prefix with subject-based name
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_prefix: "{{ kdevops_archive_base }}/{{ kdevops_archive_test_number }}/{{ kdevops_archive_ci_subject_patchform_name }}/"
 
 - name: Create target directory if it doesn't exist
-  file:
+  ansible.builtin.file:
     path: "{{ kdevops_results_archive_dir }}/{{ kdevops_archive_prefix }}"
     state: directory
-    mode: '0755'
+    mode: "0755"
 
 - name: Copy archive to target directory
-  copy:
+  ansible.builtin.copy:
     src: "{{ kdevops_results }}/{{ kdevops_archive_test_ref }}.xz"
     dest: "{{ kdevops_results_archive_dir }}/{{ kdevops_archive_prefix }}"
-    mode: '0644'
+    mode: "0644"
 
 - name: Create .tar.xz symlink for the archive
-  file:
+  ansible.builtin.file:
     src: "{{ kdevops_archive_test_ref }}.xz"
     dest: "{{ kdevops_results_archive_dir }}/{{ kdevops_archive_prefix }}/{{ kdevops_archive_test_ref }}.tar.xz"
     state: link
 
 - name: Ensure .xz files are tracked by Git LFS
-  command:
+  ansible.builtin.command:
     cmd: git lfs track "*.xz"
   args:
     chdir: "{{ kdevops_results_archive_dir }}"
 
 - name: Stage the new archive file
-  command:
+  ansible.builtin.command:
     cmd: git add "{{ kdevops_archive_prefix }}{{ kdevops_archive_test_ref }}*.xz"
   args:
     chdir: "{{ kdevops_results_archive_dir }}"
@@ -373,44 +373,44 @@
     GIT_LFS_SKIP_SMUDGE: "0"
 
 - name: Check if ci.commit_extra file exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ topdir_path }}/ci.commit_extra"
   register: ci_commit_file
 
 - name: Read ci.commit_extra file if it exists
-  slurp:
+  ansible.builtin.slurp:
     path: "{{ topdir_path }}/ci.commit_extra"
   register: ci_commit_content
   when: ci_commit_file.stat.exists
 
 - name: Set kdevops_archive_test_subject from ci.commit_extra
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_test_commit: "{{ ci_commit_content.content | b64decode | trim }}"
   when: ci_commit_file.stat.exists
 
 - name: Set kdevops_archive_test_subject in case ci.commit_extra is not set
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_test_commit: "No extra test report details available."
   when: not ci_commit_file.stat.exists
 
 - name: Check if ci.result file exists
-  stat:
+  ansible.builtin.stat:
     path: "{{ topdir_path }}/ci.result"
   register: ci_result_file
 
 - name: Read ci.result file if it exists
-  slurp:
+  ansible.builtin.slurp:
     path: "{{ topdir_path }}/ci.result"
   register: ci_result_content
   when: ci_result_file.stat.exists
 
 - name: Set kdevops_archive_ci_test_result from ci.result
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_ci_test_result: "{{ ci_result_content.content | b64decode | trim }}"
   when: ci_result_file.stat.exists
 
 - name: Set kdevops_archive_ci_test_result in case ci.result is not set
-  set_fact:
+  ansible.builtin.set_fact:
     kdevops_archive_ci_test_result: "unknown"
   when: not ci_result_file.stat.exists
 
@@ -441,7 +441,7 @@
   ansible.builtin.copy:
     content: "{{ commit_message }}"
     dest: "{{ tmp_commit_msg.path }}"
-    mode: '0644'
+    mode: "0644"
 
 - name: Commit the archive
   ansible.builtin.shell: |
@@ -457,7 +457,7 @@
     state: absent
 
 - name: Push changes to remote repository
-  command:
+  ansible.builtin.command:
     cmd: git push origin main
   args:
     chdir: "{{ kdevops_results_archive_dir }}"
@@ -465,9 +465,9 @@
     GIT_LFS_SKIP_SMUDGE: "0"
     GIT_LFS_FORCE: "1"
   register: git_push_result
-  ignore_errors: yes
+  ignore_errors: true
 
 - name: Display push error if it failed
-  debug:
+  ansible.builtin.debug:
     msg: "Failed to push changes: {{ git_push_result.stderr }}"
   when: git_push_result.rc != 0
diff --git a/playbooks/roles/krb5/tasks/install-deps/debian/main.yml b/playbooks/roles/krb5/tasks/install-deps/debian/main.yml
index 25bdff7..5252b4d 100644
--- a/playbooks/roles/krb5/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/krb5/tasks/install-deps/debian/main.yml
@@ -1,9 +1,9 @@
 ---
 - name: Install krb5 dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - krb5-user
     state: present
-    update_cache: yes
+    update_cache: true
diff --git a/playbooks/roles/krb5/tasks/install-deps/redhat/main.yml b/playbooks/roles/krb5/tasks/install-deps/redhat/main.yml
index 109f575..d579832 100644
--- a/playbooks/roles/krb5/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/krb5/tasks/install-deps/redhat/main.yml
@@ -1,9 +1,9 @@
 ---
 - name: Install krb5 dependencies
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
diff --git a/playbooks/roles/krb5/tasks/install-deps/suse/main.yml b/playbooks/roles/krb5/tasks/install-deps/suse/main.yml
index b01ac53..673a87f 100644
--- a/playbooks/roles/krb5/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/krb5/tasks/install-deps/suse/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install krb5 dependencies
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - krb5
       - krb5-client
@@ -11,6 +11,6 @@
     force_resolution: true
 
 - name: Reboot system to make the new kernel and modules take effect
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.reboot:
diff --git a/playbooks/roles/krb5/tasks/main.yml b/playbooks/roles/krb5/tasks/main.yml
index b009267..cbf1a5c 100644
--- a/playbooks/roles/krb5/tasks/main.yml
+++ b/playbooks/roles/krb5/tasks/main.yml
@@ -12,40 +12,40 @@
   when: ansible_os_family == 'RedHat'
 
 - name: Configure /etc/krb5.conf
-  become: yes
-  become_method: sudo
-  template:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: krb5.conf.j2
     dest: /etc/krb5.conf
     owner: root
     group: root
-    mode: 0644
+    mode: "0644"
 
 - name: Ensure /etc/krb5.conf.d exists
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: /etc/krb5.conf.d
     state: directory
     owner: root
     group: root
-    mode: 0755
+    mode: "0755"
 
 - name: Add nfs principal
-  become: yes
-  become_method: sudo
-  ansible.builtin.shell:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: kadmin -w {{ krb5_admin_pw }} -q "addprinc -randkey nfs/{{ hostvars[inventory_hostname].ansible_fqdn }}"
 
 - name: Add nfs principal to keytab
-  become: yes
-  become_method: sudo
-  ansible.builtin.shell:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: kadmin -w {{ krb5_admin_pw }} -q "ktadd -k /etc/krb5.keytab nfs/{{ hostvars[inventory_hostname].ansible_fqdn }}"
 
 - name: Restart rpc.gssd on the NFS server
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ kdevops_hosts_prefix }}-nfsd"
   ansible.builtin.systemd:
     name: rpc-gssd
diff --git a/playbooks/roles/ktls/tasks/install-deps/debian/main.yml b/playbooks/roles/ktls/tasks/install-deps/debian/main.yml
index 704c394..b89afd1 100644
--- a/playbooks/roles/ktls/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/ktls/tasks/install-deps/debian/main.yml
@@ -1,10 +1,10 @@
 ---
 - name: Install ktls dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - python3-cryptography
       - ktls-utils
     state: present
-    update_cache: yes
+    update_cache: true
diff --git a/playbooks/roles/ktls/tasks/install-deps/main.yml b/playbooks/roles/ktls/tasks/install-deps/main.yml
index d9da53d..f84c19f 100644
--- a/playbooks/roles/ktls/tasks/install-deps/main.yml
+++ b/playbooks/roles/ktls/tasks/install-deps/main.yml
@@ -1,9 +1,13 @@
 ---
 # tasks to install dependencies for pynfs
-- name: oscheck distribution ospecific setup
-  include_tasks: debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.include_tasks: debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- include_tasks: suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.include_tasks: suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- include_tasks: redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.include_tasks: redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/ktls/tasks/install-deps/redhat/main.yml b/playbooks/roles/ktls/tasks/install-deps/redhat/main.yml
index 62457ed..9cc0a9e 100644
--- a/playbooks/roles/ktls/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/ktls/tasks/install-deps/redhat/main.yml
@@ -6,10 +6,10 @@
     - ansible_distribution != "Fedora"
 
 - name: Install ktls dependencies
-  become: yes
-  become_method: sudo
-  dnf:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
diff --git a/playbooks/roles/ktls/tasks/install-deps/suse/main.yml b/playbooks/roles/ktls/tasks/install-deps/suse/main.yml
index 9b89cf8..9dc533f 100644
--- a/playbooks/roles/ktls/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/ktls/tasks/install-deps/suse/main.yml
@@ -1,7 +1,7 @@
 ---
 - name: Install ktls dependencies
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - python3-cryptography
diff --git a/playbooks/roles/ktls/tasks/main.yml b/playbooks/roles/ktls/tasks/main.yml
index 85254cd..7a82215 100644
--- a/playbooks/roles/ktls/tasks/main.yml
+++ b/playbooks/roles/ktls/tasks/main.yml
@@ -1,19 +1,19 @@
+---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
 
 - name: Install dependencies
-  include_tasks: install-deps/main.yml
-
+  ansible.builtin.include_tasks: install-deps/main.yml
 - name: Construct the path to the CA directory
   delegate_to: localhost
-  set_fact:
+  ansible.builtin.set_fact:
     ca_dir: "{{ topdir_path }}/ca/{{ kdevops_host_prefix }}"
 
 - name: Create directory to hold the CA on local host
@@ -35,9 +35,9 @@
   community.crypto.openssl_csr_pipe:
     privatekey_path: "{{ ca_dir }}/ca-cert.key"
     common_name: "kdevops {{ kdevops_host_prefix }} CA"
-    use_common_name_for_san: false  # since we do not specify SANs, don't use CN as a SAN
+    use_common_name_for_san: false # since we do not specify SANs, don't use CN as a SAN
     basic_constraints:
-      - 'CA:TRUE'
+      - "CA:TRUE"
     basic_constraints_critical: true
     key_usage:
       - keyCertSign
@@ -56,7 +56,7 @@
 - name: Create private key for new TLS certificate
   community.crypto.openssl_privatekey:
     path: "/etc/pki/tls/private/ktls.key"
-  become: yes
+  become: true
 
 - name: Copy CA cert to all of the hosts
   ansible.builtin.copy:
@@ -64,8 +64,8 @@
     dest: "/etc/pki/tls/certs/ca-cert.pem"
     owner: root
     group: root
-    mode: 0644
-  become: yes
+    mode: "0644"
+  become: true
 
 - name: Create certificate signing request (CSR) for new certificate
   community.crypto.openssl_csr_pipe:
@@ -74,7 +74,7 @@
       - "DNS:{{ ansible_host }}"
       - "IP:{{ ansible_default_ipv4.address }}"
   register: csr
-  become: yes
+  become: true
 
 - name: Sign certificate with our CA
   community.crypto.x509_certificate_pipe:
@@ -82,16 +82,16 @@
     provider: ownca
     ownca_path: "{{ ca_dir }}/ca-cert.pem"
     ownca_privatekey_path: "{{ ca_dir }}/ca-cert.key"
-    ownca_not_after: +365d  # valid for one year
-    ownca_not_before: "-1d"  # valid since yesterday
+    ownca_not_after: +365d # valid for one year
+    ownca_not_before: "-1d" # valid since yesterday
   delegate_to: localhost
   register: certificate
 
 - name: Write certificate file on host
-  copy:
+  ansible.builtin.copy:
     dest: "/etc/pki/tls/certs/ktls.pem"
     content: "{{ certificate.certificate }}"
-  become: yes
+  become: true
 
 - name: Install new /etc/tlshd.conf
   ansible.builtin.copy:
@@ -99,11 +99,11 @@
     dest: "/etc/tlshd.conf"
     owner: root
     group: root
-    mode: 0644
-  become: yes
+    mode: "0644"
+  become: true
 
 - name: Enable and start tlshd
-  become: yes
+  become: true
   ansible.builtin.systemd_service:
     name: tlshd.service
     enabled: true
diff --git a/playbooks/roles/libvirt_pcie_passthrough/defaults/main.yml b/playbooks/roles/libvirt_pcie_passthrough/defaults/main.yml
index 503fc70..c7c8547 100644
--- a/playbooks/roles/libvirt_pcie_passthrough/defaults/main.yml
+++ b/playbooks/roles/libvirt_pcie_passthrough/defaults/main.yml
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier copyleft-next-0.3.1
 ---
-pcie_passthrough_enable: False
+pcie_passthrough_enable: false
 pcie_passthrough_devices:
 pcie_sysfs_device_path_prefix: "/sys/bus/pci/devices/"
 libvirt_qemu_group: libvirt-qemu
diff --git a/playbooks/roles/libvirt_pcie_passthrough/tasks/main.yml b/playbooks/roles/libvirt_pcie_passthrough/tasks/main.yml
index d325325..e1eab99 100644
--- a/playbooks/roles/libvirt_pcie_passthrough/tasks/main.yml
+++ b/playbooks/roles/libvirt_pcie_passthrough/tasks/main.yml
@@ -1,21 +1,21 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
 
 - name: Check if PCI-E sysfs driver_override file exists
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
-    sysfs_override: "{{ pcie_sysfs_device_path_prefix }}/{{ item.pcie_id}}/driver_override"
-  stat:
+    sysfs_override: "{{ pcie_sysfs_device_path_prefix }}/{{ item.pcie_id }}/driver_override"
+  ansible.builtin.stat:
     path: "{{ sysfs_override }}"
   with_items: "{{ pcie_passthrough_devices }}"
   loop_control:
@@ -25,10 +25,10 @@
     - pcie_passthrough_enable|bool
 
 - name: Enable libvirt to use PCI-E sysfs driver_override file
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ item.stat.path }}"
     group: "{{ libvirt_qemu_group }}"
     mode: "0664"
@@ -40,12 +40,12 @@
     - item.stat.exists
 
 - name: Check if PCI-E sysfs unbind file exists
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
-    sysfs_unbind: "{{ pcie_sysfs_device_path_prefix }}/{{ item.pcie_id}}/unbind"
-  stat:
+    sysfs_unbind: "{{ pcie_sysfs_device_path_prefix }}/{{ item.pcie_id }}/unbind"
+  ansible.builtin.stat:
     path: "{{ sysfs_unbind }}"
   with_items: "{{ pcie_passthrough_devices }}"
   loop_control:
@@ -55,10 +55,10 @@
     - pcie_passthrough_enable|bool
 
 - name: Enable libvirt to use PCI-E sysfs unbind file
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ item.stat.path }}"
     group: "{{ libvirt_qemu_group }}"
     mode: "0220"
@@ -70,9 +70,9 @@
     - item.stat.exists
 
 - name: Deploy udev 10-qemu-hw-users.rules which enables libvirt to use vfio subsystem
-  become: yes
-  become_method: sudo
-  template:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "10-qemu-hw-users.rules"
     dest: "/etc/udev/rules.d/"
   when:
diff --git a/playbooks/roles/libvirt_storage_pool_create/defaults/main.yml b/playbooks/roles/libvirt_storage_pool_create/defaults/main.yml
index 0fcaa87..3a2f00d 100644
--- a/playbooks/roles/libvirt_storage_pool_create/defaults/main.yml
+++ b/playbooks/roles/libvirt_storage_pool_create/defaults/main.yml
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier copyleft-next-0.3.1
 ---
-libvirt_session: False
-libvirt_storage_pool_create: False
+libvirt_session: false
+libvirt_storage_pool_create: false
 libvirt_storage_pool_name: "default"
 libvirt_storage_pool_path: "/dev/null"
diff --git a/playbooks/roles/libvirt_storage_pool_create/tasks/main.yml b/playbooks/roles/libvirt_storage_pool_create/tasks/main.yml
index 3a1c6c6..053dae1 100644
--- a/playbooks/roles/libvirt_storage_pool_create/tasks/main.yml
+++ b/playbooks/roles/libvirt_storage_pool_create/tasks/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
@@ -16,77 +16,77 @@
 # non-libvirt_session case.
 
 - name: Verify if the pool already exists
-  become: yes
-  become_method: sudo
-  command:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: "virsh pool-info {{ libvirt_storage_pool_name }}"
   register: pool_check
   failed_when: pool_check.rc != 0 and pool_check.rc != 1
   changed_when: pool_check.rc == 0 or pool_check.rc == 1
   when:
-    - 'not libvirt_session|bool'
-    - 'libvirt_storage_pool_create|bool'
+    - "not libvirt_session|bool"
+    - "libvirt_storage_pool_create|bool"
 
 - name: Create {{ libvirt_storage_pool_name }} pool if it does not exist
-  become: yes
-  become_method: sudo
-  command:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: "virsh pool-define-as {{ libvirt_storage_pool_name }} dir --target {{ libvirt_storage_pool_path }}"
   when:
-    - 'not libvirt_session|bool'
-    - 'libvirt_storage_pool_create|bool'
+    - "not libvirt_session|bool"
+    - "libvirt_storage_pool_create|bool"
     - pool_check.rc == 1
 
 - name: Start {{ libvirt_storage_pool_name }} pool
-  become: yes
-  become_method: sudo
-  command:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: "virsh pool-start {{ libvirt_storage_pool_name }}"
   when:
-    - 'not libvirt_session|bool'
-    - 'libvirt_storage_pool_create|bool'
+    - "not libvirt_session|bool"
+    - "libvirt_storage_pool_create|bool"
     - pool_check.rc == 1
 
 - name: Set pool {{ libvirt_storage_pool_name }} to auto-start
-  become: yes
-  become_method: sudo
-  command:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: "virsh  pool-autostart {{ libvirt_storage_pool_name }}"
   when:
-    - 'not libvirt_session|bool'
-    - 'libvirt_storage_pool_create|bool'
+    - "not libvirt_session|bool"
+    - "libvirt_storage_pool_create|bool"
     - pool_check.rc == 1
 
 - name: Verify if the pool already exists
-  command:
+  ansible.builtin.command:
     cmd: "virsh pool-info {{ libvirt_storage_pool_name }}"
   register: pool_check
   failed_when: pool_check.rc != 0 and pool_check.rc != 1
   changed_when: pool_check.rc == 0 or pool_check.rc == 1
   when:
-    - 'libvirt_session|bool'
-    - 'libvirt_storage_pool_create|bool'
+    - "libvirt_session|bool"
+    - "libvirt_storage_pool_create|bool"
 
 - name: Create {{ libvirt_storage_pool_name }} pool if it does not exist
-  command:
+  ansible.builtin.command:
     cmd: "virsh pool-define-as {{ libvirt_storage_pool_name }} dir --target {{ libvirt_storage_pool_path }}"
   when:
-    - 'libvirt_session|bool'
-    - 'libvirt_storage_pool_create|bool'
+    - "libvirt_session|bool"
+    - "libvirt_storage_pool_create|bool"
     - pool_check.rc == 1
 
 - name: Start {{ libvirt_storage_pool_name }} pool
-  command:
+  ansible.builtin.command:
     cmd: "virsh pool-start {{ libvirt_storage_pool_name }}"
   when:
-    - 'libvirt_session|bool'
-    - 'libvirt_storage_pool_create|bool'
+    - "libvirt_session|bool"
+    - "libvirt_storage_pool_create|bool"
     - pool_check.rc == 1
 
 - name: Set pool {{ libvirt_storage_pool_name }} to auto-start
-  command:
+  ansible.builtin.command:
     cmd: "virsh  pool-autostart {{ libvirt_storage_pool_name }}"
   when:
-    - 'libvirt_session|bool'
-    - 'libvirt_storage_pool_create|bool'
+    - "libvirt_session|bool"
+    - "libvirt_storage_pool_create|bool"
     - pool_check.rc == 1
diff --git a/playbooks/roles/libvirt_user/defaults/main.yml b/playbooks/roles/libvirt_user/defaults/main.yml
index de3212b..1e59ded 100644
--- a/playbooks/roles/libvirt_user/defaults/main.yml
+++ b/playbooks/roles/libvirt_user/defaults/main.yml
@@ -1,9 +1,9 @@
 # SPDX-License-Identifier copyleft-next-0.3.1
 ---
-only_install: False
-only_verify_user: False
+only_install: false
+only_verify_user: false
 
-skip_install: False
-skip_configuration: False
+skip_install: false
+skip_configuration: false
 
-libvirt_session: False
+libvirt_session: false
diff --git a/playbooks/roles/libvirt_user/tasks/enable-user/debian/main.yml b/playbooks/roles/libvirt_user/tasks/enable-user/debian/main.yml
index 1ad7f17..f0d6754 100644
--- a/playbooks/roles/libvirt_user/tasks/enable-user/debian/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/enable-user/debian/main.yml
@@ -1,34 +1,35 @@
 ---
 - name: Adds the user to the respective distro libvirt groups
-  become: yes
-  become_method: sudo
-  user:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.user:
     name: "{{ running_user }}"
     groups: libvirt,kvm,libvirt-qemu
-    append: yes
+    append: true
   when:
     - not libvirt_session
     - not only_verify_user|bool
 
 - name: Check if apparmor_status exists
-  stat:
+  ansible.builtin.stat:
     path: /usr/sbin/apparmor_status
   register: apparmor_file_stat_result
-  when: 'only_verify_user|bool'
+  when: "only_verify_user|bool"
 
 - name: Verify if AppArmor is disabled when applicable
-  become: yes
-  become_method: sudo
-  command:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: /usr/sbin/apparmor_status --enabled
   register: apparmor_check
   failed_when: apparmor_check.rc == 0
   when:
-    - 'only_verify_user|bool'
-    - 'apparmor_file_stat_result.stat.exists'
+    - "only_verify_user|bool"
+    - "apparmor_file_stat_result.stat.exists"
 
 - name: Verifies user's effective group allows to run libvirt/kvm without being root
-  shell: groups | grep {{ item }}
+  ansible.builtin.shell: groups | grep {{ item }}
+  changed_when: false
   with_items:
     - libvirt
     - kvm
@@ -36,24 +37,24 @@
   loop_control:
     label: "Verifying if user's current effective groups includes {{ item }}"
   register: group_check
-  failed_when: False
+  failed_when: false
   ignore_errors: true
   when:
     - not libvirt_session
     - not only_verify_user|bool
 
 - name: Ensure our user is part of the libvirt/kvm groups
-  tags: [ 'journal' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["journal"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.user:
-    name:  "{{ ansible_user_id }}"
+    name: "{{ ansible_user_id }}"
     groups:
       - libvirt
       - kvm
       - libvirt-qemu
-    append: yes
+    append: true
   when:
     - not libvirt_session
     - not only_verify_user|bool
diff --git a/playbooks/roles/libvirt_user/tasks/enable-user/redhat/main.yml b/playbooks/roles/libvirt_user/tasks/enable-user/redhat/main.yml
index 717d8ef..c3aa249 100644
--- a/playbooks/roles/libvirt_user/tasks/enable-user/redhat/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/enable-user/redhat/main.yml
@@ -1,48 +1,48 @@
 ---
 - name: Adds the user to the respective distro libvirt groups
-  become: yes
-  become_method: sudo
-  user:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.user:
     name: "{{ ansible_env.USER }}"
     groups: libvirt,kvm,qemu
-    append: yes
+    append: true
   when:
     - not only_verify_user|bool
     - not libvirt_session
 
 - name: Check if apparmor_status exists
-  stat:
+  ansible.builtin.stat:
     path: /usr/sbin/apparmor_status
   register: apparmor_file_stat_result
-  when: 'only_verify_user|bool'
+  when: "only_verify_user|bool"
 
 - name: Verify if apparmor is disabled when applicable
-  become: yes
-  become_method: sudo
-  command:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: /usr/sbin/apparmor_status --enabled
   register: apparmor_check
   failed_when: apparmor_check.rc == 0
   when:
-    - 'only_verify_user|bool'
-    - 'apparmor_file_stat_result.stat.exists'
+    - "only_verify_user|bool"
+    - "apparmor_file_stat_result.stat.exists"
 
 - name: Test whether SELinux is enabled
-  command: /usr/sbin/selinuxenabled
+  ansible.builtin.command: /usr/sbin/selinuxenabled
   register: selinux_status
-  changed_when: False
-  failed_when: False
+  changed_when: false
+  failed_when: false
   when:
     - only_verify_user|bool
 
 - name: Test SELinux context of {{ libvirt_storage_pool_path }}
-  command: "/usr/bin/stat -c %C {{ libvirt_storage_pool_path }}"
+  ansible.builtin.command: "/usr/bin/stat -c %C {{ libvirt_storage_pool_path }}"
   register: storage_pool_path_ctx
   when:
     - only_verify_user|bool
 
 - name: Set SELinux context on {{ libvirt_storage_pool_path }}
-  become: yes
+  become: true
   community.general.sefcontext:
     target: "{{ libvirt_storage_pool_path }}(/.*)?"
     setype: svirt_home_t
@@ -53,7 +53,8 @@
     - storage_pool_path_ctx.stdout.find(':svirt_home_t:') == -1
 
 - name: Verifies user's effective group allows to run libvirt/kvm without being root
-  shell: groups | grep {{ item }}
+  ansible.builtin.shell: groups | grep {{ item }}
+  changed_when: false
   with_items:
     - libvirt
     - kvm
@@ -61,7 +62,7 @@
   loop_control:
     label: "Verifying if user's current effective groups includes {{ item }}"
   register: group_check
-  failed_when: False
+  failed_when: false
   ignore_errors: true
   when:
     - only_verify_user|bool
@@ -69,7 +70,7 @@
 
 - name: Inform if user must log out and back in to use libvirt as a regular user
   register: user_groups_ready
-  debug:
+  ansible.builtin.debug:
     msg: "User group settings are not in effect, you must log out and back in to make group {{ item.item }} be part of your effective group"
   failed_when: item.rc is undefined or item.rc != 0
   when:
diff --git a/playbooks/roles/libvirt_user/tasks/enable-user/suse/main.yml b/playbooks/roles/libvirt_user/tasks/enable-user/suse/main.yml
index 8805c89..559d912 100644
--- a/playbooks/roles/libvirt_user/tasks/enable-user/suse/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/enable-user/suse/main.yml
@@ -1,34 +1,35 @@
 ---
 - name: Adds the user to the respective distro libvirt groups
-  become: yes
-  become_method: sudo
-  user:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.user:
     name: "{{ ansible_env.USER }}"
     groups: libvirt,kvm,qemu
-    append: yes
+    append: true
   when:
     - not libvirt_session
     - not only_verify_user|bool
 
 - name: Check if apparmor_status exists
-  stat:
+  ansible.builtin.stat:
     path: /usr/sbin/apparmor_status
   register: apparmor_file_stat_result
-  when: 'only_verify_user|bool'
+  when: "only_verify_user|bool"
 
 - name: Verify if apparmor is disabled when applicable
-  become: yes
-  become_method: sudo
-  command:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: /usr/sbin/apparmor_status --enabled
   register: apparmor_check
   failed_when: apparmor_check.rc == 0
   when:
-    - 'only_verify_user|bool'
-    - 'apparmor_file_stat_result.stat.exists'
+    - "only_verify_user|bool"
+    - "apparmor_file_stat_result.stat.exists"
 
 - name: Verifies user's effective group allows to run libvirt/kvm without being root
-  shell: groups | grep {{ item }}
+  ansible.builtin.shell: groups | grep {{ item }}
+  changed_when: false
   with_items:
     - libvirt
     - kvm
@@ -36,7 +37,7 @@
   loop_control:
     label: "Verifying if user's current effective groups includes {{ item }}"
   register: group_check
-  failed_when: False
+  failed_when: false
   ignore_errors: true
   when:
     - not libvirt_session
@@ -44,7 +45,7 @@
 
 - name: Inform if user must log out and back in to use libvirt as a regular user
   register: user_groups_ready
-  debug:
+  ansible.builtin.debug:
     msg: "User group settings are not in effect, you must log out and back in to make group {{ item.item }} be part of your effective group"
   failed_when: item.rc is undefined or item.rc != 0
   when:
diff --git a/playbooks/roles/libvirt_user/tasks/install-deps/debian/main.yml b/playbooks/roles/libvirt_user/tasks/install-deps/debian/main.yml
index 463c151..e49f5c7 100644
--- a/playbooks/roles/libvirt_user/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/install-deps/debian/main.yml
@@ -1,15 +1,15 @@
 ---
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
   tags: install
 
 - name: Install libvirt / kvm dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - libvirt-daemon
       - libvirt-daemon-system
@@ -22,16 +22,16 @@
   tags: install
 
 - name: Enable libvirtd
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: libvirtd
-    enabled: yes
-    masked: no
+    enabled: true
+    masked: false
 
 - name: Make sure libvirtd is running
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     state: started
     name: libvirtd
diff --git a/playbooks/roles/libvirt_user/tasks/install-deps/fedora/main.yml b/playbooks/roles/libvirt_user/tasks/install-deps/fedora/main.yml
index f85da36..088de97 100644
--- a/playbooks/roles/libvirt_user/tasks/install-deps/fedora/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/install-deps/fedora/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install libvirt / kvm dependencies
-  become: yes
-  become_method: sudo
-  yum:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - libvirt
       - libvirt-daemon
@@ -12,31 +12,31 @@
     state: present
 
 - name: Enable libvirtd
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: libvirtd
-    enabled: yes
-    masked: no
+    enabled: true
+    masked: false
 
 - name: Make sure libvirtd is running
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     state: started
     name: libvirtd
 
 - name: Enable virtnetworkd
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: virtnetworkd
-    enabled: yes
-    masked: no
+    enabled: true
+    masked: false
 
 - name: Make sure virtnetworkd is running
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     state: started
     name: virtnetworkd
diff --git a/playbooks/roles/libvirt_user/tasks/install-deps/main.yml b/playbooks/roles/libvirt_user/tasks/install-deps/main.yml
index c652ab2..2dee349 100644
--- a/playbooks/roles/libvirt_user/tasks/install-deps/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/install-deps/main.yml
@@ -1,21 +1,27 @@
 ---
 - name: Import optional distribution specific variables
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "{{ ansible_facts['os_family']|lower }}.yml"
+        - "{{ ansible_facts['os_family'] | lower }}.yml"
       skip: true
   tags: vars
 
-- name: Distribution specific setup
-  import_tasks: debian/main.yml
+- name: Debian/Ubuntu distribution specific setup
+  ansible.builtin.import_tasks: debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: redhat/main.yml
   when:
     - ansible_facts['os_family']|lower == 'redhat'
     - ansible_facts['distribution']|lower != "fedora"
-- import_tasks: fedora/main.yml
+
+- name: Fedora distribution specific setup
+  ansible.builtin.import_tasks: fedora/main.yml
   when: ansible_facts['distribution']|lower == "fedora"
diff --git a/playbooks/roles/libvirt_user/tasks/install-deps/redhat/main.yml b/playbooks/roles/libvirt_user/tasks/install-deps/redhat/main.yml
index af96cb9..35d3e4d 100644
--- a/playbooks/roles/libvirt_user/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/install-deps/redhat/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install libvirt / kvm dependencies
-  become: yes
-  become_method: sudo
-  yum:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - libvirt
       - libvirt-daemon
@@ -12,16 +12,16 @@
     state: present
 
 - name: Enable libvirtd
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: libvirtd
-    enabled: yes
-    masked: no
+    enabled: true
+    masked: false
 
 - name: Make sure libvirtd is running
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     state: started
     name: libvirtd
diff --git a/playbooks/roles/libvirt_user/tasks/install-deps/suse/main.yml b/playbooks/roles/libvirt_user/tasks/install-deps/suse/main.yml
index 82b3d61..fdef82e 100644
--- a/playbooks/roles/libvirt_user/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/install-deps/suse/main.yml
@@ -1,7 +1,7 @@
 ---
 - name: Install libvirt / kvm dependencies
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - libvirt
@@ -12,16 +12,16 @@
     state: present
 
 - name: Enable libvirtd
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: libvirtd
-    enabled: yes
-    masked: no
+    enabled: true
+    masked: false
 
 - name: Make sure libvirtd is running
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     state: started
     name: libvirtd
diff --git a/playbooks/roles/libvirt_user/tasks/main.yml b/playbooks/roles/libvirt_user/tasks/main.yml
index c1125bf..ddd701b 100644
--- a/playbooks/roles/libvirt_user/tasks/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/main.yml
@@ -1,24 +1,24 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 # Distro specific
 - name: Install libvirt and other dependencies
-  include_tasks: install-deps/main.yml
+  ansible.builtin.include_tasks: install-deps/main.yml
   when:
-    - 'not skip_install|bool'
-    - 'not only_verify_user|bool'
+    - "not skip_install|bool"
+    - "not only_verify_user|bool"
 
 - name: Enables / verifies if user to run libvirt guests
-  include_tasks: enable-user/main.yml
+  ansible.builtin.include_tasks: enable-user/main.yml
   when:
-    - 'not skip_configuration|bool'
-    - 'not only_install|bool'
+    - "not skip_configuration|bool"
+    - "not only_install|bool"
diff --git a/playbooks/roles/linux-mirror/defaults/main.yml b/playbooks/roles/linux-mirror/defaults/main.yml
index 9f2e835..763bcb9 100644
--- a/playbooks/roles/linux-mirror/defaults/main.yml
+++ b/playbooks/roles/linux-mirror/defaults/main.yml
@@ -3,7 +3,7 @@
 mirror_user_system_dir: "~/.config/systemd/user/"
 local_systemd_path: "/usr/local/lib/systemd/system/"
 
-install_linux_mirror:  False
+install_linux_mirror: false
 # Please keep these in alphabetical order
 defaults_blktrace_git: "https://git.kernel.dk/blktrace"
 defaults_dbench_git: "https://github.com/linux-kdevops/dbench.git"
@@ -27,4 +27,4 @@ mirror_torvalds_url: "git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin
 
 install_only_git_daemon: false
 
-linux_mirror_nfs: False
+linux_mirror_nfs: false
diff --git a/playbooks/roles/linux-mirror/tasks/install-deps/fedora/main.yml b/playbooks/roles/linux-mirror/tasks/install-deps/fedora/main.yml
index 1746701..79a6176 100644
--- a/playbooks/roles/linux-mirror/tasks/install-deps/fedora/main.yml
+++ b/playbooks/roles/linux-mirror/tasks/install-deps/fedora/main.yml
@@ -1,7 +1,7 @@
 ---
 - name: Install Fedora-specific dependencies
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
@@ -9,15 +9,15 @@
     state: present
   when:
     - install_linux_mirror|bool
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
 
 - name: Gather service facts
   ansible.builtin.service_facts:
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
 
 - name: Open the firewall on control node for git traffic
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.posix.firewalld:
     zone: libvirt
@@ -29,4 +29,4 @@
     - install_linux_mirror|bool
     - '"firewalld.service" in ansible_facts.services'
     - ansible_facts.services['firewalld.service'].status == "enabled"
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
diff --git a/playbooks/roles/linux-mirror/tasks/main.yml b/playbooks/roles/linux-mirror/tasks/main.yml
index 9799270..5368183 100644
--- a/playbooks/roles/linux-mirror/tasks/main.yml
+++ b/playbooks/roles/linux-mirror/tasks/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  failed_when: false # Connectivity checks may fail gracefully
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
@@ -14,64 +14,64 @@
   ansible.builtin.include_tasks: install-deps/fedora/main.yml
   when:
     - ansible_distribution == 'Fedora'
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
 
 - name: Fail if linux_mirror_nfs is enabled but user is not root
-  fail:
+  ansible.builtin.fail:
     msg: "NFS server setup is enabled, but you are not running as root. Please run as root to set up NFS."
   when:
     - not install_only_git_daemon|bool
     - linux_mirror_nfs | bool
     - ansible_user_id != 'root'
-  tags: [ 'nfs', 'mirror' ]
+  tags: ["nfs", "mirror"]
 
 - name: Set up the mirrors.yaml based on preferences configured
-  tags: [ 'mirror' ]
-  template:
+  tags: ["mirror"]
+  ansible.builtin.template:
     src: "mirrors.yaml.j2"
     dest: "{{ topdir_path }}/playbooks/roles/linux-mirror/linux-mirror-systemd/mirrors.yaml"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   when:
     - install_linux_mirror|bool
     - not install_only_git_daemon|bool
 
 - name: Create empty directory for systemd service if it does not exist
-  tags: [ 'mirror' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  tags: ["mirror"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ local_systemd_path }}"
     state: directory
-    mode: '0755'
+    mode: "0755"
     owner: root
     group: root
   when:
     - install_linux_mirror|bool
 
 - name: Set up the git daemon systemd service and socket files
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "{{ item }}.j2"
     dest: "{{ local_systemd_path }}/{{ item }}"
-    force: yes
-    trim_blocks: True
-    lstrip_blocks: True
+    force: true
+    trim_blocks: true
+    lstrip_blocks: true
   with_items:
     - "git-daemon@.service"
     - "git-daemon.socket"
   when:
     - install_linux_mirror|bool
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
 
 - name: Start mirroring
   delegate_to: localhost
   run_once: true
-  shell: |
+  ansible.builtin.shell: |
     set -o pipefail
     {{ role_path }}/python/start-mirroring.py --verbose
   args:
@@ -80,12 +80,12 @@
   when:
     - install_linux_mirror|bool
     - not install_only_git_daemon|bool
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
 
 - name: Generate systemd service and timer unit files
   delegate_to: localhost
   run_once: true
-  shell: |
+  ansible.builtin.shell: |
     set -o pipefail
     {{ role_path }}/python/gen-mirror-files.py --refresh 360m --refresh-on-boot 10m
   args:
@@ -94,45 +94,45 @@
   when:
     - install_linux_mirror|bool
     - not install_only_git_daemon|bool
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
 
-- name: load variables from yaml file
-  include_vars:
+- name: Load variables from yaml file
+  ansible.builtin.include_vars:
     file: "{{ topdir_path }}/playbooks/roles/linux-mirror/linux-mirror-systemd/mirrors.yaml"
     name: mirrors
-  tags: [ 'mirror' , 'status-check' ]
+  tags: ["mirror", "status-check"]
   when:
     - not install_only_git_daemon|bool
 
 - name: Set scope based on user (root uses system scope)
-  set_fact:
+  ansible.builtin.set_fact:
     systemd_scope: "{{ 'system' if ansible_user_id == 'root' else 'user' }}"
     systemd_dir: "{{ '/etc/systemd/system/' if ansible_user_id == 'root' else mirror_user_system_dir }}"
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
   when:
     - not install_only_git_daemon|bool
 
 - name: Copy systemd service file to user/system systemd dir
-  copy:
+  ansible.builtin.copy:
     src: "{{ topdir_path }}/playbooks/roles/linux-mirror/linux-mirror-systemd/{{ item.short_name | regex_replace('/', '-') }}-mirror.service"
     dest: "{{ systemd_dir }}/"
   with_items:
     - "{{ mirrors.get('mirrors') }}"
   loop_control:
     label: "Installing {{ item.short_name }}-mirror.service unit ..."
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
   when:
     - not install_only_git_daemon|bool
 
 - name: Copy systemd timer file to user/system systemd dir
-  copy:
+  ansible.builtin.copy:
     src: "{{ topdir_path }}/playbooks/roles/linux-mirror/linux-mirror-systemd/{{ item.short_name | regex_replace('/', '-') }}-mirror.timer"
     dest: "{{ systemd_dir }}/"
   with_items:
     - "{{ mirrors.get('mirrors') }}"
   loop_control:
     label: "Installing {{ item.short_name }}-mirror.timer unit ..."
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
   when:
     - not install_only_git_daemon|bool
 
@@ -146,7 +146,7 @@
     - "{{ mirrors.get('mirrors') }}"
   loop_control:
     label: "Enabling {{ item.short_name }}-mirror.service unit ..."
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
   when:
     - not install_only_git_daemon|bool
 
@@ -160,7 +160,7 @@
     - "{{ mirrors.get('mirrors') }}"
   loop_control:
     label: "Enabling {{ item.short_name }}-mirror.timer unit ..."
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
   when:
     - not install_only_git_daemon|bool
 
@@ -173,16 +173,16 @@
     - "{{ mirrors.get('mirrors') }}"
   loop_control:
     label: "Checking service status for {{ item.short_name | regex_replace('/', '-') }}-mirror.service unit ..."
-  tags: [ 'status-check' ]
+  tags: ["status-check"]
   when:
     - not install_only_git_daemon|bool
 
 - name: Service status
-  debug:
+  ansible.builtin.debug:
     var: "{{ item }}.status.ActiveState"
   with_items:
     - "{{ mirror_service_status.item }}"
-  tags: [ 'status-check' ]
+  tags: ["status-check"]
   when:
     - not install_only_git_daemon|bool
 
@@ -195,31 +195,31 @@
     - "{{ mirrors.get('mirrors') }}"
   loop_control:
     label: "Checking service status for {{ item.short_name | regex_replace('/', '-') }}--mirror.timer ..."
-  tags: [ 'status-check' ]
+  tags: ["status-check"]
   when:
     - not install_only_git_daemon|bool
 
 - name: Service timer status
-  debug:
+  ansible.builtin.debug:
     var: "{{ item }}.status.ActiveState"
   with_items:
     - "{{ mirror_timer_status.item }}"
-  tags: [ 'status-check' ]
+  tags: ["status-check"]
   when:
     - not install_only_git_daemon|bool
 
 - name: Enable git service systemd socket activation
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: "git-daemon.socket"
     state: started
     enabled: true
-  tags: [ 'mirror' ]
+  tags: ["mirror"]
 
 - name: Install NFS server packages (for root user and if NFS is enabled)
-  become: yes
+  become: true
   ansible.builtin.package:
     name:
       - rpcbind
@@ -228,10 +228,10 @@
     - not install_only_git_daemon|bool
     - ansible_user_id == 'root'
     - linux_mirror_nfs | bool
-  tags: [ 'nfs', 'mirror' ]
+  tags: ["nfs", "mirror"]
 
 - name: Ensure rpcbind and NFS services are started and enabled (for root user and if NFS is enabled)
-  become: yes
+  become: true
   ansible.builtin.systemd:
     name: "{{ item }}"
     state: started
@@ -243,24 +243,24 @@
     - ansible_user_id == 'root'
     - not install_only_git_daemon|bool
     - linux_mirror_nfs | bool
-  tags: [ 'nfs', 'mirror' ]
+  tags: ["nfs", "mirror"]
 
 - name: Create the /mirror/ directory if it doesn't exist (for root user and if NFS is enabled)
-  become: yes
+  become: true
   ansible.builtin.file:
     path: /mirror/
     state: directory
     owner: root
     group: root
-    mode: '0755'
+    mode: "0755"
   when:
     - ansible_user_id == 'root'
     - linux_mirror_nfs | bool
     - not install_only_git_daemon|bool
-  tags: [ 'nfs', 'mirror' ]
+  tags: ["nfs", "mirror"]
 
 - name: Check if /mirror is already exported
-  become: yes
+  become: true
   ansible.builtin.command:
     cmd: exportfs
   register: exportfs_output
@@ -269,49 +269,48 @@
     - ansible_user_id == 'root'
     - linux_mirror_nfs | bool
     - not install_only_git_daemon|bool
-  tags: [ 'nfs', 'mirror' ]
+  tags: ["nfs", "mirror"]
 
 - name: Add /mirror to /etc/exports if not already exported
-  become: yes
+  become: true
   ansible.builtin.lineinfile:
     path: /etc/exports
     line: "/mirror/ *(ro,sync,no_root_squash,no_subtree_check)"
     state: present
-    create: yes
+    create: true
   when:
     - not install_only_git_daemon|bool
     - ansible_user_id == 'root'
     - linux_mirror_nfs | bool
     - "'/mirror' not in exportfs_output.stdout"
-  tags: [ 'nfs', 'mirror' ]
+  tags: ["nfs", "mirror"]
 
 - name: Export the /mirror/ directory (for root user and if NFS is enabled)
-  become: yes
+  become: true
   ansible.builtin.command:
     cmd: exportfs -ra
   when:
     - not install_only_git_daemon|bool
     - ansible_user_id == 'root'
     - linux_mirror_nfs | bool
-  tags: [ 'nfs', 'mirror' ]
+  tags: ["nfs", "mirror"]
 
 - name: Check if firewalld is running
-  become: yes
+  become: true
   ansible.builtin.command:
     cmd: systemctl is-active firewalld
   register: firewalld_status
-  ignore_errors: yes
   changed_when: false
-  failed_when: firewalld_status.rc not in [0, 3, 4]  # rc=0 (active), rc=3 (inactive but not an error), 4 not present
+  failed_when: firewalld_status.rc not in [0, 3, 4] # rc=0 (active), rc=3 (inactive but not an error), 4 not present
   when:
     - not install_only_git_daemon|bool
     - linux_mirror_nfs | bool
     - ansible_user_id == 'root'
-  tags: [ 'nfs', 'mirror' ]
+  tags: ["nfs", "mirror"]
 
 - name: Ensure NFS firewall rules are set (for root user and if NFS is enabled)
-  become: yes
-  ansible.builtin.firewalld:
+  become: true
+  ansible.posix.firewalld:
     service: "{{ item }}"
     permanent: true
     state: enabled
@@ -325,4 +324,4 @@
     - ansible_user_id == 'root'
     - linux_mirror_nfs | bool
     - firewalld_status.stdout == 'active'
-  tags: [ 'nfs', 'mirror' ]
+  tags: ["nfs", "mirror"]
diff --git a/playbooks/roles/ltp/defaults/main.yml b/playbooks/roles/ltp/defaults/main.yml
index 1787cdb..614b9dc 100644
--- a/playbooks/roles/ltp/defaults/main.yml
+++ b/playbooks/roles/ltp/defaults/main.yml
@@ -3,4 +3,4 @@
 # Our sensible defaults for the ltp role.
 #
 # The default is to not run the ltp tests.
-kdevops_run_ltp: False
+kdevops_run_ltp: false
diff --git a/playbooks/roles/ltp/tasks/main.yml b/playbooks/roles/ltp/tasks/main.yml
index 71e1541..791e6bb 100644
--- a/playbooks/roles/ltp/tasks/main.yml
+++ b/playbooks/roles/ltp/tasks/main.yml
@@ -12,19 +12,19 @@
   tags: vars
 
 - name: Set up the /data mount point
-  tags: ['data_partition']
+  tags: ["data_partition"]
   ansible.builtin.include_role:
     name: create_data_partition
 
 - name: Set the pathname of the results directory on the control node
-  tags: ['vars']
+  tags: ["vars"]
   ansible.builtin.set_fact:
     ltp_test_group: "{{ ansible_host | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') }}"
     ltp_results_full_path: "{{ topdir_path }}/workflows/ltp/results"
     ltp_results_target: "../workflows/ltp/results/last-run"
 
 - name: Create the local results directory
-  tags: ['first_run']
+  tags: ["first_run"]
   ansible.builtin.file:
     path: "{{ ltp_results_full_path }}"
     state: directory
@@ -33,29 +33,38 @@
   run_once: true
 
 - name: Clean up our localhost results/last-run directory
-  local_action: file path="{{ ltp_results_target }}/" state=absent
+  ansible.builtin.file:
+    path: "{{ ltp_results_target }}/"
+    state: absent
+  delegate_to: localhost
   run_once: true
-  tags: [ 'run_tests', 'copy_results', 'clean_local_results' ]
+  tags: ["run_tests", "copy_results", "clean_local_results"]
 
 - name: Create empty last-run directory
-  local_action: file path="{{ ltp_results_target }}/" state=directory
+  ansible.builtin.file:
+    path: "{{ ltp_results_target }}/"
+    state: directory
+  delegate_to: localhost
   run_once: true
-  tags: [ 'run_tests', 'copy_results', 'clean_local_results' ]
+  tags: ["run_tests", "copy_results", "clean_local_results"]
 
 - name: Get used target kernel version
-  tags: [ 'copy_results' ]
-  command: "uname -r"
+  tags: ["copy_results"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Store last kernel variable
-  tags: [ 'copy_results' ]
-  set_fact:
-    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\",'') }}"
+  tags: ["copy_results"]
+  ansible.builtin.set_fact:
+    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\", '') }}"
   run_once: true
 
 - name: Document used target kernel version
-  local_action: "shell echo {{ last_kernel }} > {{ ltp_results_target }}/../last-kernel.txt"
-  tags: [ 'run_tests', 'copy_results', 'print_results' ]
+  ansible.builtin.shell: echo {{ last_kernel }} > {{ ltp_results_target }}/../last-kernel.txt
+  changed_when: false
+  delegate_to: localhost
+  tags: ["run_tests", "copy_results", "print_results"]
   run_once: true
 
 - name: Ensure the local results directory exists
@@ -71,11 +80,11 @@
   vars:
     params:
       files:
-        - '{{ ansible_distribution }}.yml'
-        - '{{ ansible_os_family }}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Enable the CodeReady repo
   ansible.builtin.include_role:
@@ -84,30 +93,30 @@
     - ansible_os_family == "RedHat"
 
 - name: Install dependencies for ltp
-  tags: ['build', 'ltp']
+  tags: ["build", "ltp"]
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name: "{{ ltp_packages }}"
     state: present
 
 - name: Set the pathname of the build directory
-  tags: ['build', 'ltp']
+  tags: ["build", "ltp"]
   ansible.builtin.set_fact:
     ltp_build_dir: "{{ data_path }}/ltp"
 
 - name: Remove existing ltp build directory
-  tags: ['build', 'ltp']
+  tags: ["build", "ltp"]
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ ltp_build_dir }}"
     state: absent
 
 - name: Shallow-clone the ltp source code from {{ ltp_repo }}
-  tags: ['build', 'clone', 'git', 'ltp']
+  tags: ["build", "clone", "git", "ltp"]
   ansible.builtin.git:
     repo: "{{ ltp_repo }}"
     dest: "{{ ltp_build_dir }}"
@@ -122,7 +131,7 @@
     - kdevops_workflows_dedicated_workflow|bool
 
 - name: Clone the full ltp source code tree from {{ ltp_repo }}
-  tags: ['build', 'clone', 'git', 'ltp']
+  tags: ["build", "clone", "git", "ltp"]
   ansible.builtin.git:
     repo: "{{ ltp_repo }}"
     dest: "{{ ltp_build_dir }}"
@@ -136,29 +145,29 @@
     - not kdevops_workflows_dedicated_workflow|bool
 
 - name: Initialize autotools in the build directory
-  tags: ['build', 'ltp']
+  tags: ["build", "ltp"]
   community.general.make:
     chdir: "{{ ltp_build_dir }}"
     target: autotools
 
 - name: Configure the ltp build environment
-  tags: ['build', 'ltp']
+  tags: ["build", "ltp"]
   ansible.builtin.command:
     cmd: "./configure"
     chdir: "{{ ltp_build_dir }}"
     creates: include/config.h
 
 - name: Build ltp from source
-  tags: ['build', 'ltp']
+  tags: ["build", "ltp"]
   community.general.make:
     chdir: "{{ ltp_build_dir }}"
     target: all
     jobs: "{{ ansible_processor_nproc }}"
 
 - name: Ensure /opt has correct permissions
-  tags: ['ltp']
+  tags: ["ltp"]
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.file:
     state: directory
@@ -166,16 +175,16 @@
     mode: "u=rwx,g=rwx,o=rwxt"
 
 - name: Install ltp on the test systems
-  tags: ['ltp']
+  tags: ["ltp"]
   community.general.make:
     chdir: "{{ ltp_build_dir }}"
     target: install
     jobs: "{{ ansible_processor_nproc }}"
 
 - name: Start the rpcbind service
-  tags: ['ltp']
+  tags: ["ltp"]
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: rpcbind.service
@@ -183,9 +192,9 @@
     enabled: true
 
 - name: Generate /etc/nfs.conf
-  tags: ['ltp']
+  tags: ["ltp"]
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.template:
     src: nfs.conf.j2
@@ -195,9 +204,9 @@
     mode: "u=rw,g=r,o=r"
 
 - name: Start the NFSD service
-  tags: ['ltp']
+  tags: ["ltp"]
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: nfs-server.service
@@ -205,9 +214,9 @@
     enabled: true
 
 - name: Run ltp
-  tags: ['run_tests']
+  tags: ["run_tests"]
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   environment:
     CREATE_ENTRIES: 1
@@ -217,16 +226,16 @@
   failed_when: false
 
 - name: Look for test results in target node's /opt/ltp/results
-  tags: ['copy_results']
+  tags: ["copy_results"]
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.find:
     paths: "/opt/ltp/results/"
   register: results_files
 
 - name: Copy test results to the control node
-  tags: ['copy_results']
+  tags: ["copy_results"]
   ansible.builtin.fetch:
     src: "{{ item.path }}"
     dest: "{{ ltp_results_full_path }}/last-run/{{ last_kernel }}/{{ ltp_test_group }}/"
@@ -239,16 +248,16 @@
     label: "Copying {{ item.path | basename }} ..."
 
 - name: Look for test output in target node's /opt/ltp/output
-  tags: ['copy_results']
+  tags: ["copy_results"]
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.find:
     paths: "/opt/ltp/output/"
   register: output_files
 
 - name: Copy test output to the control node
-  tags: ['copy_results']
+  tags: ["copy_results"]
   ansible.builtin.fetch:
     src: "{{ item.path }}"
     dest: "{{ ltp_results_full_path }}/last-run/{{ last_kernel }}/{{ ltp_test_group }}/"
@@ -261,18 +270,18 @@
     label: "Copying {{ item.path | basename }} ..."
 
 - name: Verify last-run kernel directory exists
-  tags: [ 'copy_results' ]
+  tags: ["copy_results"]
   delegate_to: localhost
-  stat:
+  ansible.builtin.stat:
     path: "{{ ltp_results_full_path }}/last-run/{{ last_kernel }}"
   register: last_run_kernel_dir
 
 - name: Copy over the last-run into the results directory for archiving into kdevops
-  copy:
+  ansible.builtin.copy:
     src: "{{ ltp_results_full_path }}/last-run/{{ last_kernel }}"
     dest: "{{ ltp_results_full_path }}/"
   run_once: true
-  tags: [ 'copy_results' ]
+  tags: ["copy_results"]
   delegate_to: localhost
   when:
     - last_run_kernel_dir.stat.exists
diff --git a/playbooks/roles/mmtests/defaults/main.yml b/playbooks/roles/mmtests/defaults/main.yml
index 69f9bad..45246d0 100644
--- a/playbooks/roles/mmtests/defaults/main.yml
+++ b/playbooks/roles/mmtests/defaults/main.yml
@@ -13,26 +13,26 @@ mmtests_test_type: "thpcompact"
 
 mmtests_thpcompact_threads_min: 1
 mmtests_thpcompact_threads_max: 32
-mmtests_thpcompact_threads_max_type_manual: False
-mmtests_thpcompact_threads_max_type_auto: False
+mmtests_thpcompact_threads_max_type_manual: false
+mmtests_thpcompact_threads_max_type_auto: false
 mmtests_thpcompact_anonymous_memory_percent: 80
 mmtests_thpcompact_filemap_memory_scale: 4
 
 mmtests_iterations: 5
 mmtests_monitor_interval: 1
-mmtests_requires_mkfs_device: False
+mmtests_requires_mkfs_device: false
 mmtests_device: "/dev/null"
 mmtests_ext4_sector_size: 4k
 mmtests_mkfs_type: "xfs"
 mmtests_mkfs_cmd: ""
 
 # Monitoring configuration
-mmtests_monitor_enable_ftrace: True
-mmtests_monitor_enable_proc_monitoring: True
-mmtests_monitor_enable_mpstat: True
+mmtests_monitor_enable_ftrace: true
+mmtests_monitor_enable_proc_monitoring: true
+mmtests_monitor_enable_mpstat: true
 
 # System configuration
-mmtests_pretest_compaction: False
-mmtests_pretest_dropvmcaches: False
+mmtests_pretest_compaction: false
+mmtests_pretest_dropvmcaches: false
 mmtests_pretest_thp_setting: "always"
-kdevops_workflow_enable_mmtests: False
+kdevops_workflow_enable_mmtests: false
diff --git a/playbooks/roles/mmtests/tasks/install-deps/debian/main.yml b/playbooks/roles/mmtests/tasks/install-deps/debian/main.yml
index b1d6b38..2377903 100644
--- a/playbooks/roles/mmtests/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/mmtests/tasks/install-deps/debian/main.yml
@@ -1,26 +1,26 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
   tags: deps
 
 - name: Install mmtests build dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - build-essential
       - git
@@ -33,12 +33,12 @@
       - libmath-gradient-perl
     state: present
     update_cache: true
-  tags: ['deps']
+  tags: ["deps"]
 
 - name: Install mmtests runtime dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - numactl
       - fio
@@ -51,16 +51,16 @@
       - psmisc
     state: present
     update_cache: true
-  tags: ['deps']
+  tags: ["deps"]
 
 - name: Install mmtests monitoring dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - trace-cmd
       - perf-tools-unstable
     state: present
     update_cache: true
-  tags: ['deps']
+  tags: ["deps"]
   ignore_errors: true
diff --git a/playbooks/roles/mmtests/tasks/install-deps/main.yml b/playbooks/roles/mmtests/tasks/install-deps/main.yml
index 3ecd698..e665ffa 100644
--- a/playbooks/roles/mmtests/tasks/install-deps/main.yml
+++ b/playbooks/roles/mmtests/tasks/install-deps/main.yml
@@ -1,16 +1,17 @@
 ---
-- include_role:
+- name: Include package management role
+  ansible.builtin.include_role:
     name: pkg
 
 # Distribution-specific setup for mmtests dependencies
 - name: Debian/Ubuntu distribution specific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
 
 - name: SUSE distribution specific setup
-  import_tasks: tasks/install-deps/suse/main.yml
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
 
 - name: RedHat distribution specific setup
-  import_tasks: tasks/install-deps/redhat/main.yml
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/mmtests/tasks/install-deps/redhat/main.yml b/playbooks/roles/mmtests/tasks/install-deps/redhat/main.yml
index ddf2be5..5e21003 100644
--- a/playbooks/roles/mmtests/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/mmtests/tasks/install-deps/redhat/main.yml
@@ -1,19 +1,19 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Install mmtests build dependencies (RedHat/CentOS)
-  become: yes
-  become_method: sudo
-  yum:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - gcc
       - git
@@ -25,12 +25,12 @@
       - libnuma-devel
       - perl-Math-Gradient
     state: present
-  tags: ['deps']
+  tags: ["deps"]
 
 - name: Install mmtests runtime dependencies (RedHat/CentOS)
-  become: yes
-  become_method: sudo
-  yum:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - numactl
       - fio
@@ -42,16 +42,16 @@
       - bc
       - psmisc
     state: present
-  tags: ['deps']
+  tags: ["deps"]
 
 - name: Install mmtests monitoring dependencies (RedHat/CentOS)
-  become: yes
-  become_method: sudo
-  yum:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
     name:
       - kernel-tools
       - trace-cmd
       - perf
     state: present
-  tags: ['deps']
+  tags: ["deps"]
   ignore_errors: true
diff --git a/playbooks/roles/mmtests/tasks/install-deps/suse/main.yml b/playbooks/roles/mmtests/tasks/install-deps/suse/main.yml
index 2f0b7a2..33ec7f3 100644
--- a/playbooks/roles/mmtests/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/mmtests/tasks/install-deps/suse/main.yml
@@ -1,19 +1,19 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Install mmtests build dependencies (SUSE)
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - gcc
       - git
@@ -24,12 +24,12 @@
       - R-base-devel
       - libnuma-devel
     state: present
-  tags: ['deps']
+  tags: ["deps"]
 
 - name: Install mmtests runtime dependencies (SUSE)
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - numactl
       - fio
@@ -42,16 +42,16 @@
       - psmisc
       - perl-Math-Gradient
     state: present
-  tags: ['deps']
+  tags: ["deps"]
 
 - name: Install mmtests monitoring dependencies (SUSE)
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name:
       - kernel-default-devel
       - trace-cmd
       - perf
     state: present
-  tags: ['deps']
+  tags: ["deps"]
   ignore_errors: true
diff --git a/playbooks/roles/mmtests/tasks/main.yaml b/playbooks/roles/mmtests/tasks/main.yaml
index 93bc4bd..4554855 100644
--- a/playbooks/roles/mmtests/tasks/main.yaml
+++ b/playbooks/roles/mmtests/tasks/main.yaml
@@ -1,50 +1,50 @@
 ---
 # Install distribution-specific dependencies
 - name: Install dependencies
-  include_tasks: install-deps/main.yml
-  tags: [ 'setup', 'deps' ]
+  ansible.builtin.include_tasks: install-deps/main.yml
+  tags: ["setup", "deps"]
 
-- include_role:
+- ansible.builtin.include_role:
     name: create_data_partition
-  tags: [ 'setup', 'data_partition' ]
+  tags: ["setup", "data_partition"]
 
-- include_role:
+- ansible.builtin.include_role:
     name: common
   when:
     - infer_uid_and_group|bool
 
 - name: Ensure data_dir has correct ownership
-  tags: [ 'setup' ]
-  become: yes
-  become_method: sudo
+  tags: ["setup"]
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ data_path }}"
     owner: "{{ data_user }}"
     group: "{{ data_group }}"
-    recurse: yes
+    recurse: true
     state: directory
 
 - name: Clone mmtests repository
-  tags: [ 'setup' ]
+  tags: ["setup"]
   ansible.builtin.git:
     repo: "{{ mmtests_git_url }}"
     dest: "{{ mmtests_data_dir }}"
     version: "{{ mmtests_git_version }}"
-    force: yes
+    force: true
 
 - name: Generate mmtests configuration
-  tags: [ 'setup' ]
-  become: yes
-  become_method: sudo
+  tags: ["setup"]
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.template:
     src: "{{ mmtests_test_type }}-config.j2"
     dest: "{{ mmtests_data_dir }}/configs/config-workload-{{ mmtests_test_type }}-kdevops"
     owner: root
     group: root
-    mode: '0644'
+    mode: "0644"
 
 - name: Fail if configured memory percentages overcommit available memory
-  fail:
+  ansible.builtin.fail:
     msg: >-
       Overcommit configuration: anonymous ({{ mmtests_anonymous_memory_percent }}%) +
       file-backed ({{ mmtests_file_memory_percent }}%) exceeds 100% of available memory.
@@ -52,37 +52,38 @@
   when: (mmtests_anonymous_memory_percent + mmtests_file_memory_percent) > 100
 
 - name: Run mmtests autogen in background
-  tags: [ 'setup' ]
+  tags: ["setup"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: ./bin/autogen-configs
   args:
     chdir: "{{ mmtests_data_dir }}"
 
 - name: Run mmtests autogen in background
-  tags: [ 'setup' ]
+  tags: ["setup"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: ./bin/autogen-configs
   args:
     chdir: "{{ mmtests_data_dir }}"
 
 - name: Get kernel version
-  tags: [ 'setup', 'run_tests' ]
+  tags: ["setup", "run_tests"]
   ansible.builtin.command: uname -r
+  changed_when: false
   register: kernel_version
 
 - name: Show kernel version
-  tags: [ 'setup', 'run_tests' ]
-  debug:
+  tags: ["setup", "run_tests"]
+  ansible.builtin.debug:
     msg: "Kernel version on {{ inventory_hostname }} : {{ kernel_version.stdout }}"
 
 - name: Build mmtests
-  tags: [ 'setup' ]
+  tags: ["setup"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.shell: >
-    yes yes | ./run-mmtests.sh -b
+    true true | ./run-mmtests.sh -b
     --config configs/config-workload-{{ mmtests_test_type }}-kdevops
     {{ inventory_hostname }}-{{ kernel_version.stdout }}
   args:
@@ -90,39 +91,39 @@
   register: mmtests_build_result
 
 - name: Fail if mmtests build failed
-  fail:
+  ansible.builtin.fail:
     msg: >
       mmtests build failed on {{ inventory_hostname }}.
       Exit code: {{ mmtests_build_result.rc }}
       Stdout: {{ mmtests_build_result.stdout }}
       Stderr: {{ mmtests_build_result.stderr }}
   when: mmtests_build_result.rc != 0
-  tags: [ 'setup' ]
+  tags: ["setup"]
 
 - name: Check if {{ mmtests_device }} is mounted
-  tags: [ 'run_tests' ]
-  become: yes
-  become_method: sudo
-  command: findmnt --noheadings --output TARGET --source {{ mmtests_device }}
+  tags: ["run_tests"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: findmnt --noheadings --output TARGET --source {{ mmtests_device }}
+  changed_when: false
   register: mountpoint_stat
   failed_when: false
-  changed_when: false
   when: mmtests_requires_mkfs_device | bool
 
 - name: Unmount {{ mmtests_device }} if mounted
-  tags: [ 'run_tests' ]
-  become: yes
-  become_method: sudo
-  command: umount {{ mmtests_device }}
+  tags: ["run_tests"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: umount {{ mmtests_device }}
   when:
     - mmtests_requires_mkfs_device | bool
     - mountpoint_stat.stdout != ""
 
 # XXX: add variability for the different options for the governor
 - name: Set CPU governor to performance
-  tags: [ 'run_tests' ]
-  become: yes
-  become_method: sudo
+  tags: ["run_tests"]
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.shell: |
     for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
       if [ -f "$cpu" ]; then
@@ -131,40 +132,40 @@
     done
 
 - name: Drop caches before test
-  tags: [ 'run_tests' ]
-  become: yes
-  become_method: sudo
+  tags: ["run_tests"]
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.shell: |
     sync
     echo 3 > /proc/sys/vm/drop_caches
   when: mmtests_pretest_dropvmcaches | bool
 
 - name: Configure THP
-  tags: [ 'run_tests' ]
-  become: yes
-  become_method: sudo
+  tags: ["run_tests"]
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.shell: |
     echo "{{ mmtests_pretest_thp_setting }}" > /sys/kernel/mm/transparent_hugepage/enabled
 
 - name: Manually trigger memory compaction before run
-  tags: [ 'run_tests' ]
-  become: yes
-  become_method: sudo
+  tags: ["run_tests"]
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.shell: |
     echo 1 > /proc/sys/vm/compact_memory
   when:
     - mmtests_pretest_compaction | bool
-  ignore_errors: true
+  failed_when: false # Memory compaction may not be supported on all systems
 
 - name: Show kernel version
-  tags: [ 'run_tests' ]
-  debug:
+  tags: ["run_tests"]
+  ansible.builtin.debug:
     msg: "Kernel version on {{ inventory_hostname }} : {{ kernel_version.stdout }}"
 
 - name: Run mmtests in background
-  tags: [ 'run_tests' ]
+  tags: ["run_tests"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: ./run-mmtests.sh --config configs/config-workload-{{ mmtests_test_type }}-kdevops {{ inventory_hostname }}-{{ kernel_version.stdout }}
   args:
     chdir: "{{ mmtests_data_dir }}"
@@ -173,85 +174,85 @@
   register: mmtests_job
 
 - name: Wait for mmtests to complete
-  tags: [ 'run_tests' ]
+  tags: ["run_tests"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.async_status:
     jid: "{{ mmtests_job.ansible_job_id }}"
   register: mmtests_status
   until: mmtests_status.finished
-  retries: 1440    # 12 hours
-  delay: 60        # check every 60 seconds
+  retries: 1440 # 12 hours
+  delay: 60 # check every 60 seconds
 
 - name: Create local results directory
   delegate_to: localhost
   ansible.builtin.file:
     path: "{{ topdir_path }}/workflows/mmtests/results/{{ inventory_hostname }}/"
     state: directory
-    mode: '0755'
+    mode: "0755"
   run_once: false
-  tags: ['results']
+  tags: ["results"]
 
 - name: Ensure old mmtests results archive is removed if it exists
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ mmtests_results_dir_basename }}/mmtests-results-{{ inventory_hostname }}.tar.gz"
     state: absent
-  tags: [ 'results' ]
+  tags: ["results"]
 
 - name: Archive mmtests results directory on remote host
-  become: yes
-  become_method: sudo
-  command: >
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: >
     tar czf {{ mmtests_results_dir_basename }}/mmtests-results-{{ inventory_hostname }}.tar.gz -C {{ mmtests_results_dir }} .
   args:
     creates: "{{ mmtests_results_dir_basename }}/mmtests-results-{{ inventory_hostname }}.tar.gz"
-  tags: [ 'results' ]
+  tags: ["results"]
 
 - name: Remove previously fetched mmtests results archive if it exists
-  become: no
+  become: false
   delegate_to: localhost
   ansible.builtin.file:
     path: "{{ item }}"
     state: absent
-  tags: [ 'results' ]
+  tags: ["results"]
   with_items:
     - "{{ topdir_path }}/workflows/mmtests/results/{{ inventory_hostname }}/mmtests-results-{{ inventory_hostname }}.tar.gz"
     - "{{ topdir_path }}/workflows/mmtests/results/{{ inventory_hostname }}/mmtests-results-{{ inventory_hostname }}"
 
 - name: Copy mmtests results
-  tags: [ 'results' ]
-  become: yes
-  become_method: sudo
+  tags: ["results"]
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.fetch:
     src: "{{ mmtests_results_dir_basename }}/mmtests-results-{{ inventory_hostname }}.tar.gz"
     dest: "{{ topdir_path }}/workflows/mmtests/results/{{ inventory_hostname }}/"
-    flat: yes
+    flat: true
 
 - name: Ensure local mmtests results extraction directory exists
-  become: no
+  become: false
   delegate_to: localhost
   ansible.builtin.file:
     path: "{{ topdir_path }}/workflows/mmtests/results/{{ inventory_hostname }}/mmtests-results-{{ inventory_hostname }}"
     state: directory
-    mode: '0755'
-    recurse: yes
-  tags: [ 'results' ]
+    mode: "0755"
+    recurse: true
+  tags: ["results"]
 
 - name: Extract mmtests results archive locally
-  become: no
+  become: false
   delegate_to: localhost
   ansible.builtin.unarchive:
     src: "{{ topdir_path }}/workflows/mmtests/results/{{ inventory_hostname }}/mmtests-results-{{ inventory_hostname }}.tar.gz"
     dest: "{{ topdir_path }}/workflows/mmtests/results/{{ inventory_hostname }}/mmtests-results-{{ inventory_hostname }}"
-    remote_src: no
-  tags: [ 'results' ]
+    remote_src: false
+  tags: ["results"]
 
 - name: Clean previous mmtests results on DUTs
-  tags: [ 'clean' ]
-  become: yes
-  become_method: sudo
+  tags: ["clean"]
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ item }}"
     state: absent
@@ -259,9 +260,9 @@
     - "{{ mmtests_results_dir }}"
 
 - name: Clean previous mmtests results on localhost
-  tags: [ 'clean' ]
-  become: yes
-  become_method: sudo
+  tags: ["clean"]
+  become: true
+  become_method: ansible.builtin.sudo
   delegate_to: localhost
   ansible.builtin.file:
     path: "{{ item }}"
diff --git a/playbooks/roles/nfsd/tasks/install-deps/debian/main.yml b/playbooks/roles/nfsd/tasks/install-deps/debian/main.yml
index 1949866..82fc6de 100644
--- a/playbooks/roles/nfsd/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/nfsd/tasks/install-deps/debian/main.yml
@@ -4,33 +4,33 @@
   vars:
     params:
       files:
-        - '{{ansible_distribution}}.yml'
-        - '{{ansible_os_family}}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Determine which fsprogs package is needed for "{{ nfsd_export_fstype }}"
-  set_fact:
+  ansible.builtin.set_fact:
     fsprogs: "{{ fstype_userspace_progs[nfsd_export_fstype] | default() }}"
 
 - name: Add {{ fsprogs }} to the nfsd packages list
-  set_fact:
+  ansible.builtin.set_fact:
     nfsd_packages: "{{ nfsd_packages + [fsprogs] }}"
   when:
     - fsprogs is defined
     - fsprogs | length > 0
 
 - name: Add gssproxy to the nfsd packages list
-  set_fact:
+  ansible.builtin.set_fact:
     nfsd_packages: "{{ nfsd_packages + ['gssproxy'] }}"
   when: kdevops_krb5_enable|bool
 
 - name: Install nfsd dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name: "{{ nfsd_packages }}"
     state: present
-    update_cache: yes
-  tags: [ 'pynfs', 'deps' ]
+    update_cache: true
+  tags: ["pynfs", "deps"]
diff --git a/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml b/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml
index 5093e3b..d5d0b3e 100644
--- a/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml
@@ -4,28 +4,28 @@
   vars:
     params:
       files:
-        - '{{ansible_distribution}}.yml'
-        - '{{ansible_os_family}}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Determine which fsprogs package is needed for "{{ nfsd_export_fstype }}"
-  set_fact:
+  ansible.builtin.set_fact:
     fsprogs: "{{ fstype_userspace_progs[nfsd_export_fstype] | default() }}"
 
 - name: Add {{ fsprogs }} to the nfsd packages list
-  set_fact:
+  ansible.builtin.set_fact:
     nfsd_packages: "{{ nfsd_packages + [fsprogs] }}"
   when:
     - fsprogs is defined
     - fsprogs
 
 - name: Install nfsd dependencies
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ nfsd_packages }}"
   retries: 3
   delay: 5
diff --git a/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml b/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml
index 5bda13c..19692d0 100644
--- a/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml
@@ -4,31 +4,31 @@
   vars:
     params:
       files:
-        - '{{ansible_distribution}}.yml'
-        - '{{ansible_os_family}}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Determine which fsprogs package is needed for "{{ nfsd_export_fstype }}"
-  set_fact:
+  ansible.builtin.set_fact:
     fsprogs: "{{ fstype_userspace_progs[nfsd_export_fstype] | default() }}"
 
 - name: Add {{ fsprogs }} to the nfsd packages list
-  set_fact:
+  ansible.builtin.set_fact:
     nfsd_packages: "{{ nfsd_packages + [fsprogs] }}"
   when:
     - fsprogs is defined
     - fsprogs
 
 - name: Add additional packages needed for krb5 to the nfsd packages list
-  set_fact:
+  ansible.builtin.set_fact:
     nfsd_packages: "{{ nfsd_packages + ['gssproxy', 'libverto-libev1'] }}"
   when: kdevops_krb5_enable|bool
 
 - name: Install nfsd dependencies
-  become: yes
-  become_method: sudo
-  zypper:
+  become: true
+  become_method: ansible.builtin.sudo
+  community.general.zypper:
     name: "{{ nfsd_packages }}"
     state: present
diff --git a/playbooks/roles/nfsd/tasks/main.yml b/playbooks/roles/nfsd/tasks/main.yml
index 123dbc2..8ecff20 100644
--- a/playbooks/roles/nfsd/tasks/main.yml
+++ b/playbooks/roles/nfsd/tasks/main.yml
@@ -12,15 +12,15 @@
   when: ansible_os_family == 'RedHat'
 
 - name: Generate /etc/nfs.conf
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  template:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: nfs.conf.j2
     dest: /etc/nfs.conf
     owner: root
     group: root
-    mode: 0644
+    mode: "0644"
 
 - name: Set up an iSCSI initiator
   ansible.builtin.include_role:
@@ -40,57 +40,57 @@
     - nfsd_export_fstype != "tmpfs"
 
 - name: Create {{ nfsd_export_path }}
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ nfsd_export_path }}"
     state: directory
-    mode: 0755
+    mode: "0755"
 
 - name: Test whether SELinux is enabled
-  command: /usr/sbin/selinuxenabled
+  ansible.builtin.command: /usr/sbin/selinuxenabled
   register: selinux_status
-  changed_when: False
-  failed_when: False
+  changed_when: false
+  failed_when: false
 
 - name: Copy SELinux type enforcement file to server
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  copy:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     src: "{{ playbook_dir }}/roles/nfsd/templates/nfsd_policy.te"
     dest: "/root/nfsd_policy.te"
     owner: root
     group: root
-    mode: 0644
+    mode: "0644"
   when: selinux_status.rc == 0
 
 - name: Convert SELinux type enforcement file to a policy module
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: /usr/bin/checkmodule -M -m -o /root/nfsd_policy.mod /root/nfsd_policy.te
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: /usr/bin/checkmodule -M -m -o /root/nfsd_policy.mod /root/nfsd_policy.te
   when: selinux_status.rc == 0
 
 - name: Compile SELinux policy module into policy package
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: /usr/bin/semodule_package -o /root/nfsd_policy.pp -m /root/nfsd_policy.mod
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: /usr/bin/semodule_package -o /root/nfsd_policy.pp -m /root/nfsd_policy.mod
   when: selinux_status.rc == 0
 
 - name: Install SELinux policy module
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: /usr/sbin/semodule -i /root/nfsd_policy.pp
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: /usr/sbin/semodule -i /root/nfsd_policy.pp
   when: selinux_status.rc == 0
 
 - name: Allow nfsd full access to {{ nfsd_export_path }}
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.general.sefcontext:
     target: "{{ nfsd_export_path }}(/.*)?"
     setype: public_content_rw_t
@@ -99,10 +99,10 @@
 
 # FIXME: open ports instead
 - name: Populate service facts
-  service_facts:
+  ansible.builtin.service_facts:
 
 - name: Turn off firewalld
-  become: yes
+  become: true
   ansible.builtin.systemd_service:
     name: firewalld.service
     enabled: false
@@ -110,9 +110,9 @@
   when: '"firewalld.service" in ansible_facts.services'
 
 - name: Start up nfsd
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd_service:
     name: nfs-server.service
     enabled: true
diff --git a/playbooks/roles/nfsd_add_export/tasks/main.yml b/playbooks/roles/nfsd_add_export/tasks/main.yml
index cf3fac3..ad81247 100644
--- a/playbooks/roles/nfsd_add_export/tasks/main.yml
+++ b/playbooks/roles/nfsd_add_export/tasks/main.yml
@@ -20,11 +20,11 @@
     - export_fstype == "tmpfs"
 
 - name: Ensure {{ export_volname }} has correct permissions
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  file:
+  ansible.builtin.file:
     state: directory
     path: "{{ nfsd_export_path }}/{{ export_volname }}"
     owner: "{{ export_user }}"
@@ -32,77 +32,78 @@
     mode: "{{ export_mode }}"
 
 - name: Test whether SELinux is enabled
-  command: /usr/sbin/selinuxenabled
+  ansible.builtin.command: /usr/sbin/selinuxenabled
   register: selinux_status
   delegate_to: "{{ server_host }}"
-  changed_when: False
-  failed_when: False
+  changed_when: false
+  failed_when: false
 
 - name: Fix SELinux file context under new mount
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  command: /usr/sbin/restorecon -R "{{ nfsd_export_path }}/{{ export_volname }}"
+  ansible.builtin.command: /usr/sbin/restorecon -R "{{ nfsd_export_path }}/{{ export_volname }}"
   when: selinux_status.rc == 0
 
 - name: Ensure /etc/exports.d exists
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  file:
+  ansible.builtin.file:
     state: directory
     path: "/etc/exports.d"
     owner: "root"
     group: "root"
-    mode: '644'
+    mode: "644"
 
 - name: Copy export options to a template variable
-  set_fact:
+  ansible.builtin.set_fact:
     template_export_options: "{{ export_options }}"
 
 - name: Check for an fsid= export option
-  set_fact:
+  ansible.builtin.set_fact:
     fsid_is_present: '{{ "fsid=" in export_options }}'
   when:
     - export_fstype == "tmpfs"
 
 - name: Generate a unique fsid
-  command: "uuidgen -r"
+  ansible.builtin.command: "uuidgen -r"
+  changed_when: false
   register: export_fsid
   when:
     - export_fstype == "tmpfs"
     - not fsid_is_present|bool
 
 - name: Add an fsid= export option
-  set_fact:
+  ansible.builtin.set_fact:
     template_export_options: "{{ export_options }},fsid={{ export_fsid.stdout }}"
   when:
     - export_fstype == "tmpfs"
     - not fsid_is_present|bool
 
 - name: Enable pNFS for the new export
-  set_fact:
+  ansible.builtin.set_fact:
     template_export_options: "{{ export_options }},pnfs"
   when:
     - export_pnfs|bool
 
 - name: Create an exports.d file for the new fs
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  template:
+  ansible.builtin.template:
     src: exports.j2
     dest: /etc/exports.d/{{ export_volname }}.exports
     owner: root
     group: root
-    mode: 0644
+    mode: "0644"
 
 - name: Reload the exports table
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  command: /usr/sbin/exportfs -ra
+  ansible.builtin.command: /usr/sbin/exportfs -ra
diff --git a/playbooks/roles/nfsd_add_export/tasks/storage/iscsi.yml b/playbooks/roles/nfsd_add_export/tasks/storage/iscsi.yml
index 098f6fa..b85574d 100644
--- a/playbooks/roles/nfsd_add_export/tasks/storage/iscsi.yml
+++ b/playbooks/roles/nfsd_add_export/tasks/storage/iscsi.yml
@@ -9,7 +9,7 @@
 
 - name: Rescan iSCSI LUNs on the NFS server
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
   community.general.open_iscsi:
@@ -17,14 +17,14 @@
 
 - name: Rescan iSCSI LUNs on the target node
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   community.general.open_iscsi:
     rescan: true
 
 - name: Enumerate available SCSI devices on the NFS server
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
   ansible.builtin.command:
@@ -40,7 +40,7 @@
 
 - name: Format new iSCSI LUN for {{ export_fstype }}
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
   community.general.filesystem:
@@ -49,10 +49,10 @@
 
 - name: Mount iSCSI LUN under {{ nfsd_export_path }}
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  throttle: 1  # running this in parallel can clobber fstab changes
+  throttle: 1 # running this in parallel can clobber fstab changes
   ansible.posix.mount:
     path: "{{ nfsd_export_path }}/{{ export_volname }}"
     src: "{{ iscsi_device }}"
diff --git a/playbooks/roles/nfsd_add_export/tasks/storage/local.yml b/playbooks/roles/nfsd_add_export/tasks/storage/local.yml
index 2fdfc8d..c366a13 100644
--- a/playbooks/roles/nfsd_add_export/tasks/storage/local.yml
+++ b/playbooks/roles/nfsd_add_export/tasks/storage/local.yml
@@ -1,7 +1,7 @@
 ---
 - name: Create a new LVM partition
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
   community.general.lvol:
@@ -11,7 +11,7 @@
 
 - name: Format new volume for {{ export_fstype }}
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
   community.general.filesystem:
@@ -20,10 +20,10 @@
 
 - name: Mount volume under {{ nfsd_export_path }}
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  throttle: 1  # running this in parallel can clobber fstab changes
+  throttle: 1 # running this in parallel can clobber fstab changes
   ansible.posix.mount:
     path: "{{ nfsd_export_path }}/{{ export_volname }}"
     src: "/dev/exports/{{ export_volname }}"
diff --git a/playbooks/roles/nfsd_add_export/tasks/storage/tmpfs.yml b/playbooks/roles/nfsd_add_export/tasks/storage/tmpfs.yml
index fbc313b..3a13376 100644
--- a/playbooks/roles/nfsd_add_export/tasks/storage/tmpfs.yml
+++ b/playbooks/roles/nfsd_add_export/tasks/storage/tmpfs.yml
@@ -1,10 +1,10 @@
 ---
 - name: Mount a tmpfs under {{ nfsd_export_path }}
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  throttle: 1  # running this in parallel can clobber fstab changes
+  throttle: 1 # running this in parallel can clobber fstab changes
   ansible.posix.mount:
     path: "{{ nfsd_export_path }}/{{ export_volname }}"
     src: "tmpfs"
diff --git a/playbooks/roles/nfstest/defaults/main.yml b/playbooks/roles/nfstest/defaults/main.yml
index 0d4060b..e04e367 100644
--- a/playbooks/roles/nfstest/defaults/main.yml
+++ b/playbooks/roles/nfstest/defaults/main.yml
@@ -1,5 +1,5 @@
 ---
 # Our sensible defaults for the nfstest role.
 #
-kdevops_run_nfstest: False
+kdevops_run_nfstest: false
 kdevops_workflows_dedicated_workflow: false
diff --git a/playbooks/roles/nfstest/tasks/main.yml b/playbooks/roles/nfstest/tasks/main.yml
index bf5cd9f..de6b073 100644
--- a/playbooks/roles/nfstest/tasks/main.yml
+++ b/playbooks/roles/nfstest/tasks/main.yml
@@ -16,16 +16,16 @@
   vars:
     params:
       files:
-        - '{{ ansible_distribution }}.yml'
-        - '{{ ansible_os_family }}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
   tags: vars
 
 - name: Install dependencies for nfstest
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name: "{{ nfstest_packages }}"
@@ -46,7 +46,7 @@
 
 - name: Remove existing nfstest install directory
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ nfstest_install_dir }}"
@@ -80,7 +80,7 @@
 
 - name: Create the test mount point on the target node
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.file:
     state: directory
@@ -140,14 +140,20 @@
   tags: copy_results
 
 - name: Clean up our localhost results/last-run directory
-  local_action: file path="{{ nfstest_results_target }}/" state=absent
+  ansible.builtin.file:
+    path: "{{ nfstest_results_target }}/"
+    state: absent
+  delegate_to: localhost
   run_once: true
-  tags: [ 'run_tests', 'copy_results', 'clean_local_results' ]
+  tags: ["run_tests", "copy_results", "clean_local_results"]
 
 - name: Create empty last-run directory
-  local_action: file path="{{ nfstest_results_target }}/" state=directory
+  ansible.builtin.file:
+    path: "{{ nfstest_results_target }}/"
+    state: directory
+  delegate_to: localhost
   run_once: true
-  tags: [ 'run_tests', 'copy_results', 'clean_local_results' ]
+  tags: ["run_tests", "copy_results", "clean_local_results"]
 
 - name: Run the test group script on the target node
   ansible.builtin.command:
@@ -157,19 +163,22 @@
   tags: run_tests
 
 - name: Get used target kernel version
-  tags: [ 'copy_results' ]
-  command: "uname -r"
+  tags: ["copy_results"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Store last kernel variable
-  tags: [ 'copy_results' ]
-  set_fact:
-    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\",'') }}"
+  tags: ["copy_results"]
+  ansible.builtin.set_fact:
+    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\", '') }}"
   run_once: true
 
 - name: Document used target kernel version
-  local_action: "shell echo {{ last_kernel }} > {{ nfstest_results_target }}/../last-kernel.txt"
-  tags: [ 'run_tests', 'copy_results', 'print_results' ]
+  ansible.builtin.shell: echo {{ last_kernel }} > {{ nfstest_results_target }}/../last-kernel.txt
+  changed_when: false
+  delegate_to: localhost
+  tags: ["run_tests", "copy_results", "print_results"]
   run_once: true
 
 - name: Create the results directory on the control node
@@ -207,18 +216,18 @@
   tags: copy_results
 
 - name: Verify last-run kernel directory exists
-  tags: [ 'copy_results' ]
+  tags: ["copy_results"]
   delegate_to: localhost
-  stat:
+  ansible.builtin.stat:
     path: "{{ nfstest_results_full_path }}/last-run/{{ last_kernel }}"
   register: last_run_kernel_dir
 
 - name: Copy over the last-run into the results directory for archiving into kdevops
-  copy:
+  ansible.builtin.copy:
     src: "{{ nfstest_results_full_path }}/last-run/{{ last_kernel }}"
     dest: "{{ nfstest_results_full_path }}/"
   run_once: true
-  tags: [ 'copy_results' ]
+  tags: ["copy_results"]
   delegate_to: localhost
   when:
     - last_run_kernel_dir.stat.exists
diff --git a/playbooks/roles/pkg/tasks/debian.yml b/playbooks/roles/pkg/tasks/debian.yml
index fa984b0..362df3b 100644
--- a/playbooks/roles/pkg/tasks/debian.yml
+++ b/playbooks/roles/pkg/tasks/debian.yml
@@ -1,11 +1,12 @@
-- name: debian_libaio rename for buster
-  set_fact:
+---
+- name: Debian_libaio rename for buster
+  ansible.builtin.set_fact:
     is_bookworm: '{{ ansible_distribution_release == "bookworm" }}'
     is_buster: '{{ ansible_distribution_release == "buster" }}'
     is_trixie: '{{ ansible_distribution_release == "trixie" }}'
 
-- name: debian_libaio rename for debian releases older than trixie
-  set_fact:
+- name: Debian_libaio rename for debian releases older than trixie
+  ansible.builtin.set_fact:
     pkg_libaio: "libaio1"
   when: >
     is_buster|bool or
diff --git a/playbooks/roles/pkg/tasks/main.yml b/playbooks/roles/pkg/tasks/main.yml
index 02574ea..d7e3448 100644
--- a/playbooks/roles/pkg/tasks/main.yml
+++ b/playbooks/roles/pkg/tasks/main.yml
@@ -1,5 +1,4 @@
 ---
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/debian.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/debian.yml
   when: ansible_facts['os_family']|lower == 'debian'
-
diff --git a/playbooks/roles/postfix_relay_host/defaults/main.yml b/playbooks/roles/postfix_relay_host/defaults/main.yml
index 7f5b69b..cf54045 100644
--- a/playbooks/roles/postfix_relay_host/defaults/main.yml
+++ b/playbooks/roles/postfix_relay_host/defaults/main.yml
@@ -1,4 +1,4 @@
 # SPDX-License-Identifier copyleft-next-0.3.1                                   
----                                                                             
-postfix_relay_host_setup: False
+---
+postfix_relay_host_setup: false
 postfix_relay_host: "some.example.com"
diff --git a/playbooks/roles/postfix_relay_host/tasks/main.yml b/playbooks/roles/postfix_relay_host/tasks/main.yml
index b1b9be7..cf7d432 100644
--- a/playbooks/roles/postfix_relay_host/tasks/main.yml
+++ b/playbooks/roles/postfix_relay_host/tasks/main.yml
@@ -1,49 +1,49 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
   when:
     - postfix_relay_host_setup|bool
 
 - name: Check to see if /etc/postfix/main.cf exists
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  stat:
-    path=/etc/postfix/main.cf
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.stat:
+    path: /etc/postfix/main.cf
   register: postfix_config_main_file
   when:
     - postfix_relay_host_setup|bool
-  tags: [ 'postfix' ]
+  tags: ["postfix"]
 
 - name: Set relayhost on /etc/postfix/main.cf
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/postfix/main.cf
-    regexp: '^(relayhost)(.*)'
-    line: 'relayhost = {{ postfix_relay_host }}'
+    regexp: "^(relayhost)(.*)"
+    line: "relayhost = {{ postfix_relay_host }}"
   when:
     - postfix_relay_host_setup|bool
     - postfix_config_main_file.stat.exists
-  tags: [ 'postfix' ]
+  tags: ["postfix"]
 
 - name: Enable and restart postfix service
-  become: yes
-  become_method: sudo
-  systemd:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.systemd:
     name: postfix
-    enabled: yes
+    enabled: true
     state: restarted
-    masked: no
+    masked: false
   when:
     - postfix_relay_host_setup|bool
     - postfix_config_main_file.stat.exists
diff --git a/playbooks/roles/pynfs/defaults/main.yml b/playbooks/roles/pynfs/defaults/main.yml
index de09583..7515ef2 100644
--- a/playbooks/roles/pynfs/defaults/main.yml
+++ b/playbooks/roles/pynfs/defaults/main.yml
@@ -3,7 +3,7 @@
 # Our sensible defaults for the pynfs role.
 #
 # We default to not run tests.
-kdevops_run_pynfs: False
-pynfs_pnfs_block: False
+kdevops_run_pynfs: false
+pynfs_pnfs_block: false
 
 pynfs_data: "{{ data_path }}/pynfs"
diff --git a/playbooks/roles/pynfs/tasks/install-deps/debian/main.yml b/playbooks/roles/pynfs/tasks/install-deps/debian/main.yml
index e0598ed..12a3390 100644
--- a/playbooks/roles/pynfs/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/pynfs/tasks/install-deps/debian/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Install pynfs build dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - gcc
       - git-core
@@ -15,5 +15,5 @@
       - python3-ply
       - python3-standard-xdrlib
     state: present
-    update_cache: yes
-  tags: [ 'pynfs', 'deps' ]
+    update_cache: true
+  tags: ["pynfs", "deps"]
diff --git a/playbooks/roles/pynfs/tasks/install-deps/main.yml b/playbooks/roles/pynfs/tasks/install-deps/main.yml
index ab343e8..222202f 100644
--- a/playbooks/roles/pynfs/tasks/install-deps/main.yml
+++ b/playbooks/roles/pynfs/tasks/install-deps/main.yml
@@ -1,9 +1,13 @@
 ---
 # tasks to install dependencies for pynfs
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: tasks/install-deps/suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: tasks/install-deps/redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml b/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml
index 8aa2ba1..c2f3f60 100644
--- a/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml
@@ -4,10 +4,10 @@
     name: codereadyrepo
 
 - name: Install build dependencies for pynfs
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
diff --git a/playbooks/roles/pynfs/tasks/install-deps/suse/main.yml b/playbooks/roles/pynfs/tasks/install-deps/suse/main.yml
index 8321c06..508297f 100644
--- a/playbooks/roles/pynfs/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/pynfs/tasks/install-deps/suse/main.yml
@@ -1,7 +1,7 @@
 ---
 - name: Install build dependencies for pynfs
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - gcc
diff --git a/playbooks/roles/pynfs/tasks/main.yml b/playbooks/roles/pynfs/tasks/main.yml
index 882dd1c..723f53f 100644
--- a/playbooks/roles/pynfs/tasks/main.yml
+++ b/playbooks/roles/pynfs/tasks/main.yml
@@ -1,54 +1,61 @@
+---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Set the path where we collect our local pynfs results
-  set_fact:
+  ansible.builtin.set_fact:
     pynfs_workflow_dir: "../workflows/pynfs"
     pynfs_results_full_path: "{{ topdir_path }}/workflows/pynfs/results"
     pynfs_results_target: "../workflows/pynfs/results/last-run/"
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Clean up our localhost results directory and files
-  local_action: file path="{{ pynfs_workflow_dir }}/results/" state=absent
+  ansible.builtin.file:
+    path: "{{ pynfs_workflow_dir }}/results/"
+    state: absent
+  delegate_to: localhost
   run_once: true
-  tags: [ 'clean_local_results' ]
+  tags: ["clean_local_results"]
 
 - name: Create the local results directory
-  local_action: file path="{{ pynfs_workflow_dir }}/results/" state=directory
+  ansible.builtin.file:
+    path: "{{ pynfs_workflow_dir }}/results/"
+    state: directory
+  delegate_to: localhost
   run_once: true
-  tags: [ 'first_run' ]
+  tags: ["first_run"]
 
-- include_role:
+- name: Include role
+  ansible.builtin.include_role:
     name: create_data_partition
-  tags: [ 'data_partition' ]
+  tags: ["data_partition"]
 
 # Distro specific
 - name: Install dependencies
-  include_tasks: install-deps/main.yml
-
+  ansible.builtin.include_tasks: install-deps/main.yml
 - name: Remove old pynfs dir as we always clone a fresh tree
-  tags: [ 'git', 'pynfs' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  tags: ["git", "pynfs"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ pynfs_data }}"
     state: absent
 
 - name: Shallow-clone the pynfs source code from {{ pynfs_git }}
-  tags: [ 'git', 'pynfs' ]
-  git:
+  tags: ["git", "pynfs"]
+  ansible.builtin.git:
     repo: "{{ pynfs_git }}"
     dest: "{{ pynfs_data }}"
-    update: yes
+    update: true
     version: "{{ pynfs_git_tag }}"
     depth: 1
   retries: 3
@@ -59,11 +66,11 @@
     - kdevops_workflows_dedicated_workflow|bool
 
 - name: Clone the full pynfs source code tree from {{ pynfs_git }}
-  tags: [ 'git', 'pynfs' ]
-  git:
+  tags: ["git", "pynfs"]
+  ansible.builtin.git:
     repo: "{{ pynfs_git }}"
     dest: "{{ pynfs_data }}"
-    update: yes
+    update: true
     version: "{{ pynfs_git_tag }}"
   retries: 3
   delay: 5
@@ -73,20 +80,20 @@
     - not kdevops_workflows_dedicated_workflow|bool
 
 - name: Build pynfs
-  tags: [ 'pynfs' ]
-  command: ./setup.py build
+  tags: ["pynfs"]
+  ansible.builtin.command: ./setup.py build
   args:
     chdir: "{{ pynfs_data }}"
 
 - name: Get the hostname of the NFS server and base volname
-  tags: [ 'vars' ]
-  set_fact:
+  tags: ["vars"]
+  ansible.builtin.set_fact:
     nfsd_hostname: "{{ kdevops_host_prefix }}-nfsd"
     volname_base: "pynfs"
 
 - name: Create an export for NFSv4.0 testing
-  tags: [ 'pynfs' ]
-  include_role:
+  tags: ["pynfs"]
+  ansible.builtin.include_role:
     name: nfsd_add_export
   vars:
     server_host: "{{ nfsd_hostname }}"
@@ -96,8 +103,8 @@
     export_size: 10g
 
 - name: Create an export for NFSv4.1 testing
-  tags: [ 'pynfs' ]
-  include_role:
+  tags: ["pynfs"]
+  ansible.builtin.include_role:
     name: nfsd_add_export
   vars:
     server_host: "{{ nfsd_hostname }}"
@@ -107,8 +114,8 @@
     export_size: 10g
 
 - name: Create an export for pNFS testing
-  tags: [ 'pynfs' ]
-  include_role:
+  tags: ["pynfs"]
+  ansible.builtin.include_role:
     name: nfsd_add_export
   vars:
     server_host: "{{ nfsd_hostname }}"
@@ -121,35 +128,42 @@
     - pynfs_pnfs_block|bool
 
 - name: Wait until nfsd grace period ends
-  tags: [ 'run_tests' ]
+  tags: ["run_tests"]
   delegate_to: "{{ nfsd_hostname }}"
-  command: /usr/bin/grep -q Y /proc/fs/nfsd/v4_end_grace
+  ansible.builtin.command: /usr/bin/grep -q Y /proc/fs/nfsd/v4_end_grace
+  changed_when: false
   register: result
   retries: 90
   delay: 1
   until: result.rc == 0
 
 - name: Clean up our localhost results/last-run directory
-  local_action: file path="{{ pynfs_results_target }}/" state=absent
+  ansible.builtin.file:
+    path: "{{ pynfs_results_target }}/"
+    state: absent
+  delegate_to: localhost
   run_once: true
-  tags: [ 'run_tests', 'copy_results', 'clean_local_results' ]
+  tags: ["run_tests", "copy_results", "clean_local_results"]
 
 - name: Create empty last-run directory
-  local_action: file path="{{ pynfs_results_target }}/" state=directory
+  ansible.builtin.file:
+    path: "{{ pynfs_results_target }}/"
+    state: directory
+  delegate_to: localhost
   run_once: true
-  tags: [ 'run_tests', 'copy_results', 'clean_local_results' ]
+  tags: ["run_tests", "copy_results", "clean_local_results"]
 
 - name: Run pynfs
-  tags: [ 'run_tests' ]
-  script: "{{ pynfs_workflow_dir }}/scripts/run_pynfs.sh"
+  tags: ["run_tests"]
+  ansible.builtin.script: "{{ pynfs_workflow_dir }}/scripts/run_pynfs.sh"
   environment:
     PYNFS_DATA: "{{ pynfs_data }}"
     EXPORT_BASE: "{{ nfsd_hostname }}:{{ nfsd_export_path }}/{{ volname_base }}"
     ANSIBLE_HOST: "{{ ansible_host }}"
 
 - name: Run pynfs pNFS block tests
-  tags: [ 'run_tests' ]
-  script: "{{ pynfs_workflow_dir }}/scripts/run_pynfs_block.sh"
+  tags: ["run_tests"]
+  ansible.builtin.script: "{{ pynfs_workflow_dir }}/scripts/run_pynfs_block.sh"
   environment:
     PYNFS_DATA: "{{ pynfs_data }}"
     EXPORT_BASE: "{{ nfsd_hostname }}:{{ nfsd_export_path }}/{{ volname_base }}"
@@ -158,42 +172,45 @@
     - pynfs_pnfs_block|bool
 
 - name: Get used target kernel version
-  tags: [ 'copy_results' ]
-  command: "uname -r"
+  tags: ["copy_results"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Store kernel_rev variable
-  tags: [ 'copy_results' ]
-  set_fact:
-    kernel_rev: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\",'') }}"
+  tags: ["copy_results"]
+  ansible.builtin.set_fact:
+    kernel_rev: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\", '') }}"
   run_once: true
 
 - name: Document used target kernel version
-  local_action: "shell echo {{ kernel_rev }} > {{ pynfs_results_target }}/../last-kernel.txt"
-  tags: [ 'run_tests', 'copy_results', 'print_results' ]
+  ansible.builtin.shell: echo {{ kernel_rev }} > {{ pynfs_results_target }}/../last-kernel.txt
+  changed_when: false
+  delegate_to: localhost
+  tags: ["run_tests", "copy_results", "print_results"]
   run_once: true
 
 - name: Copy the version-specific results to the control node
-  tags: [ 'copy_results' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  fetch:
+  tags: ["copy_results"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.fetch:
     src: "{{ pynfs_data }}/pynfs-{{ item }}-results.json"
-    dest: "{{ pynfs_results_full_path }}/last-run/{{ kernel_rev}}/{{ kernel_rev }}-v{{ item }}.json"
-    flat: yes
+    dest: "{{ pynfs_results_full_path }}/last-run/{{ kernel_rev }}/{{ kernel_rev }}-v{{ item }}.json"
+    flat: true
   with_items:
     - 4.0
     - 4.1
 
 - name: Copy the pNFS results to the control node
-  tags: [ 'copy_results' ]
+  tags: ["copy_results"]
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
-  fetch:
+  ansible.builtin.fetch:
     src: "{{ pynfs_data }}/pynfs-{{ item }}-results.json"
-    dest: "{{ pynfs_results_full_path }}/last-run/{{ kernel_rev}}/{{ kernel_rev }}-v{{ item }}.json"
+    dest: "{{ pynfs_results_full_path }}/last-run/{{ kernel_rev }}/{{ kernel_rev }}-v{{ item }}.json"
     flat: true
   with_items:
     - block
@@ -201,18 +218,18 @@
     - pynfs_pnfs_block|bool
 
 - name: Verify last-run kernel directory exists
-  tags: [ 'copy_results' ]
+  tags: ["copy_results"]
   delegate_to: localhost
-  stat:
+  ansible.builtin.stat:
     path: "{{ pynfs_results_full_path }}/last-run/{{ kernel_rev }}"
   register: last_run_kernel_dir
 
 - name: Copy over the last-run into the results directory for archiving into kdevops
-  copy:
+  ansible.builtin.copy:
     src: "{{ pynfs_results_full_path }}/last-run/{{ kernel_rev }}"
     dest: "{{ pynfs_results_full_path }}/"
   run_once: true
-  tags: [ 'copy_results' ]
+  tags: ["copy_results"]
   delegate_to: localhost
   when:
     - last_run_kernel_dir.stat.exists
diff --git a/playbooks/roles/reboot-limit/defaults/main.yml b/playbooks/roles/reboot-limit/defaults/main.yml
index ab6d051..40cc37f 100644
--- a/playbooks/roles/reboot-limit/defaults/main.yml
+++ b/playbooks/roles/reboot-limit/defaults/main.yml
@@ -6,6 +6,6 @@ reboot_limit_test_type: "ansible"
 reboot_limits_data: "{{ data_path }}/reboot-limit"
 reboot_limits_systemctl_analyze_log: "systemctl-analyze.txt"
 reboot_limits_count_log: "reboot-count.txt"
-reboot_limit_enable_systemd_analyze: False
-reboot_limit_boot_count_crash_enable: False
+reboot_limit_enable_systemd_analyze: false
+reboot_limit_boot_count_crash_enable: false
 reboot_limit_boot_crash_count: 0
diff --git a/playbooks/roles/reboot-limit/tasks/do-reboot.yml b/playbooks/roles/reboot-limit/tasks/do-reboot.yml
index ec5c9fc..4d4fd69 100644
--- a/playbooks/roles/reboot-limit/tasks/do-reboot.yml
+++ b/playbooks/roles/reboot-limit/tasks/do-reboot.yml
@@ -1,140 +1,145 @@
 ---
 - name: Print uname for each host
-  tags: [ 'run_tests' ]
-  debug: var=ansible_kernel
-
+  tags: ["run_tests"]
+  ansible.builtin.debug:
+    var: ansible_kernel
 - name: Hint to our watchdog our reboot-limit tests are about to kick off
-  local_action: file path="{{ reboot_limit_local_results_dir }}/.begin" state=touch
-  tags: [ 'run_tests' ]
+  ansible.builtin.file:
+    path: "{{ reboot_limit_local_results_dir }}/.begin"
+    state: touch
+  delegate_to: localhost
+  tags: ["run_tests"]
   run_once: true
 
 - name: Run the reboot test using the ansible reboot module
-  become: yes
-  become_method: sudo
-  reboot:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
     post_reboot_delay: 10
   when:
     - reboot_limit_test_type == "ansible"
-  tags: [ 'run_tests' ]
+  tags: ["run_tests"]
 
 - name: Run the reboot test using systemctl reboot
-  become: yes
-  become_method: sudo
-  command: "systemctl reboot"
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "systemctl reboot"
   when:
     - reboot_limit_test_type == "systemctl_reboot"
-  tags: [ 'run_tests' ]
+  tags: ["run_tests"]
 
 - name: Run the reboot test using systemctl kexec
-  become: yes
-  become_method: sudo
-  command: "systemctl kexec"
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "systemctl kexec"
   when:
     - reboot_limit_test_type == "systemctl_kexec"
-  tags: [ 'run_tests' ]
+  tags: ["run_tests"]
 
 - name: Check if the reboot limit count variable file exists
-  become: yes
-  become_method: sudo
-  stat:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.stat:
     path: "{{ reboot_limit_count_file }}"
   register: reboot_limit_reg_count_file
-  tags: [ 'run_tests', 'read_count', 'vars' ]
+  tags: ["run_tests", "read_count", "vars"]
 
 - name: Read last boot count variable file
-  become: yes
-  become_method: sudo
-  slurp:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.slurp:
     src: "{{ reboot_limit_count_file }}"
   register: reboot_limit_last_count
   when:
     - reboot_limit_reg_count_file.stat.exists
-  tags: [ 'run_tests' , 'read_count', 'vars' ]
+  tags: ["run_tests", "read_count", "vars"]
 
 - name: Set the current boot count into a variable
-  set_fact:
+  ansible.builtin.set_fact:
     reboot_limit_count: "{{ reboot_limit_last_count['content'] | b64decode | int }}"
-  tags: [ 'run_tests' , 'read_count', 'vars' ]
+  tags: ["run_tests", "read_count", "vars"]
   when:
     - reboot_limit_reg_count_file.stat.exists
 
 - name: Adjust the local boot count variable if we rebooted OK
-  set_fact:
+  ansible.builtin.set_fact:
     reboot_limit_count: "{{ reboot_limit_count | int + 1 }}"
-  tags: [ 'run_tests' , 'read_count' ]
+  tags: ["run_tests", "read_count"]
   when:
     - reboot_limit_reg_count_file.stat.exists
 
 - name: Set the current boot count into a variable when no prior boot test exists
-  set_fact:
+  ansible.builtin.set_fact:
     reboot_limit_count: 1
-  tags: [ 'run_tests' , 'read_count', 'vars' ]
+  tags: ["run_tests", "read_count", "vars"]
   when:
     - not reboot_limit_reg_count_file.stat.exists
 
 - name: Enable sysrq key if we're about to force a crash
-  become: yes
-  become_method: sudo
-  shell: echo 1 > /proc/sys/kernel/sysrq
-  tags: [ 'run_tests' , 'read_count', 'vars', 'crash-check' ]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: echo 1 > /proc/sys/kernel/sysrq
+  changed_when: false
+  tags: ["run_tests", "read_count", "vars", "crash-check"]
   when:
     - reboot_limit_boot_count_crash_enable
     - ((reboot_limit_count | int % reboot_limit_boot_crash_count | int) == 0)
 
 - name: Force a crash if we were asked to
-  become: yes
-  become_method: sudo
-  shell: echo c > /proc/sysrq-trigger
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.shell: echo c > /proc/sysrq-trigger
+  changed_when: false
   ignore_errors: true
-  tags: [ 'run_tests' , 'read_count', 'vars', 'crash-check' ]
+  tags: ["run_tests", "read_count", "vars", "crash-check"]
   when:
     - reboot_limit_boot_count_crash_enable
     - ((reboot_limit_count | int % reboot_limit_boot_crash_count | int) == 0)
 
 - name: Write current updated boot count variable file to be {{ reboot_limit_count }}
-  become: yes
-  become_method: sudo
-  copy:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ reboot_limit_count }}"
     dest: "{{ reboot_limit_count_file }}"
   when:
     - reboot_limit_reg_count_file.stat.exists
-  tags: [ 'run_tests' , 'read_count' ]
+  tags: ["run_tests", "read_count"]
 
 - name: Create last boot count variable file if it does not exist
-  become: yes
-  become_method: sudo
-  copy:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "1"
     dest: "{{ reboot_limit_count_file }}"
   when:
     - not reboot_limit_reg_count_file.stat.exists
-  tags: [ 'run_tests' , 'read_count' ]
+  tags: ["run_tests", "read_count"]
 
 - name: Wait for boot up to complete before running systemd-analyze
-  become: yes
-  become_method: sudo
-  command: "systemctl is-system-running --wait"
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "systemctl is-system-running --wait"
   when:
     - reboot_limit_enable_systemd_analyze|bool
-  tags: [ 'run_tests' ]
+  tags: ["run_tests"]
 
 - name: Collect systemctl-analyze results
-  become: yes
-  become_method: sudo
-  command: "systemd-analyze"
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "systemd-analyze"
   register: systemd_analyze_cmd
   when:
     - reboot_limit_enable_systemd_analyze|bool
-  tags: [ 'run_tests' ]
+  tags: ["run_tests"]
 
 - name: Append systemctl-analyze output
-  become: yes
-  become_method: sudo
-  tags: [ 'run_tests' ]
-  lineinfile:
+  become: true
+  become_method: ansible.builtin.sudo
+  tags: ["run_tests"]
+  ansible.builtin.lineinfile:
     path: "{{ reboot_limit_analyze_file }}"
     line: "{{ systemd_analyze_cmd.stdout }}"
-    create: yes
+    create: true
   when:
     - reboot_limit_enable_systemd_analyze|bool
diff --git a/playbooks/roles/reboot-limit/tasks/main.yml b/playbooks/roles/reboot-limit/tasks/main.yml
index 0a85b30..1081f90 100644
--- a/playbooks/roles/reboot-limit/tasks/main.yml
+++ b/playbooks/roles/reboot-limit/tasks/main.yml
@@ -1,45 +1,46 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
-- include_role:
+- name: Include role
+  ansible.builtin.include_role:
     name: create_data_partition
-  tags: [ 'data_partition' ]
+  tags: ["data_partition"]
 
 - name: Create the reboot-limit data collection directory for each host
-  become: yes
-  become_method: sudo
-  file:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ reboot_limit_data }}/{{ ansible_ssh_host }}"
     state: directory
-  tags: [ 'install', 'first_run' ]
+  tags: ["install", "first_run"]
 
 - name: Set the file to collect systemctl-analyze results
-  become: yes
-  become_method: sudo
-  set_fact:
-    reboot_limit_analyze_file: "{{ reboot_limit_data}}/{{ ansible_ssh_host }}/{{ reboot_limits_systemctl_analyze_log }}"
-  tags: [ 'vars' ]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.set_fact:
+    reboot_limit_analyze_file: "{{ reboot_limit_data }}/{{ ansible_ssh_host }}/{{ reboot_limits_systemctl_analyze_log }}"
+  tags: ["vars"]
 
 - name: Set the file to collect the reboot count
-  become: yes
-  become_method: sudo
-  set_fact:
-    reboot_limit_count_file: "{{ reboot_limit_data}}/{{ ansible_ssh_host }}/{{ reboot_limits_count_log }}"
-  tags: [ 'read_count', 'vars' ]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.set_fact:
+    reboot_limit_count_file: "{{ reboot_limit_data }}/{{ ansible_ssh_host }}/{{ reboot_limits_count_log }}"
+  tags: ["read_count", "vars"]
 
 - name: Delete old results directory files if a reset was called
-  become: yes
-  become_method: sudo
-  file:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ item }}"
     state: absent
   with_items:
@@ -47,37 +48,43 @@
     - "{{ reboot_limit_count_file }}"
   loop_control:
     label: "{{ item | regex_replace(reboot_limit_data | regex_escape()) | regex_replace('^/', '') }}"
-  tags: [ 'reset' ]
+  tags: ["reset"]
 
 - name: Set the path where we collect our local reboot-limit results
-  set_fact:
+  ansible.builtin.set_fact:
     reboot_limit_local_results_dir: "../workflows/demos/reboot-limit/results"
-  tags: [ 'vars' ]
+  tags: ["vars"]
 
 - name: Clean up our localhost results directory and files as we are on boot number {{ reboot_limit_count }}
-  local_action: file path="{{ reboot_limit_local_results_dir }}/" state=absent
+  ansible.builtin.file:
+    path: "{{ reboot_limit_local_results_dir }}/"
+    state: absent
+  delegate_to: localhost
   run_once: true
-  tags: [ 'clean_local_results', 'first_run' ]
+  tags: ["clean_local_results", "first_run"]
 
 - name: Create the local results directory
-  local_action: file path="{{ reboot_limit_local_results_dir }}/" state=directory
+  ansible.builtin.file:
+    path: "{{ reboot_limit_local_results_dir }}/"
+    state: directory
+  delegate_to: localhost
   run_once: true
-  tags: [ 'first_run' ]
+  tags: ["first_run"]
 
 - name: Run the reboot loop
-  include_tasks: do-reboot.yml
+  ansible.builtin.include_tasks: do-reboot.yml
   with_sequence: count={{ reboot_limit_max }}
-  tags: [ 'run_tests' ]
+  tags: ["run_tests"]
 
 - name: Copy the latest results over when we're done
-  tags: [ 'copy_results' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  fetch:
+  tags: ["copy_results"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.fetch:
     src: "{{ item }}"
     dest: "{{ reboot_limit_local_results_dir }}/{{ item | regex_replace(reboot_limit_data | regex_escape()) | regex_replace('^/', '') }}"
-    flat: yes
+    flat: true
   with_items:
     - "{{ reboot_limit_analyze_file }}"
     - "{{ reboot_limit_count_file }}"
diff --git a/playbooks/roles/selftests/defaults/main.yml b/playbooks/roles/selftests/defaults/main.yml
index dc5982f..45cb502 100644
--- a/playbooks/roles/selftests/defaults/main.yml
+++ b/playbooks/roles/selftests/defaults/main.yml
@@ -8,21 +8,21 @@ target_linux_dir_path: "{{ data_path }}/{{ target_linux_tree }}"
 bootlinux_9p_host_path: "/home/user/linux/"
 
 # These are selftests specific
-kdevops_workflow_enable_selftests: False
-kdevops_run_selftests: False
-run_tests_on_failures: False
-selftests_skip_run: False
-selftests_skip_reboot: False
-selftests_build_radix_tree: False
-selftests_build_selftests_dir: False
+kdevops_workflow_enable_selftests: false
+kdevops_run_selftests: false
+run_tests_on_failures: false
+selftests_skip_run: false
+selftests_skip_reboot: false
+selftests_build_radix_tree: false
+selftests_build_selftests_dir: false
 selftests_radix_tree_dir: "tools/testing/radix-tree"
 
-selftests_section_firmware: False
-selftests_section_kmod: False
-selftests_section_maple: False
-selftests_section_sysctl: False
-selftests_section_xarray: False
-selftests_section_vma: False
+selftests_section_firmware: false
+selftests_section_kmod: false
+selftests_section_maple: false
+selftests_section_sysctl: false
+selftests_section_xarray: false
+selftests_section_vma: false
 
 selftests_ksrc: "tools/testing/selftests/"
 selftests_data: "{{ target_linux_dir_path }}/{{ selftests_ksrc }}"
@@ -31,9 +31,9 @@ selftests_data_target: "{{ data_path }}/selftests/"
 selftests_workdir: "{{ selftests_data_target }}/kselftest/kselftest_install/"
 selftest_timeout_argument: ""
 
-selftest_userspace: False
-selftest_kernelspace: False
+selftest_userspace: false
+selftest_kernelspace: false
 
-selftest_xarray: False
-selftest_maple: False
-selftest_vma: False
+selftest_xarray: false
+selftest_maple: false
+selftest_vma: false
diff --git a/playbooks/roles/selftests/tasks/install-deps/debian/main.yml b/playbooks/roles/selftests/tasks/install-deps/debian/main.yml
index 1cbee32..5d33920 100644
--- a/playbooks/roles/selftests/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/selftests/tasks/install-deps/debian/main.yml
@@ -1,15 +1,15 @@
 ---
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
   tags: deps
 
 - name: Install every single selftest build dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - gcc
       - bc
@@ -22,5 +22,5 @@
       - make
       - linux-perf
     state: present
-    update_cache: yes
-  tags: [ 'selftests', 'deps' ]
+    update_cache: true
+  tags: ["selftests", "deps"]
diff --git a/playbooks/roles/selftests/tasks/install-deps/main.yml b/playbooks/roles/selftests/tasks/install-deps/main.yml
index 7ffa2cb..fc42748 100644
--- a/playbooks/roles/selftests/tasks/install-deps/main.yml
+++ b/playbooks/roles/selftests/tasks/install-deps/main.yml
@@ -1,9 +1,13 @@
 ---
 # tasks to install dependencies for selftests
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: tasks/install-deps/suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: tasks/install-deps/redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/selftests/tasks/install-deps/redhat/main.yml b/playbooks/roles/selftests/tasks/install-deps/redhat/main.yml
index 3b230e2..cb0b6ff 100644
--- a/playbooks/roles/selftests/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/selftests/tasks/install-deps/redhat/main.yml
@@ -1,9 +1,9 @@
 ---
 - name: Install every single selftest build dependencies
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   vars:
     packages:
diff --git a/playbooks/roles/selftests/tasks/install-deps/suse/main.yml b/playbooks/roles/selftests/tasks/install-deps/suse/main.yml
index 8410a10..31f89f4 100644
--- a/playbooks/roles/selftests/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/selftests/tasks/install-deps/suse/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
 
 - name: Set SLE specific version labels to make checks easier
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle10: '{{ ansible_distribution_major_version == "10" }}'
     is_sle11: '{{ ansible_distribution_major_version == "11" }}'
     is_sle12: '{{ ansible_distribution_major_version == "12" }}'
@@ -24,26 +24,26 @@
     - is_sle|bool
 
 - name: Set SLE specific version labels to make checks easier when not SLE
-  set_fact:
-    is_sle10: False
-    is_sle11: False
-    is_sle12: False
-    is_sle12sp5: False
-    is_sle15: False
-    is_sle10sp3: False
-    is_sle11sp1: False
-    is_sle11sp4: False
-    is_sle12sp1: False
-    is_sle12sp3: False
-    is_sle15sp2: False
-    is_sle15sp3: False
-    is_sle15sp4: False
+  ansible.builtin.set_fact:
+    is_sle10: false
+    is_sle11: false
+    is_sle12: false
+    is_sle12sp5: false
+    is_sle15: false
+    is_sle10sp3: false
+    is_sle11sp1: false
+    is_sle11sp4: false
+    is_sle12sp1: false
+    is_sle12sp3: false
+    is_sle15sp2: false
+    is_sle15sp3: false
+    is_sle15sp4: false
   when:
     - not is_sle|bool
 
 - name: Install every single selftest build dependencies
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - git-core
diff --git a/playbooks/roles/selftests/tasks/main.yml b/playbooks/roles/selftests/tasks/main.yml
index 1e1fe8c..10da33a 100644
--- a/playbooks/roles/selftests/tasks/main.yml
+++ b/playbooks/roles/selftests/tasks/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
@@ -15,12 +15,12 @@
 # the target node and the localhost because we first need to build
 # the target selftests for the nodes and then actually use them.
 - name: Install dependencies
-  include_tasks: install-deps/main.yml
-
+  ansible.builtin.include_tasks: install-deps/main.yml
 - name: Install dependencies to build Linux selftests on host
-  tags: [ 'deps' ]
+  tags: ["deps"]
   run_once: true
-  local_action: import_tasks install-deps/main.yml
+  ansible.builtin.import_tasks: install-deps/main.yml
+  delegate_to: localhost
   when:
     - bootlinux_9p|bool
 
@@ -29,25 +29,25 @@
     is_selftest_xarray: "{{ 'xarray' in ansible_host }}"
     is_selftest_maple: "{{ 'maple' in ansible_host }}"
     is_selftest_vma: "{{ 'vma' in ansible_host }}"
-  set_fact:
+  ansible.builtin.set_fact:
     selftest_xarray: "{{ is_selftest_xarray }}"
     selftest_maple: "{{ is_selftest_maple }}"
     selftest_vma: "{{ is_selftest_vma }}"
-  tags: ['vars']
+  tags: ["vars"]
 
 - name: Check if this node is in charge of userspace tests
   vars:
-  set_fact:
+  ansible.builtin.set_fact:
     selftest_userspace: "{{ selftest_xarray or selftest_maple or selftest_vma }}"
-  tags: ['vars']
+  tags: ["vars"]
 
 - name: Check if this node is in charge of running kernel tests
-  set_fact:
+  ansible.builtin.set_fact:
     selftest_kernelspace: "{{ not selftest_userspace }}"
-  tags: ['vars']
+  tags: ["vars"]
 
 - name: Debug kernelspace / userspace tests
-  debug:
+  ansible.builtin.debug:
     msg: |
       Host: {{ ansible_host }}
       - selftest_xarray: {{ selftest_xarray }}
@@ -55,72 +55,74 @@
       - selftest_vma: {{ selftest_vma }}
       - selftest_kernelspace: {{ selftest_kernelspace }}
       - selftest_userspace: {{ selftest_userspace }}
-  tags: ['run_tests']
+  tags: ["run_tests"]
 
 - name: Fail if both userspace and kernelspace are True
-  fail:
+  ansible.builtin.fail:
     msg: "Both selftest_userspace and selftest_kernelspace are True for host {{ ansible_host }}. This is not expected."
   when: selftest_userspace and selftest_kernelspace
-  tags: ['vars']
+  tags: ["vars"]
 
 - name: Fail if both userspace and kernelspace are False
-  fail:
+  ansible.builtin.fail:
     msg: "Both selftest_userspace and selftest_kernelspace are False for host {{ ansible_host }}. This is not expected."
   when: not selftest_userspace and not selftest_kernelspace
-  tags: ['vars']
+  tags: ["vars"]
 
 - name: Fail if selftest_kernelspace is true on incorrect host
-  fail:
+  ansible.builtin.fail:
     msg: "Both selftest_userspace and selftest_kernelspace are True for host {{ ansible_host }}. This is not expected."
   when: (selftest_kernelspace and (selftest_xarray or selftest_maple or selftest_vma))
-  tags: ['vars']
+  tags: ["vars"]
 
 - name: Remove /lib/udev/rules.d/50-firmware.rules
-  tags: [ 'selftests', 'deps' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  tags: ["selftests", "deps"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "/lib/udev/rules.d/50-firmware.rules"
     state: absent
   when:
     - selftests_section_firmware|bool
 
 - name: Create /lib/firmware directory
-  tags: [ 'selftests', 'deps' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  tags: ["selftests", "deps"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "/lib/firmware"
     state: directory
-    mode: '0755'
+    mode: "0755"
   when:
     - selftests_section_firmware|bool
 
-- include_role:
+- name: Include role
+  ansible.builtin.include_role:
     name: create_data_partition
-  tags: [ 'data_partition' ]
+  tags: ["data_partition"]
 
 - name: Get nproc
-  command: "{{ num_jobs }}"
-  tags: [ 'selftests', 'build' ]
+  ansible.builtin.command: "{{ num_jobs }}"
+  tags: ["selftests", "build"]
   register: nproc
 
 - name: Get nproc on host
-  command: "{{ num_jobs }}"
-  tags: [ 'selftests', 'build' ]
+  ansible.builtin.command: "{{ num_jobs }}"
+  tags: ["selftests", "build"]
   register: nproc_host
   when:
     - bootlinux_9p|bool
 
 - name: Set the target selftest
   vars:
-    all_tests: "{{ play_hosts | join(' ') | regex_replace('selftests-') | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') | regex_replace('-', '_') }}"
-  set_fact:
+    all_tests: "{{ play_hosts | join(' ') | regex_replace('selftests-') | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') | regex_replace('-', '_')
+      }}"
+  ansible.builtin.set_fact:
     target_selftest: "{{ ansible_host | regex_replace('selftests-') | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') | regex_replace('-', '_') }}"
     all_selftest_targets: "{{ all_tests | regex_replace('maple') | regex_replace('xarray') }}"
-  tags: [ 'selftests', 'vars' ]
+  tags: ["selftests", "vars"]
 
 # We split building selftestss for two reasons because we can have the Linux
 # build out of the node / guest
@@ -129,8 +131,8 @@
 # 1) building selftests
 # 2) installing built selftests
 - name: Build selftests
-  tags: [ 'selftests', 'build' ]
-  make:
+  tags: ["selftests", "build"]
+  community.general.make:
     chdir: "{{ selftests_data }}"
     jobs: "{{ nproc.stdout }}"
     params:
@@ -141,8 +143,8 @@
     - selftests_build_selftests_dir|bool
 
 - name: Build selftests
-  tags: [ 'selftests', 'build' ]
-  make:
+  tags: ["selftests", "build"]
+  community.general.make:
     chdir: "{{ selftests_data }}"
     jobs: "{{ nproc.stdout }}"
     params:
@@ -153,8 +155,8 @@
     - selftests_build_selftests_dir|bool
 
 - name: Build radix tree tools/testing/radix-tree
-  tags: [ 'selftests', 'build' ]
-  make:
+  tags: ["selftests", "build"]
+  community.general.make:
     chdir: "{{ target_linux_dir_path }}/tools/testing/radix-tree"
     jobs: "{{ nproc.stdout }}"
   when:
@@ -168,8 +170,8 @@
 # Note that some targets will not fail with an error if dependencies are not
 # met.. so you should ensure that build-deps are met before adding a new target
 - name: Build selftests on host on {{ selftests_data_9p }}
-  tags: [ 'selftests', 'build' ]
-  make:
+  tags: ["selftests", "build"]
+  community.general.make:
     chdir: "{{ selftests_data_9p }}"
     jobs: "{{ nproc_host.stdout }}"
     params:
@@ -182,8 +184,9 @@
     - selftests_build_selftests_dir|bool
 
 - name: Build radix tree tools/testing/radix-tree on host
-  tags: [ 'selftests', 'build' ]
-  command: "make -j{{ nproc.stdout }}"
+  tags: ["selftests", "build"]
+  ansible.builtin.command: "make -j{{ nproc.stdout }}"
+  changed_when: false
   args:
     chdir: "{{ bootlinux_9p_host_path }}/tools/testing/radix-tree"
   delegate_to: localhost
@@ -193,8 +196,8 @@
     - selftests_build_radix_tree|bool
 
 - name: Build VMA tools/testing/vma
-  tags: [ 'selftests', 'build' ]
-  make:
+  tags: ["selftests", "build"]
+  community.general.make:
     chdir: "{{ target_linux_dir_path }}/tools/testing/vma"
     jobs: "{{ nproc.stdout }}"
   when:
@@ -202,8 +205,9 @@
     - selftest_vma|bool
 
 - name: Build VMA tools/testing/vma on host
-  tags: [ 'selftests', 'build' ]
-  command: "make -j{{ nproc.stdout }}"
+  tags: ["selftests", "build"]
+  ansible.builtin.command: "make -j{{ nproc.stdout }}"
+  changed_when: false
   args:
     chdir: "{{ bootlinux_9p_host_path }}/tools/testing/vma"
   delegate_to: localhost
@@ -216,11 +220,11 @@
 # 9p the path will be available and everything will have been built
 # for us.
 - name: Install selftests
-  tags: [ 'selftests', 'build' ]
-  become: yes
-  become_method: sudo
-  become_flags: 'su - -c'
-  make:
+  tags: ["selftests", "build"]
+  become: true
+  become_method: ansible.builtin.sudo
+  become_flags: "su - -c"
+  community.general.make:
     chdir: "{{ selftests_data }}"
     jobs: "{{ nproc.stdout }}"
     target: install
@@ -231,106 +235,109 @@
     - selftest_kernelspace|bool
 
 - name: Reboot system before our test so we know everything is sane
-  tags: [ 'selftests', 'run_tests', 'reboot' ]
-  become: yes
-  become_method: sudo
-  reboot:
+  tags: ["selftests", "run_tests", "reboot"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.reboot:
     post_reboot_delay: 10
   when:
     - not selftests_skip_reboot|bool
 
 - name: Set the path to selftests workflow
-  set_fact:
+  ansible.builtin.set_fact:
     selftests_workflow_target: "../workflows/selftests/"
-  tags: [ 'selftests', 'run_tests', 'copy_results', 'prior_run', 'print_results' , 'augment_expunge_list' ]
+  tags: ["selftests", "run_tests", "copy_results", "prior_run", "print_results", "augment_expunge_list"]
 
 - name: Get used target kernel version
-  tags: [ 'selftests', 'vars', 'copy_results', 'augment_expunge_list' ]
-  command: "uname -r"
+  tags: ["selftests", "vars", "copy_results", "augment_expunge_list"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Store last kernel variable
-  set_fact:
-    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\",'') }}"
-  tags: [ 'selftests', 'vars', 'copy_results', 'augment_expunge_list' ]
+  ansible.builtin.set_fact:
+    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\", '') }}"
+  tags: ["selftests", "vars", "copy_results", "augment_expunge_list"]
   run_once: true
 
 - name: Set the path where we collect our selftests results
-  set_fact:
+  ansible.builtin.set_fact:
     selftests_results_full_path: "{{ topdir_path }}/workflows/selftests/results/"
     selftests_workflow_dir: "../workflows/selftests"
     selftests_results_target: "../workflows/selftests/results/last-run/{{ last_kernel }}"
-  tags: [ 'selftests', 'run_tests', 'copy_results', 'prior_run', 'print_results' , 'augment_expunge_list', 'vars' ]
+  tags: ["selftests", "run_tests", "copy_results", "prior_run", "print_results", "augment_expunge_list", "vars"]
 
 - name: Print uname for each host
-  tags: [ 'selftests', 'run_tests' ]
-  debug: var=ansible_kernel
-
+  tags: ["selftests", "run_tests"]
+  ansible.builtin.debug:
+    var: ansible_kernel
 - name: Load configfs module
-  tags: [ 'selftests', 'run_tests', 'configfs' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "modprobe configfs"
+  tags: ["selftests", "run_tests", "configfs"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "modprobe configfs"
   when:
     - kdevops_run_selftests|bool
 
 - name: Clear out old results directory on target hosts
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     state: absent
     path: "{{ selftests_data_target }}/results/"
-  tags: [ 'selftests', 'run_tests', 'clean_results' ]
+  tags: ["selftests", "run_tests", "clean_results"]
 
 - name: Hint to watchdog tests are about to kick off
-  local_action: file path="{{ selftests_workflow_target }}/.begin" state=touch
-  tags: [ 'selftests', 'run_tests' ]
+  ansible.builtin.file:
+    path: "{{ selftests_workflow_target }}/.begin"
+    state: touch
+  delegate_to: localhost
+  tags: ["selftests", "run_tests"]
   when:
     - kdevops_run_selftests|bool
   run_once: true
 
 - name: Enable low-level messages on console
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: sysctl kernel.printk="8 8 1 7"
-
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: sysctl kernel.printk="8 8 1 7"
 - name: Stop selftests if we're debbugging
   ansible.builtin.meta: end_play
-  tags: [ 'selftests', 'run_tests', 'vars'  ]
+  tags: ["selftests", "run_tests", "vars"]
   when:
     - selftests_skip_run|bool
 
 - name: Set variable we'd use for an override for a timeout for this test
   vars:
     selftest_name: "{{ ansible_host | regex_replace('^' + kdevops_host_prefix + '-', '') }}"
-  set_fact:
+  ansible.builtin.set_fact:
     selftest_timeout_variable: "{{ 'selftests_section_' + selftest_name + '_timeout' }}"
-  tags: ['vars' ]
+  tags: ["vars"]
 
 - name: Check if selftest timeout variable exists and is not empty
-  set_fact:
+  ansible.builtin.set_fact:
     selftest_timeout_argument: "{{ '--override-timeout ' + (lookup('vars', selftest_timeout_variable, default='') | string) }}"
   when:
     - selftest_kernelspace|bool
     - lookup('vars', selftest_timeout_variable, default='') != ""
-  tags: ['vars']
+  tags: ["vars"]
 
 - name: Log timeout argument used
-  debug:
+  ansible.builtin.debug:
     msg: "{{ ansible_host }} could use {{ selftest_timeout_variable }} : using timeout argument {{ selftest_timeout_argument }}"
-  tags: ['vars']
+  tags: ["vars"]
   when:
     - selftest_kernelspace|bool
 
 - name: Run kernel-side tests for special tests not in selftests
-  tags: [ 'selftests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{ command_to_run }}"
+  tags: ["selftests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{ command_to_run }}"
   args:
     chdir: "{{ target_linux_dir_path }}/tools/testing/radix-tree"
   register: selftests_module_out
@@ -341,20 +348,14 @@
     - not selftest_vma|bool
   vars:
     command_to_run: >
-      {%- if selftest_xarray  -%}
-      modprobe test_xarray
-      {%- elif selftest_maple -%}
-      modprobe test_maple_tree
-      {%- else -%}
-      echo missing command
-      {%- endif -%}
+      {%- if selftest_xarray -%} modprobe test_xarray{%- elif selftest_maple -%} modprobe test_maple_tree{%- else -%} echo missing command{%- endif -%}
 
 - name: Run userspace selftests
-  tags: [ 'selftests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "{{ command_to_run }}"
+  tags: ["selftests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "{{ command_to_run }}"
   args:
     chdir: "{{ test_target_dir }}"
   register: selftests_userspace_out
@@ -363,28 +364,17 @@
     - (selftests_build_radix_tree|bool and selftest_userspace|bool and not selftest_vma|bool) or selftest_vma|bool
   vars:
     test_target_dir: >-
-      {%- if selftest_vma -%}
-      {{ target_linux_dir_path }}/tools/testing/vma
-      {%- else -%}
-      {{ target_linux_dir_path }}/tools/testing/radix-tree
-      {%- endif -%}
+      {%- if selftest_vma -%} {{ target_linux_dir_path }}/tools/testing/vma{%- else -%} {{ target_linux_dir_path }}/tools/testing/radix-tree{%- endif -%}
     command_to_run: >-
-      {%- if selftest_vma -%}
-      ./vma
-      {%- elif selftest_xarray -%}
-      ./xarray && modprobe test_xarray
-      {%- elif selftest_maple -%}
-      ./maple && modprobe test_maple_tree
-      {%- else -%}
-      echo missing command
-      {%- endif -%}
+      {%- if selftest_vma -%} ./vma{%- elif selftest_xarray -%} ./xarray && modprobe test_xarray{%- elif selftest_maple -%} ./maple && modprobe test_maple_tree{%-
+      else -%} echo missing command{%- endif -%}
 
 - name: Run kernelspace selftests
-  tags: [ 'selftests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: "./run_kselftest.sh -s {{ selftest_timeout_argument }}"
+  tags: ["selftests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: "./run_kselftest.sh -s {{ selftest_timeout_argument }}"
   args:
     chdir: "{{ selftests_workdir }}"
   register: selftests_out
@@ -393,102 +383,113 @@
     - selftest_kernelspace|bool
 
 - name: Create empty directory for log collection for non-standard tests
-  tags: [ 'selftests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  tags: ["selftests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ selftests_workdir }}"
     state: directory
-    mode: '0755'
+    mode: "0755"
     owner: root
     group: root
 
 - name: Remove watchdog hint that tests have started
-  local_action: file path="{{ selftests_workflow_target }}/.begin" state=absent
-  tags: [ 'selftests', 'run_tests' ]
+  ansible.builtin.file:
+    path: "{{ selftests_workflow_target }}/.begin"
+    state: absent
+  delegate_to: localhost
+  tags: ["selftests", "run_tests"]
   when:
     - kdevops_run_selftests|bool
   run_once: true
 
 - name: Clean up our localhost results/last-run directory
-  local_action: file path="{{ selftests_results_target }}/{{ item }}" state=absent
+  ansible.builtin.file:
+    path: "{{ selftests_results_target }}/{{ item }}"
+    state: absent
+  delegate_to: localhost
   with_items:
     - "last-run"
   loop_control:
     label: "{{ item }}"
   run_once: true
-  tags: [ 'selftests', 'copy_results', 'clean_local_results' ]
+  tags: ["selftests", "copy_results", "clean_local_results"]
 
 - name: Create empty last-run directory
-  local_action: file path="{{ selftests_results_target }}/" state=directory
+  ansible.builtin.file:
+    path: "{{ selftests_results_target }}/"
+    state: directory
+  delegate_to: localhost
   run_once: true
-  tags: [ 'selftests', 'copy_results', 'clean_local_results' ]
+  tags: ["selftests", "copy_results", "clean_local_results"]
 
 - name: Document used target kernel version
-  local_action: "shell echo {{ last_kernel }} > {{ selftests_results_target }}/last-kernel.txt"
-  tags: [ 'selftests', 'copy_results', 'augment_expunge_list' ]
+  ansible.builtin.shell: echo {{ last_kernel }} > {{ selftests_results_target }}/last-kernel.txt
+  changed_when: false
+  delegate_to: localhost
+  tags: ["selftests", "copy_results", "augment_expunge_list"]
   run_once: true
 
 - name: Gather kernel logs from each node
-  tags: [ 'selftests', 'copy_results' ]
-  become: yes
-  become_method: sudo
-  command: journalctl -k
+  tags: ["selftests", "copy_results"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: journalctl -k
   register: journal_cmd
 
 - name: Save kernel logs to local file per node
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  copy:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ journal_cmd.stdout }}"
     dest: "{{ selftests_workdir }}/dmesg.log"
-  tags: [ 'selftests', 'copy_results' ]
+  tags: ["selftests", "copy_results"]
 
 - name: Save selftest TAP output
-  tags: [ 'selftests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  copy:
+  tags: ["selftests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ selftests_out.stdout_lines|join('\n') }}"
-    dest: "{{ selftests_workdir}}/tap.log"
+    dest: "{{ selftests_workdir }}/tap.log"
   when:
     - kdevops_run_selftests|bool
     - selftest_kernelspace|bool
 
 - name: Save userspace test output
-  tags: [ 'selftests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  copy:
+  tags: ["selftests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ selftests_userspace_out.stdout_lines|join('\n') }}"
-    dest: "{{ selftests_workdir}}/userspace.log"
+    dest: "{{ selftests_workdir }}/userspace.log"
   when:
     - selftest_userspace|bool
 
 - name: Save module load test output
-  tags: [ 'selftests', 'run_tests' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  copy:
+  tags: ["selftests", "run_tests"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ selftests_module_out.stdout_lines|join('\n') }}"
-    dest: "{{ selftests_workdir}}/module.log"
+    dest: "{{ selftests_workdir }}/module.log"
   when:
     - selftest_userspace|bool
     - not selftest_vma|bool
 
 - name: Look for the test output logs files on {{ selftests_workdir }}
-  tags: [ 'selftests', 'copy_results' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  find:
+  tags: ["selftests", "copy_results"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.find:
     paths: "{{ selftests_workdir }}"
-    recurse: yes
+    recurse: true
     patterns:
       - "output.log"
       - "kselftest-list.txt"
@@ -499,16 +500,16 @@
   register: output_log_files
 
 - name: Copy the output files from {{ selftests_workdir }}
-  tags: [ 'selftests', 'copy_results' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["selftests", "copy_results"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   vars:
     item_with_target: "{{ target_selftest }}.{{ item.path | basename }}"
-  fetch:
+  ansible.builtin.fetch:
     src: "{{ item.path }}"
     dest: "{{ selftests_results_target }}/{{ item_with_target }}"
-    flat: yes
+    flat: true
   with_items: "{{ output_log_files.files }}"
   loop_control:
     label: "Copying {{ item_with_target }} ..."
@@ -516,17 +517,17 @@
     - output_log_files.matched > 0
 
 - name: Find all *.tap.log files in the selftests_results_target directory
-  tags: [ 'selftests', 'check_results' ]
+  tags: ["selftests", "check_results"]
   delegate_to: localhost
-  find:
+  ansible.builtin.find:
     paths: "{{ selftests_results_target }}"
     patterns: "*.tap.log"
   register: tap_log_files
 
 - name: Read each tap.log file
-  tags: [ 'selftests', 'check_results' ]
+  tags: ["selftests", "check_results"]
   delegate_to: localhost
-  slurp:
+  ansible.builtin.slurp:
     src: "{{ item.path }}"
   with_items: "{{ tap_log_files.files }}"
   register: tap_log_contents
@@ -534,15 +535,15 @@
     label: "Reading {{ item.path }}"
 
 - name: Initialize tap_failures as an empty list
-  tags: [ 'selftests', 'check_results' ]
+  tags: ["selftests", "check_results"]
   delegate_to: localhost
-  set_fact:
+  ansible.builtin.set_fact:
     tap_failures: []
 
 - name: Read each tap.log file
-  tags: [ 'selftests', 'check_results' ]
+  tags: ["selftests", "check_results"]
   delegate_to: localhost
-  slurp:
+  ansible.builtin.slurp:
     src: "{{ item.path }}"
   with_items: "{{ tap_log_files.files }}"
   register: tap_log_contents
@@ -550,9 +551,9 @@
     label: "Reading {{ item.path }}"
 
 - name: Check for TAP failures in the content of each tap.log
-  tags: [ 'selftests', 'check_results' ]
+  tags: ["selftests", "check_results"]
   delegate_to: localhost
-  set_fact:
+  ansible.builtin.set_fact:
     tap_failures: "{{ tap_failures + [{'file': item.item.path, 'content': item.content | b64decode | string}] }}"
   when: "'not ok' in (item.content | b64decode | string)"
   with_items: "{{ tap_log_contents.results }}"
@@ -560,9 +561,9 @@
     label: "Checking for failures in {{ item.item.path }}"
 
 - name: Fail if TAP failures are found
-  tags: [ 'selftests', 'check_results' ]
+  tags: ["selftests", "check_results"]
   delegate_to: localhost
-  fail:
+  ansible.builtin.fail:
     msg: |
       Test failures detected in the following TAP logs:
       {% for failure in tap_failures %}
diff --git a/playbooks/roles/siw/tasks/main.yml b/playbooks/roles/siw/tasks/main.yml
index be5aeb7..1bb444e 100644
--- a/playbooks/roles/siw/tasks/main.yml
+++ b/playbooks/roles/siw/tasks/main.yml
@@ -1,16 +1,17 @@
+---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
 
 - name: Insert udev rule to create siw device on the target host
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.template:
     src: "udev-rule.j2"
     dest: "/usr/lib/udev/rules.d/99-siw.rules"
@@ -20,6 +21,6 @@
     force: false
 
 - name: Force the target host to reload its udev ruleset
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.shell: "udevadm control --reload && udevadm trigger"
diff --git a/playbooks/roles/smbd/tasks/install-deps/debian/main.yml b/playbooks/roles/smbd/tasks/install-deps/debian/main.yml
index beb1acd..0808928 100644
--- a/playbooks/roles/smbd/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/smbd/tasks/install-deps/debian/main.yml
@@ -4,28 +4,28 @@
   vars:
     params:
       files:
-        - '{{ansible_distribution}}.yml'
-        - '{{ansible_os_family}}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Determine which fsprogs package is needed for "{{ smbd_share_fstype }}"
-  set_fact:
+  ansible.builtin.set_fact:
     fsprogs: "{{ fstype_userspace_progs[smbd_share_fstype] | default() }}"
 
 - name: Add {{ fsprogs }} to the smbd packages list
-  set_fact:
+  ansible.builtin.set_fact:
     smbd_packages: "{{ smbd_packages + [fsprogs] }}"
   when:
     - fsprogs is defined
     - fsprogs
 
 - name: Install smbd dependencies
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name: "{{ smbd_packages }}"
     state: present
-    update_cache: yes
-  tags: [ 'deps' ]
+    update_cache: true
+  tags: ["deps"]
diff --git a/playbooks/roles/smbd/tasks/install-deps/redhat/main.yml b/playbooks/roles/smbd/tasks/install-deps/redhat/main.yml
index 92baaee..66d7a85 100644
--- a/playbooks/roles/smbd/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/smbd/tasks/install-deps/redhat/main.yml
@@ -4,28 +4,28 @@
   vars:
     params:
       files:
-        - '{{ansible_distribution}}.yml'
-        - '{{ansible_os_family}}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Determine which fsprogs package is needed for "{{ smbd_share_fstype }}"
-  set_fact:
+  ansible.builtin.set_fact:
     fsprogs: "{{ fstype_userspace_progs[smbd_share_fstype] | default() }}"
 
 - name: Add {{ fsprogs }} to the smbd packages list
-  set_fact:
+  ansible.builtin.set_fact:
     smbd_packages: "{{ smbd_packages + [fsprogs] }}"
   when:
     - fsprogs is defined
     - fsprogs
 
 - name: Install smbd dependencies
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ smbd_packages }}"
   retries: 3
   delay: 5
diff --git a/playbooks/roles/smbd/tasks/install-deps/suse/main.yml b/playbooks/roles/smbd/tasks/install-deps/suse/main.yml
index e90fe89..1b637b8 100644
--- a/playbooks/roles/smbd/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/smbd/tasks/install-deps/suse/main.yml
@@ -4,26 +4,26 @@
   vars:
     params:
       files:
-        - '{{ansible_distribution}}.yml'
-        - '{{ansible_os_family}}.yml'
+        - "{{ ansible_distribution }}.yml"
+        - "{{ ansible_os_family }}.yml"
         - default.yml
       paths:
-        - 'vars'
+        - "vars"
 
 - name: Determine which fsprogs package is needed for "{{ smbd_share_fstype }}"
-  set_fact:
+  ansible.builtin.set_fact:
     fsprogs: "{{ fstype_userspace_progs[smbd_share_fstype] | default() }}"
 
 - name: Add {{ fsprogs }} to the smbd packages list
-  set_fact:
+  ansible.builtin.set_fact:
     smbd_packages: "{{ smbd_packages + [fsprogs] }}"
   when:
     - fsprogs is defined
     - fsprogs
 
 - name: Install smbd dependencies
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name: "{{ smbd_packages }}"
     state: present
diff --git a/playbooks/roles/smbd/tasks/main.yml b/playbooks/roles/smbd/tasks/main.yml
index 042c308..66444da 100644
--- a/playbooks/roles/smbd/tasks/main.yml
+++ b/playbooks/roles/smbd/tasks/main.yml
@@ -12,15 +12,15 @@
   when: ansible_os_family == 'RedHat'
 
 - name: Create smb.conf
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.template:
     src: smb.conf.j2
     dest: /etc/samba/smb.conf
     owner: root
     group: root
-    mode: 0644
+    mode: "0644"
 
 - name: Set up a volume group on local block devices
   ansible.builtin.include_role:
@@ -29,24 +29,24 @@
     volume_group_name: "shares"
 
 - name: Create {{ smbd_share_path }}
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ smbd_share_path }}"
     state: directory
-    mode: 0755
+    mode: "0755"
 
 - name: Test whether SELinux is enabled
-  command: /usr/sbin/selinuxenabled
+  ansible.builtin.command: /usr/sbin/selinuxenabled
   register: selinux_status
-  changed_when: False
-  failed_when: False
+  changed_when: false
+  failed_when: false
 
 - name: Set samba_export_all_rw selinux boolean
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.posix.seboolean:
     name: samba_export_all_rw
     state: true
@@ -57,9 +57,9 @@
   ansible.builtin.service_facts:
 
 - name: Allow access to samba in firewalld
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.posix.firewalld:
     service: samba
     permanent: true
@@ -68,17 +68,17 @@
   when: '"firewalld.service" in ansible_facts.services'
 
 - name: Start and enable samba systemd service
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.systemd:
     name: smb
     enabled: true
     state: started
 
 - name: Set SMB password for root
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.shell:
     cmd: printf "{{ smb_root_pw }}\n{{ smb_root_pw }}" | smbpasswd -a root -s
diff --git a/playbooks/roles/smbd_add_share/tasks/main.yml b/playbooks/roles/smbd_add_share/tasks/main.yml
index 4958d6a..d980609 100644
--- a/playbooks/roles/smbd_add_share/tasks/main.yml
+++ b/playbooks/roles/smbd_add_share/tasks/main.yml
@@ -1,8 +1,8 @@
 ---
 - name: Create a new LVM partition
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
   community.general.lvol:
     vg: shares
@@ -12,23 +12,23 @@
     - share_fstype != "tmpfs"
 
 - name: Format new volume for {{ share_fstype }}
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  filesystem:
+  community.general.filesystem:
     fstype: "{{ share_fstype }}"
     dev: "/dev/shares/{{ share_volname }}"
   when:
     - share_fstype != "tmpfs"
 
 - name: Mount volume under {{ smbd_share_path }}
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  throttle: 1  # running this in parallel can clobber fstab changes
-  mount:
+  throttle: 1 # running this in parallel can clobber fstab changes
+  ansible.posix.mount:
     path: "{{ smbd_share_path }}/{{ share_volname }}"
     src: "/dev/shares/{{ share_volname }}"
     fstype: "{{ share_fstype }}"
@@ -37,12 +37,12 @@
     - share_fstype != "tmpfs"
 
 - name: Mount tmpfs under {{ smbd_share_path }}
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  throttle: 1  # running this in parallel can clobber fstab changes
-  mount:
+  throttle: 1 # running this in parallel can clobber fstab changes
+  ansible.posix.mount:
     path: "{{ smbd_share_path }}/{{ share_volname }}"
     src: "tmpfs"
     fstype: "tmpfs"
@@ -51,11 +51,11 @@
     - share_fstype == "tmpfs"
 
 - name: Ensure {{ share_volname }} has correct permissions
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  file:
+  ansible.builtin.file:
     state: directory
     path: "{{ smbd_share_path }}/{{ share_volname }}"
     owner: "{{ share_user }}"
@@ -63,26 +63,26 @@
     mode: "{{ share_mode }}"
 
 - name: Test whether SELinux is enabled
-  command: /usr/sbin/selinuxenabled
+  ansible.builtin.command: /usr/sbin/selinuxenabled
   register: selinux_status
   delegate_to: "{{ server_host }}"
-  changed_when: False
-  failed_when: False
+  changed_when: false
+  failed_when: false
 
 - name: Fix SELinux file context under new mount
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  command: /usr/sbin/restorecon -R "{{ smbd_share_path }}/{{ share_volname }}"
+  ansible.builtin.command: /usr/sbin/restorecon -R "{{ smbd_share_path }}/{{ share_volname }}"
   when: selinux_status.rc == 0
 
 - name: Create an SMB share for the new fs
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
-  throttle: 1  # running this in parallel can clobber smb.conf changes
+  throttle: 1 # running this in parallel can clobber smb.conf changes
   ansible.builtin.blockinfile:
     dest: /etc/samba/smb.conf
     block: "{{ lookup('template', 'share.j2') }}"
@@ -92,12 +92,11 @@
     insertafter: "EOF"
 
 - name: Reload the smb services
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   delegate_to: "{{ server_host }}"
   ansible.builtin.systemd_service:
-    name: smb.service 
+    name: smb.service
     enabled: true
     state: reloaded
-
diff --git a/playbooks/roles/steady_state/defaults/main.yml b/playbooks/roles/steady_state/defaults/main.yml
index d38ba2b..11b2bae 100644
--- a/playbooks/roles/steady_state/defaults/main.yml
+++ b/playbooks/roles/steady_state/defaults/main.yml
@@ -14,10 +14,10 @@ ssd_steady_state_bw_mean_limit: "20%"
 ssd_steady_state_bw_mean_dur: "2h"
 ssd_steady_state_bw_slope: "10%"
 ssd_steady_state_bw_slope_dur: "2h"
-kdevops_run_ssd_steady_state: False
+kdevops_run_ssd_steady_state: false
 
 # Prefill configuration defaults
-ssd_steady_state_prefill_verbose: False
+ssd_steady_state_prefill_verbose: false
 ssd_steady_state_prefill_max_size: ""
 ssd_steady_state_prefill_physical_bs: ""
 ssd_steady_state_prefill_ioengine: "io_uring"
diff --git a/playbooks/roles/steady_state/tasks/main.yaml b/playbooks/roles/steady_state/tasks/main.yaml
index ba76e71..6fd19a1 100644
--- a/playbooks/roles/steady_state/tasks/main.yaml
+++ b/playbooks/roles/steady_state/tasks/main.yaml
@@ -11,93 +11,93 @@
   failed_when: false
   tags: vars
 
-- include_role:
+- ansible.builtin.include_role:
     name: create_data_partition
-  tags: [ 'data_partition' ]
+  tags: ["data_partition"]
 
 - name: Ensure fio is installed
-  become: yes
-  package:
+  become: true
+  ansible.builtin.package:
     name: fio
     state: present
 
 - name: Ensure steady state directory exists
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ steady_state_data }}"
     state: directory
-  tags: ['setup']
+  tags: ["setup"]
 
 - name: Generate fio steady state configs
-  become: yes
-  become_method: sudo
-  template:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.template:
     src: "{{ item }}.j2"
     dest: "{{ steady_state_data }}/{{ item }}"
-    mode: '0644'
+    mode: "0644"
   loop:
     - ss_iops.ini
     - ss_bw.ini
-  tags: ['setup']
+  tags: ["setup"]
 
 - name: Resolve real path of target block device
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: realpath {{ ssd_steady_state_device }}
   register: real_device_path
   when: kdevops_run_ssd_steady_state | bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Inform user of target block device for steady_state_device
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.debug:
     msg:
       - "Target device is {{ ssd_steady_state_device }} real device is: {{ real_device_path.stdout }}"
   when: kdevops_run_ssd_steady_state | bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Check if target is a block device
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.stat:
     path: "{{ real_device_path.stdout }}"
   register: device_stat
   when: kdevops_run_ssd_steady_state | bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Fail if target is not a block device
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.fail:
     msg: "Target {{ ssd_steady_state_device }} must be a block device"
   when:
     - kdevops_run_ssd_steady_state | bool
     - device_stat.stat.exists | default(false)
     - not device_stat.stat.isblk | default(false)
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Get device basename from resolved symlink
-  become: yes
-  become_method: sudo
-  set_fact:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.set_fact:
     device_basename: "{{ real_device_path.stdout | basename }}"
   when: kdevops_run_ssd_steady_state | bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Inform user of short basename of target device
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.debug:
     msg:
       - "Target device base name is {{ device_basename }}"
   when: kdevops_run_ssd_steady_state | bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Read block device properties from sysfs
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.slurp:
     src: "{{ item.path }}"
   loop:
@@ -105,21 +105,21 @@
     - { path: "/sys/block/{{ device_basename }}/queue/optimal_io_size", var: "device_optimal_io_raw" }
   register: device_sysfs_read
   when: kdevops_run_ssd_steady_state | bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Get device capacity
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: /usr/sbin/blockdev --getsize64 {{ ssd_steady_state_device }}
   register: device_capacity_raw
   changed_when: false
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Set block device properties as facts
-  become: yes
-  become_method: sudo
-  set_fact:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.set_fact:
     device_physical_block_size: >-
       {{
         (device_sysfs_read.results |
@@ -134,11 +134,11 @@
       }}
     device_capacity: "{{ device_capacity_raw.stdout | int }}"
   when: kdevops_run_ssd_steady_state | bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Calculate effective configuration values
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.set_fact:
     effective_physical_bs: "{{ ssd_steady_state_prefill_physical_bs | default(device_physical_block_size, true) | int }}"
     effective_max_size: "{{ ssd_steady_state_prefill_max_size | default(device_capacity, true) | int }}"
@@ -152,131 +152,131 @@
       {% endif %}
     effective_jobs: "{{ ssd_steady_state_numjobs | default(ansible_processor_vcpus, true) | int }}"
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Fix syntax for effective_blocksize
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.set_fact:
     effective_blocksize: "{{ effective_blocksize | trim | int }}"
 
 - name: Debug type of device_optimal_io_size
-  debug:
+  ansible.builtin.debug:
     msg: "device_optimal_io_size={{ device_optimal_io_size }} ({{ device_optimal_io_size | type_debug }})"
 
 - name: Validate capacity alignment to physical block size
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.fail:
     msg: "Device capacity {{ effective_max_size }} not aligned to physical block size {{ effective_physical_bs }}"
   when:
     - kdevops_run_ssd_steady_state|bool
     - (effective_max_size | int) % (effective_physical_bs | int) != 0
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Validate blocksize alignment to physical block size
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.fail:
     msg: "Block size {{ effective_blocksize }} not aligned to physical block size {{ effective_physical_bs }}"
   when:
     - kdevops_run_ssd_steady_state|bool
     - (effective_blocksize | int) % (effective_physical_bs | int) != 0
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Calculate prefill job distribution
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.set_fact:
     aligned_pbs_blocks: "{{ (effective_max_size | int) // (effective_physical_bs | int) }}"
     aligned_bs_per_block: "{{ (effective_blocksize | int) // (effective_physical_bs | int) }}"
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Calculate aligned blocks and job distribution
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.set_fact:
     aligned_blocks: "{{ aligned_pbs_blocks | int // aligned_bs_per_block | int }}"
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Calculate job alignment
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.set_fact:
     blocks_per_job_remainder: "{{ aligned_blocks | int % effective_jobs | int }}"
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Set aligned job distribution
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.set_fact:
     aligned_jobs: "{{ effective_jobs if blocks_per_job_remainder == 0 else (effective_jobs | int - 1) }}"
     unaligned_jobs: "{{ 0 if blocks_per_job_remainder == 0 else 1 }}"
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Set aligned blocks per job
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.set_fact:
     aligned_blocks_per_job: "{{ aligned_blocks | int // aligned_jobs | int if blocks_per_job_remainder != 0 else aligned_blocks | int // effective_jobs | int }}"
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Calculate byte distribution for jobs
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.set_fact:
     aligned_block_bytes: "{{ aligned_blocks_per_job | int * effective_blocksize | int }}"
     total_aligned_block_bytes: "{{ aligned_blocks_per_job | int * effective_blocksize | int * aligned_jobs | int }}"
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Calculate remainder bytes for unaligned job
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.set_fact:
     remainder_block_bytes: "{{ effective_max_size | int - total_aligned_block_bytes | int }}"
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Validate job byte alignment to blocksize
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.fail:
     msg: "Aligned job bytes {{ aligned_block_bytes }} not aligned to blocksize {{ effective_blocksize }}"
   when:
     - kdevops_run_ssd_steady_state|bool
     - (aligned_block_bytes | int) % (effective_blocksize | int) != 0
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Validate job byte alignment to physical block size
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.fail:
     msg: "Aligned job bytes {{ aligned_block_bytes }} not aligned to physical block size {{ effective_physical_bs }}"
   when:
     - kdevops_run_ssd_steady_state|bool
     - (aligned_block_bytes | int) % (effective_physical_bs | int) != 0
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Validate remainder alignment to physical block size
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.fail:
     msg: "Remainder bytes {{ remainder_block_bytes }} not aligned to physical block size {{ effective_physical_bs }}"
   when:
     - kdevops_run_ssd_steady_state|bool
     - remainder_block_bytes | int != 0
     - (remainder_block_bytes | int) % (effective_physical_bs | int) != 0
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Run main prefill fio job for aligned data
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: >-
     fio --filename={{ ssd_steady_state_device }}
     --direct={{ ssd_steady_state_prefill_direct }}
@@ -293,11 +293,11 @@
   when:
     - kdevops_run_ssd_steady_state|bool
     - aligned_jobs | int > 0
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Run remainder prefill fio job for unaligned data
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: >-
     fio --filename={{ ssd_steady_state_device }}
     --direct={{ ssd_steady_state_prefill_direct }}
@@ -313,11 +313,11 @@
     - kdevops_run_ssd_steady_state|bool
     - unaligned_jobs | int > 0
     - remainder_block_bytes | int > 0
-  tags: ['prefill']
+  tags: ["prefill"]
 
 - name: Run fio steady state for iops
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: >-
     fio {{ steady_state_data }}/ss_iops.ini
     --blocksize={{ effective_blocksize }}
@@ -325,11 +325,11 @@
     --output-format=json+
     --output={{ steady_state_data }}/ss_iops.json
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['steady_state']
+  tags: ["steady_state"]
 
 - name: Run fio steady state for bw
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: >-
     fio {{ steady_state_data }}/ss_bw.ini
     --blocksize={{ effective_blocksize }}
@@ -337,16 +337,16 @@
     --output-format=json+
     --output={{ steady_state_data }}/ss_bw.json
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['steady_state']
+  tags: ["steady_state"]
 
 - name: Create local results directory
   delegate_to: localhost
   ansible.builtin.file:
     path: "{{ topdir_path }}/workflows/steady_state/results/{{ inventory_hostname }}/"
     state: directory
-    mode: '0755'
+    mode: "0755"
   run_once: false
-  tags: ['results']
+  tags: ["results"]
 
 - name: Copy steady state results to controller
   delegate_to: localhost
@@ -358,4 +358,4 @@
     rsync_opts:
       - "--ignore-existing"
   when: kdevops_run_ssd_steady_state|bool
-  tags: ['results']
+  tags: ["results"]
diff --git a/playbooks/roles/sysbench/defaults/main.yml b/playbooks/roles/sysbench/defaults/main.yml
index ea198ad..cf5e61f 100644
--- a/playbooks/roles/sysbench/defaults/main.yml
+++ b/playbooks/roles/sysbench/defaults/main.yml
@@ -2,7 +2,7 @@
 sysbench_db_type: "mysql"
 sysbench_db_type_mysql: false
 sysbench_docker: false
-sysbench_type_mysql_docker: False
+sysbench_type_mysql_docker: false
 sysbench_disk_setup_env: ""
 
 sysbench_fs_sector_size: "512"
@@ -14,16 +14,16 @@ sysbench_fs_opts: ""
 sysbench_mount_opts: ""
 sysbench_mnt: "/db"
 
-sysbench_host_is_baseline: False
+sysbench_host_is_baseline: false
 
 sysbench_mysql_table_engine: "innodb"
 
-sysbench_test_atomics: False
-sysbench_test_atomics_tps_variability: False
+sysbench_test_atomics: false
+sysbench_test_atomics_tps_variability: false
 
 sysbench_sectsize_size_env: ""
 
-sysbench_mysql_container_host_client_config_path:  "/data/my.cnf"
+sysbench_mysql_container_host_client_config_path: "/data/my.cnf"
 sysbench_mysql_container_client_config: "/root/.my.cnf"
 
 sysbench_mysql_container_image_string: "mysql:8.0"
@@ -53,8 +53,8 @@ sysbench_threads: 128
 sysbench_telemetry_path: "/data/sysbench-telemetry"
 sysbench_docker_telemetry_path: "/data/sysbench-telemetry"
 
-sysbench_disable_doublewrite_auto: False
-sysbench_disable_doublewrite_always: False
+sysbench_disable_doublewrite_auto: false
+sysbench_disable_doublewrite_always: false
 
 sysbench_type_postgresql_native: false
 
diff --git a/playbooks/roles/sysbench/tasks/install-deps/debian/main.yml b/playbooks/roles/sysbench/tasks/install-deps/debian/main.yml
index 33f2853..fa98c68 100644
--- a/playbooks/roles/sysbench/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/sysbench/tasks/install-deps/debian/main.yml
@@ -1,39 +1,39 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Update apt cache
-  become: yes
-  become_method: sudo
-  apt:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
+    update_cache: true
   tags: deps
 
 - name: Install sysbench deps
-  become: yes
-  become_method: sudo
-  apt:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.apt:
     name:
       - docker.io
       - locales
       - rsync
     state: present
     update_cache: true
-  tags: ['deps']
-  when: 'sysbench_type_mysql_docker|bool'
+  tags: ["deps"]
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Install PosgreSQL build deps
-  tags: ['deps']
+  tags: ["deps"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.apt:
     name:
       - bison
@@ -47,14 +47,14 @@
       - zlib1g-dev
     state: present
     update_cache: true
-  when: 'sysbench_type_postgresql_native|bool'
+  when: "sysbench_type_postgresql_native|bool"
 
 # acl - Required for running Ansible with unpriviledge user (sysbench_postgresql_user)
 # https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_privilege_escalation.html#risks-of-becoming-an-unprivileged-user
 - name: Install PosgreSQL runtime deps
-  tags: ['deps']
+  tags: ["deps"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.apt:
     name:
       - acl
@@ -62,24 +62,24 @@
       - nvme-cli
     state: present
     update_cache: true
-  when: 'sysbench_type_postgresql_native|bool'
+  when: "sysbench_type_postgresql_native|bool"
 
 - name: Install sysbench deps
-  tags: ['deps']
+  tags: ["deps"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.apt:
     name:
       - locales
       - rsync
     state: present
     update_cache: true
-  when: 'sysbench_type_postgresql_native|bool'
+  when: "sysbench_type_postgresql_native|bool"
 
 - name: Install plot deps
-  tags: ['deps']
+  tags: ["deps"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   delegate_to: localhost
   ansible.builtin.apt:
     name:
@@ -87,4 +87,4 @@
       - python3-seaborn
     state: present
     update_cache: true
-  when: 'sysbench_type_postgresql_native|bool'
+  when: "sysbench_type_postgresql_native|bool"
diff --git a/playbooks/roles/sysbench/tasks/install-deps/main.yml b/playbooks/roles/sysbench/tasks/install-deps/main.yml
index 4e01d57..053c3c3 100644
--- a/playbooks/roles/sysbench/tasks/install-deps/main.yml
+++ b/playbooks/roles/sysbench/tasks/install-deps/main.yml
@@ -1,12 +1,17 @@
 ---
-- include_role:
+- name: Include package management role
+  ansible.builtin.include_role:
     name: pkg
 
 # tasks to install dependencies for oscheck
-- name: oscheck distribution ospecific setup
-  import_tasks: tasks/install-deps/debian/main.yml
+- name: Oscheck distribution ospecific setup
+  ansible.builtin.import_tasks: tasks/install-deps/debian/main.yml
   when: ansible_facts['os_family']|lower == 'debian'
-- import_tasks: tasks/install-deps/suse/main.yml
+
+- name: SUSE distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/suse/main.yml
   when: ansible_facts['os_family']|lower == 'suse'
-- import_tasks: tasks/install-deps/redhat/main.yml
+
+- name: RedHat distribution specific setup
+  ansible.builtin.import_tasks: tasks/install-deps/redhat/main.yml
   when: ansible_facts['os_family']|lower == 'redhat'
diff --git a/playbooks/roles/sysbench/tasks/install-deps/redhat/main.yml b/playbooks/roles/sysbench/tasks/install-deps/redhat/main.yml
index ad3fcf6..40edb9c 100644
--- a/playbooks/roles/sysbench/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/sysbench/tasks/install-deps/redhat/main.yml
@@ -10,10 +10,10 @@
     - ansible_distribution != "Fedora"
 
 - name: Install docker
-  become: yes
-  become_method: sudo
-  yum:
-    update_cache: yes
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.dnf:
+    update_cache: true
     name: "{{ packages }}"
   retries: 3
   delay: 5
diff --git a/playbooks/roles/sysbench/tasks/install-deps/suse/main.yml b/playbooks/roles/sysbench/tasks/install-deps/suse/main.yml
index 6a31dca..8af20d6 100644
--- a/playbooks/roles/sysbench/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/sysbench/tasks/install-deps/suse/main.yml
@@ -1,12 +1,12 @@
 ---
 - name: Set generic SUSE specific distro facts
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
     is_leap: '{{ "Leap" in ansible_distribution }}'
     is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
 
 - name: Set SLE specific version labels to make checks easier
-  set_fact:
+  ansible.builtin.set_fact:
     is_sle10: '{{ ansible_distribution_major_version == "10" }}'
     is_sle11: '{{ ansible_distribution_major_version == "11" }}'
     is_sle12: '{{ ansible_distribution_major_version == "12" }}'
@@ -24,41 +24,41 @@
     - is_sle|bool
 
 - name: Set SLE specific version labels to make checks easier when not SLE
-  set_fact:
-    is_sle10: False
-    is_sle11: False
-    is_sle12: False
-    is_sle15: False
-    is_sle10sp3: False
-    is_sle11sp1: False
-    is_sle11sp4: False
-    is_sle12sp1: False
-    is_sle12sp3: False
-    is_sle12sp5: False
-    is_sle15sp2: False
-    is_sle15sp3: False
-    is_sle15sp4: False
+  ansible.builtin.set_fact:
+    is_sle10: false
+    is_sle11: false
+    is_sle12: false
+    is_sle15: false
+    is_sle10sp3: false
+    is_sle11sp1: false
+    is_sle11sp4: false
+    is_sle12sp1: false
+    is_sle12sp3: false
+    is_sle12sp5: false
+    is_sle15sp2: false
+    is_sle15sp3: false
+    is_sle15sp4: false
   when:
     - not is_sle|bool
 
 - name: By default we assume we have figured out how to add repos on a release
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: true
 
 - name: Lets us disable things which require a zypper repo present
-  set_fact:
+  ansible.builtin.set_fact:
     repos_present: false
   when:
     - is_sle|bool
     - is_sle10|bool or is_sle11|bool
 
 - name: The default is to assume all distros have the indent package
-  set_fact:
-    has_indent: True
+  ansible.builtin.set_fact:
+    has_indent: true
 
 - name: Install docker tools
-  become: yes
-  become_method: sudo
+  become: true
+  become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
       - docker
diff --git a/playbooks/roles/sysbench/tasks/main.yaml b/playbooks/roles/sysbench/tasks/main.yaml
index ac080ce..bffa570 100644
--- a/playbooks/roles/sysbench/tasks/main.yaml
+++ b/playbooks/roles/sysbench/tasks/main.yaml
@@ -12,10 +12,10 @@
   tags: vars
 
 - name: Create a few directories which kdevops uses for sysbench if they do not exist
-  tags: [ 'mkfs' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["mkfs"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ item }}"
     state: directory
@@ -25,11 +25,10 @@
 
 # Distro specific
 - name: Install dependencies
-  include_tasks: install-deps/main.yml
-
-- include_role:
+  ansible.builtin.include_tasks: install-deps/main.yml
+- ansible.builtin.include_role:
     name: create_data_partition
-  tags: [ 'mkfs' ]
+  tags: ["mkfs"]
 
 - name: MySQL Docker
   ansible.builtin.import_tasks: mysql-docker/main.yaml
diff --git a/playbooks/roles/sysbench/tasks/mysql-docker/main.yaml b/playbooks/roles/sysbench/tasks/mysql-docker/main.yaml
index 0227fe6..421122c 100644
--- a/playbooks/roles/sysbench/tasks/mysql-docker/main.yaml
+++ b/playbooks/roles/sysbench/tasks/mysql-docker/main.yaml
@@ -1,73 +1,74 @@
 ---
 - name: Ensure telemetry data directory exists
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ sysbench_telemetry_path }}"
     state: directory
     mode: "u=rwx,g=rx,o=rx"
-  when: 'sysbench_type_mysql_docker|bool'
-  tags: ['setup']
+  when: "sysbench_type_mysql_docker|bool"
+  tags: ["setup"]
 
 - name: Ensure MySQL root user directory exists
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ sysbench_mysql_container_host_root_path }}"
     state: directory
     mode: "u=rwx,g=rx,o=rx"
-  when: 'sysbench_type_mysql_docker|bool'
-  tags: ['setup']
+  when: "sysbench_type_mysql_docker|bool"
+  tags: ["setup"]
 
 - name: Determine filesystem setting used and db page size
   vars:
-    fs_type_variable: "{{ ansible_host | regex_replace('^' + kdevops_host_prefix + '-', '')  | regex_replace('-.+', '') }}"
+    fs_type_variable: "{{ ansible_host | regex_replace('^' + kdevops_host_prefix + '-', '') | regex_replace('-.+', '') }}"
     fs_command_variable_simple: "sysbench_{{ ansible_host | regex_replace('^' + kdevops_host_prefix + '-', '') | regex_replace('-dev$', '') }}_cmd"
-    fs_command_variable: "{{ fs_command_variable_simple | regex_replace('-', '_') | regex_replace('^sysbench_' + fs_type_variable, fs_type_variable + '_section') }}"
+    fs_command_variable: "{{ fs_command_variable_simple | regex_replace('-', '_') | regex_replace('^sysbench_' + fs_type_variable, fs_type_variable + '_section')
+      }}"
     db_page_size_simple: "sysbench_{{ ansible_host | regex_replace('^' + kdevops_host_prefix + '-', '') | regex_replace('-dev$', '') }}_db_page_size"
     db_page_size_variable: "{{ db_page_size_simple | regex_replace('-', '_') | regex_replace('^sysbench_' + fs_type_variable, fs_type_variable + '_section') }}"
     fs_sector_size_variable: "sysbench_{{ fs_type_variable }}_sector_size"
     fs_cmd: "{{  lookup('vars', 'sysbench_' + fs_command_variable) }}"
     sect_size: "{{  lookup('vars', fs_sector_size_variable) }}"
     db_page_size: "{{  lookup('vars', 'sysbench_' + db_page_size_variable) }}"
-  set_fact:
+  ansible.builtin.set_fact:
     filesystem_command_for_host: "{{ fs_cmd }}"
     sysbench_fs_sector_size: "{{ sect_size }}"
     sysbench_fstype: "{{ fs_type_variable }}"
-    sysbench_fs_opts_without_sector_size: "{{ fs_cmd | regex_replace('^[^ ]+ ', '')  }}"
+    sysbench_fs_opts_without_sector_size: "{{ fs_cmd | regex_replace('^[^ ]+ ', '') }}"
     sysbench_db_page_size: "{{ db_page_size }}"
-  tags: ['vars' ]
+  tags: ["vars"]
 
 - name: Set filesystem options for XFS with sector size
-  set_fact:
+  ansible.builtin.set_fact:
     sysbench_fs_opts: "{{ sysbench_fs_opts_without_sector_size }} -s size={{ sysbench_fs_sector_size }} -L {{ sysbench_label }}"
   when: sysbench_fstype != 'ext4'
-  tags: ['mkfs']
+  tags: ["mkfs"]
 
 - name: Set filesystem options for ext4 without sector size
-  set_fact:
+  ansible.builtin.set_fact:
     sysbench_fs_opts: "{{ sysbench_fs_opts_without_sector_size }} -L {{ sysbench_label }}"
   when: sysbench_fstype == 'ext4'
-  tags: ['mkfs']
+  tags: ["mkfs"]
 
 - name: Set environment variable for sector size for ext4
   vars:
-  set_fact:
+  ansible.builtin.set_fact:
     sysbench_fs_env:
       MKE2FS_DEVICE_SECTSIZE: "{{ sysbench_fs_sector_size }}"
   when: sysbench_fstype == 'ext4'
-  tags: ['mkfs']
+  tags: ["mkfs"]
 
 - name: Clear environment variable for non-ext4 filesystems
-  set_fact:
+  ansible.builtin.set_fact:
     sysbench_fs_env: {}
   when: sysbench_fstype != 'ext4'
-  tags: ['mkfs']
+  tags: ["mkfs"]
 
 - name: Display the filesystem options and environment variable for the current host
-  debug:
+  ansible.builtin.debug:
     msg: |
       Sysbench device:    {{ sysbench_device }}
       Sysbench fstype:    {{ sysbench_fstype }}
@@ -75,52 +76,52 @@
       Sysbench label:     {{ sysbench_label }}
       Sysbench mount:     {{ sysbench_mnt }}
       Sysbench env:       {{ sysbench_fs_env }}
-  tags: ['debug']
+  tags: ["debug"]
 
 - name: Fail if no filesystem command is found for the host
-  fail:
+  ansible.builtin.fail:
     msg: "No filesystem configuration command found for the current host: {{ ansible_host }}"
   when: filesystem_command_for_host is undefined
-  tags: ['mkfs']
+  tags: ["mkfs"]
 
 - name: Remove any old sysbench container
-  tags: ['post_entrypoint', 'clean' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["post_entrypoint", "clean"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container:
     name: "{{ sysbench_container_name }}"
     image: "{{ sysbench_container_image_name }}"
     state: absent
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Remove any old MySQL container
-  tags: ['post_entrypoint', 'clean' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["post_entrypoint", "clean"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container:
     name: "{{ sysbench_mysql_container_name }}"
     image: "{{ sysbench_mysql_container_image_string }}"
     state: absent
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Unmount {{ sysbench_mnt }}
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  ansible.builtin.mount:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.posix.mount:
     path: "{{ sysbench_mnt }}"
     state: unmounted
-  tags: ['clean', 'mkfs']
+  tags: ["clean", "mkfs"]
 
 - name: Wipe filesystem signatures from the device
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.command:
     cmd: "wipefs --all {{ sysbench_device }}"
-  tags: ['clean', 'mkfs']
+  tags: ["clean", "mkfs"]
 
 - name: Create the filesystem we'll use to place the database under test
   ansible.builtin.include_role:
@@ -132,77 +133,78 @@
     disk_setup_path: "{{ sysbench_mnt }}"
     disk_setup_fs_opts: "{{ sysbench_fs_opts }}"
     disk_setup_env: "{{ sysbench_fs_env }}"
-  tags: ['clean', 'mkfs']
+  tags: ["clean", "mkfs"]
 
 - name: Set sysbench_mysql_innodb_doublewrite based on ansible_host
-  tags: ['vars' ]
-  set_fact:
+  tags: ["vars"]
+  ansible.builtin.set_fact:
     sysbench_host_is_baseline: "{{ False if ansible_host is search('-dev$') else True }}"
     sysbench_mysql_innodb_doublewrite: "{{ '0' if ansible_host is search('-dev$') else '1' }}"
   when:
-    - 'sysbench_disable_doublewrite_auto|bool'
+    - "sysbench_disable_doublewrite_auto|bool"
 
 - name: Set sysbench_mysql_innodb_doublewrite based on ansible_host
-  tags: ['vars' ]
-  set_fact:
-    sysbench_mysql_innodb_doublewrite: '0'
+  tags: ["vars"]
+  ansible.builtin.set_fact:
+    sysbench_mysql_innodb_doublewrite: "0"
   when:
-    - 'sysbench_disable_doublewrite_always|bool'
+    - "sysbench_disable_doublewrite_always|bool"
 
 - name: Generate MySQL client configuration file from template
-  tags: ['setup']
+  tags: ["setup"]
   ansible.builtin.template:
     src: "{{ sysbench_mysql_container_host_client_config_path | basename }}.j2"
     dest: "{{ sysbench_mysql_container_host_client_config_path }}"
     mode: "u=rw,g=r,o=r"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Generate MySQL server configuration file from template
-  tags: ['setup']
+  tags: ["setup"]
   ansible.builtin.template:
     src: "{{ sysbench_mysql_container_host_config_path | basename }}.j2"
     dest: "{{ sysbench_mysql_container_host_config_path }}"
     mode: "u=rw,g=r,o=r"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Create a few directories needed for telemetry inside the docker container
-  tags: [ 'setup' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["setup"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ item }}"
     state: directory
   with_items:
     - "{{ sysbench_mysql_container_host_root_path }}/.mysqlsh/"
 
-- name: git clone our mysqlsh plugin for telemetry
-  tags: ['setup']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+- name: Git clone our mysqlsh plugin for telemetry
+  tags: ["setup"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   environment:
-    GIT_SSL_NO_VERIFY:  true
-  git:
+    GIT_SSL_NO_VERIFY: true
+  ansible.builtin.git:
     repo: "https://github.com/lefred/mysqlshell-plugins.git"
     dest: "{{ sysbench_mysql_container_host_root_path }}/.mysqlsh/plugins/"
-    update: yes
+    update: true
     version: master
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Get used target kernel version
-  tags: [ 'db_start' ]
-  command: "uname -r"
+  tags: ["db_start"]
+  ansible.builtin.command: "uname -r"
+  changed_when: false
   register: uname_cmd
 
 - name: Store last kernel variable
-  set_fact:
-    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\",'') }}"
-  tags: ['db_start']
+  ansible.builtin.set_fact:
+    last_kernel: "{{ uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\", '') }}"
+  tags: ["db_start"]
   run_once: true
 
 - name: Ensure the results directory exists on the localhost
-  tags: ['db_start']
+  tags: ["db_start"]
   local_action: file
   args:
     path: "{{ topdir_path }}/workflows/sysbench/results/"
@@ -210,30 +212,36 @@
   run_once: true
 
 - name: Ensure the results directory exists on the localhost for each node locally
-  tags: ['db_start']
+  tags: ["db_start"]
   local_action: file
   args:
     path: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/"
     state: directory
 
 - name: Document used target kernel version
-  local_action: "shell echo {{ last_kernel }} > {{ topdir_path }}/workflows/sysbench/results/last-kernel.txt"
-  tags: ['db_start']
+  ansible.builtin.shell: echo {{ last_kernel }} > {{ topdir_path }}/workflows/sysbench/results/last-kernel.txt
+  changed_when: false
+  delegate_to: localhost
+  tags: ["db_start"]
   run_once: true
 
 - name: Document double write buffer setting on node
-  local_action: "shell echo {{ sysbench_mysql_innodb_doublewrite }} > {{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/innodb_doublewrite.txt"
-  tags: ['db_start']
+  ansible.builtin.shell: echo {{ sysbench_mysql_innodb_doublewrite }} > {{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/innodb_doublewrite.txt
+  changed_when: false
+  delegate_to: localhost
+  tags: ["db_start"]
 
 - name: Document db page size setting on node
-  local_action: "shell echo {{ sysbench_db_page_size }} > {{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/innodb_page_size.txt"
-  tags: ['db_start']
+  ansible.builtin.shell: echo {{ sysbench_db_page_size }} > {{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/innodb_page_size.txt
+  changed_when: false
+  delegate_to: localhost
+  tags: ["db_start"]
 
 - name: Start MySQL Docker container
-  tags: ['db_start']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["db_start"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container:
     name: "{{ sysbench_mysql_container_name }}"
     image: "{{ sysbench_mysql_container_image_string }}"
@@ -251,187 +259,187 @@
       MYSQL_DATABASE: "{{ sysbench_db_name }}"
       MYSQL_ROOT_PASSWORD: "{{ sysbench_root_db_password }}"
       PYTHONPATH: "{{ sysbench_mysql_container_python_path }}"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Wait for for it... (MySQL data port to be up)
-  tags: ['db_start']
+  tags: ["db_start"]
   ansible.builtin.wait_for:
     port: "{{ sysbench_local_db_port }}"
     timeout: 20
     state: started
 
 - name: Wait for MySQL socket file inside Docker container
-  tags: ['db_start']
-  become: yes
-  become_method: sudo
+  tags: ["db_start"]
+  become: true
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_mysql_container_name }}"
     command: /bin/bash -c "test -S /var/lib/mysql/mysql.sock"
   register: result
-  retries: 12  # Retry up to 12 times
-  delay: 5  # Delay 5 seconds between retries
+  retries: 12 # Retry up to 12 times
+  delay: 5 # Delay 5 seconds between retries
   until: result.rc == 0
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Verify MySQL client works inside Docker container using explicit socket
-  tags: ['db_start']
-  become: yes
-  become_method: sudo
+  tags: ["db_start"]
+  become: true
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_mysql_container_name }}"
     command: mysql --socket=/var/lib/mysql/mysql.sock -e "SHOW DATABASES;"
   register: mysql_socket_output_explicit
   ignore_errors: true
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Save MySQL client explicit socket test output to a file on the host
-  tags: ['db_start']
-  become: yes
-  become_method: sudo
-  copy:
+  tags: ["db_start"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ mysql_socket_output_explicit.stdout }}"
     dest: "{{ sysbench_docker_telemetry_path }}/root-setup-mysql-client-explicit-test.txt"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Verify MySQL client works on server and capture output
-  tags: ['db_start']
-  become: yes
-  become_method: sudo
+  tags: ["db_start"]
+  become: true
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_mysql_container_name }}"
     command: mysql -h localhost -e "SHOW DATABASES;"
   register: mysql_socket_output
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Save MySQL client socket test output to a file on the host
-  tags: ['db_start']
-  become: yes
-  become_method: sudo
-  copy:
+  tags: ["db_start"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ mysql_socket_output.stdout }}"
     dest: "{{ sysbench_docker_telemetry_path }}/root-setup-mysql-client-test.txt"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Add sysbench test user using the MySQL container
-  tags: ['post_entrypoint']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["post_entrypoint"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_mysql_container_name }}"
     command: mysql -e "CREATE USER {{ sysbench_db_username }}@'%' IDENTIFIED WITH 'mysql_native_password' BY '{{ sysbench_db_password }}';"
   register: mysql_add_sysbench_user
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Save MySQL output of adding sysbench user
-  tags: ['post_entrypoint']
-  become: yes
-  become_method: sudo
-  copy:
+  tags: ["post_entrypoint"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ mysql_add_sysbench_user.stdout }}"
     dest: "{{ sysbench_docker_telemetry_path }}/root-setup-0001-add-user.txt"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Grant sysbench test user privileges using the MySQL container
-  tags: ['post_entrypoint']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["post_entrypoint"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_mysql_container_name }}"
     command: mysql -e "GRANT ALL PRIVILEGES ON {{ sysbench_db_name }}.* to {{ sysbench_db_username }}@'%';"
   register: mysql_sysbench_privs
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Save MySQL output of granting all privileges to sysbench user
-  tags: ['post_entrypoint']
-  become: yes
-  become_method: sudo
-  copy:
+  tags: ["post_entrypoint"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ mysql_sysbench_privs.stdout }}"
     dest: "{{ sysbench_docker_telemetry_path }}/root-setup-0002-grant-privs-user.txt"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Flush privileges
-  tags: ['post_entrypoint']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["post_entrypoint"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_mysql_container_name }}"
     command: mysql -e "FLUSH PRIVILEGES;"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Install pip using MySQL container
-  tags: ['post_entrypoint']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["post_entrypoint"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_mysql_container_name }}"
     command: microdnf install -y python-pip
   register: mysql_pip
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Save MySQL output of installing pip
-  tags: ['post_entrypoint']
-  become: yes
-  become_method: sudo
-  copy:
+  tags: ["post_entrypoint"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ mysql_pip.stdout }}"
     dest: "{{ sysbench_docker_telemetry_path }}/root-setup-0003-install-python-pip.txt"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Install Python packages we need for telemetry pip using the MySQL container
-  tags: ['post_entrypoint']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["post_entrypoint"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_mysql_container_name }}"
     command: pip install pandas matplotlib
     env:
       PYTHONPATH: "{{ sysbench_mysql_container_python_path }}"
   register: mysql_pip_install_deps
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Save MySQL output of installing telemetry reqs with pip
-  tags: ['post_entrypoint']
-  become: yes
-  become_method: sudo
-  copy:
+  tags: ["post_entrypoint"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ mysql_pip_install_deps.stdout }}"
     dest: "{{ sysbench_docker_telemetry_path }}/root-setup-0004-install-telemetry-reqs.txt"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Ensure sysbench user is present on the mysql container
-  tags: ['post_entrypoint']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["post_entrypoint"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_mysql_container_name }}"
     command: mysql -e "SELECT user, host, plugin FROM mysql.user WHERE user = '{{ sysbench_db_username }}' AND plugin = 'mysql_native_password';"
   register: user_check_result
   failed_when: user_check_result.stdout.find(sysbench_db_username) == -1
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Remove the sysbench container
-  tags: ['populate_sbtest']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["populate_sbtest"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container:
     name: "{{ sysbench_container_name }}"
     image: "{{ sysbench_container_image_name }}"
     state: absent
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Start a sysbench container we will re-use for population and running the test
-  tags: ['populate_sbtest']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["populate_sbtest"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container:
     name: "{{ sysbench_container_name }}"
     image: "{{ sysbench_container_image_name }}"
@@ -441,29 +449,29 @@
     state: started
     detach: true
     restart_policy: unless-stopped
-    command: "tail -f /dev/null"  # Keeps the container running
-  when: 'sysbench_type_mysql_docker|bool'
+    command: "tail -f /dev/null" # Keeps the container running
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Wait for the sysbench container to be in running state
-  tags: ['populate_sbtest']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["populate_sbtest"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_info:
     name: "{{ sysbench_container_name }}"
   register: sysbench_container_status
   until: sysbench_container_status.container is defined and sysbench_container_status.container.State.Running
   retries: 5
   delay: 5
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 # Keep this at threads=1 as multiple threads don't work when building the
 # initial database.
 - name: Use the sysbench container to populate the sysbench database
-  tags: [ 'populate_sbtest' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["populate_sbtest"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_container_name }}"
     command: |
@@ -481,25 +489,25 @@
       --mysql-password={{ sysbench_db_password }}
       run
   register: sysbench_init_pop
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Save the output of popuating the initial sysench database
-  tags: ['post_entrypoint']
-  become: yes
-  become_method: sudo
-  copy:
+  tags: ["post_entrypoint"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.copy:
     content: "{{ sysbench_init_pop.stdout }}"
     dest: "{{ sysbench_docker_telemetry_path }}/sysbench_populate.txt"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 # We use a shell here to be able to directly output to a file instad
 # of saving to an ansible variable with register because we expect this
 # file to be long.
 - name: Run sysbench benchmark workload against MySQL
-  tags: ['run_sysbench']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["run_sysbench"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_container_name }}"
     command: >
@@ -522,13 +530,13 @@
   async: "{{ sysbench_test_duration | int + 10 }}" # Maximum allowed time to complete
   poll: 0 # Run in the background
   register: sysbench_job # Register the job ID
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Collect MySQL telemetry inside the Docker MySQL container at the same time
-  tags: ['telemetry', 'tel' ]
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["telemetry", "tel"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container_exec:
     container: "{{ sysbench_mysql_container_name }}"
     env:
@@ -538,197 +546,199 @@
     command: |
       mysqlsh --execute
       "support.collect(mysql=true, os=true, time={{ sysbench_test_duration | int // 60 }}, outputdir='{{ sysbench_telemetry_path }}')"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Wait for sysbench workload to complete
-  tags: ['run_sysbench']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  async_status:
+  tags: ["run_sysbench"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.async_status:
     jid: "{{ sysbench_job.ansible_job_id }}"
   register: sysbench_result
   until: sysbench_result.finished
-  retries: "{{ sysbench_test_duration | int // 60 }}"  # Retries every minute
-  delay: 60  # Delay between retries (in seconds)
+  retries: "{{ sysbench_test_duration | int // 60 }}" # Retries every minute
+  delay: 60 # Delay between retries (in seconds)
 
 - name: Move sysbench async results file to telemetry
-  tags: ['run_sysbench']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  command: mv "{{ sysbench_result.results_file }}" "{{ sysbench_telemetry_path }}/sysbench_output.txt"
-
+  tags: ["run_sysbench"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: mv "{{ sysbench_result.results_file }}" "{{ sysbench_telemetry_path }}/sysbench_output.txt"
 - name: Fetch sysbench container logs
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  tags: ['run_sysbench']
-  ansible.builtin.shell:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  tags: ["run_sysbench"]
+  ansible.builtin.command:
     cmd: "docker logs {{ sysbench_container_name }}"
   register: sysbench_logs
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Save sysbench logs to a file on the local machine
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  tags: ['run_sysbench']
-  copy:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  tags: ["run_sysbench"]
+  ansible.builtin.copy:
     content: "{{ sysbench_logs.stdout }}"
     dest: "{{ sysbench_telemetry_path }}/docker-sysbench-results-{{ ansible_date_time.iso8601 }}.log"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Collect sysbench docker logs for MySQL container
-  tags: ['logs']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  ansible.builtin.shell:
+  tags: ["logs"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command:
     cmd: "docker logs {{ sysbench_mysql_container_name }}"
   register: sysbench_mysql_container_logs
   changed_when: false
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Save docker MySQL logs on node
-  tags: ['logs']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["logs"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.copy:
     content: "{{ sysbench_mysql_container_logs.stdout }}"
-    dest: "{{ sysbench_telemetry_path}}/docker-mysql-results-{{ ansible_date_time.iso8601 }}.log"
+    dest: "{{ sysbench_telemetry_path }}/docker-mysql-results-{{ ansible_date_time.iso8601 }}.log"
     mode: "u=rw,g=r,o=r"
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Remove the sysbench container which ran the benchmark
-  tags: ['run_sysbench']
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
+  tags: ["run_sysbench"]
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   community.docker.docker_container:
     name: "{{ sysbench_container_name }}"
     image: "{{ sysbench_container_image_name }}"
     state: absent
-  when: 'sysbench_type_mysql_docker|bool'
+  when: "sysbench_type_mysql_docker|bool"
 
 - name: Copy telemetry data from each node to the localhost
-  tags: ['results']
-  synchronize:
+  tags: ["results"]
+  ansible.posix.synchronize:
     src: "{{ sysbench_telemetry_path }}/"
     dest: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/"
     mode: pull
-    recursive: yes
+    recursive: true
     rsync_opts:
       - "--ignore-existing"
   delegate_to: localhost
   become: false
 
 - name: Gather kernel logs from each node
-  tags: ['results']
-  become: yes
-  become_method: sudo
-  command: journalctl -k
+  tags: ["results"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: journalctl -k
   register: journal_cmd
 
 - name: Save kernel logs to local file per node
-  copy:
+  ansible.builtin.copy:
     content: "{{ journal_cmd.stdout }}"
     dest: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/dmesg.txt"
   delegate_to: localhost
-  tags: ['results']
+  tags: ["results"]
 
 - name: Gather memory fragmentation index on each node
-  tags: ['results']
-  become: yes
-  become_method: sudo
-  command: cat /sys/kernel/debug/extfrag/extfrag_index
+  tags: ["results"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: cat /sys/kernel/debug/extfrag/extfrag_index
+  changed_when: false
   register: extfrag_index_cmd
 
 - name: Save memory fragmentation index per node
-  copy:
+  ansible.builtin.copy:
     content: "{{ extfrag_index_cmd.stdout }}"
     dest: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/extfrag_index.txt"
   delegate_to: localhost
-  tags: ['results']
+  tags: ["results"]
 
 - name: Gather memory unusable index on each node
-  tags: ['results']
-  become: yes
-  become_method: sudo
-  command: cat /sys/kernel/debug/extfrag/unusable_index
+  tags: ["results"]
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.command: cat /sys/kernel/debug/extfrag/unusable_index
+  changed_when: false
   register: unusable_index_cmd
 
 - name: Save memory memory unusable index per node
-  copy:
+  ansible.builtin.copy:
     content: "{{ unusable_index_cmd.stdout }}"
     dest: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/unusable_index.txt"
   delegate_to: localhost
-  tags: ['results']
+  tags: ["results"]
 
 - name: Remove all results and telemetry directories on the node
-  become: yes
-  become_flags: 'su - -c'
-  become_method: sudo
-  file:
+  become: true
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
+  ansible.builtin.file:
     path: "{{ item }}"
     state: absent
   loop:
     - "{{ sysbench_telemetry_path }}/"
   loop_control:
     label: "Removing {{ item }}"
-  tags: ['clean']
+  tags: ["clean"]
 
 - name: Remove all results and telemetry directories on the host
-  become: yes
-  file:
+  become: true
+  ansible.builtin.file:
     path: "{{ item }}"
     state: absent
   loop:
     - "{{ topdir_path }}/workflows/sysbench/results/"
   delegate_to: localhost
-  tags: ['clean']
+  tags: ["clean"]
 
 - name: Find directories under sysbench results target
   vars:
     sysbench_results_target: "{{ topdir_path }}/workflows/sysbench/results/"
-  find:
+  ansible.builtin.find:
     paths: "{{ sysbench_results_target }}"
-    recurse: no
+    recurse: false
     file_type: directory
   register: sysbench_results_dirs
   delegate_to: localhost
-  tags: [ 'plot' ]
+  tags: ["plot"]
   when:
-    - 'sysbench_type_mysql_docker|bool'
+    - "sysbench_type_mysql_docker|bool"
 
 - name: Check if sysbench_tps.txt exists in each directory
   vars:
     sysbench_results_target: "{{ topdir_path }}/workflows/sysbench/results/"
-  stat:
+  ansible.builtin.stat:
     path: "{{ sysbench_results_target }}/{{ item.path | basename }}/sysbench_tps.txt"
   register: sysbench_tps_exists
   with_items: "{{ sysbench_results_dirs.files }}"
   loop_control:
     label: "Checking sysbench tps output file exists  {{ item.path }}/sysbench_tps.txt"
   delegate_to: localhost
-  tags: [ 'plot' ]
+  tags: ["plot"]
   when:
-    - 'sysbench_type_mysql_docker|bool'
+    - "sysbench_type_mysql_docker|bool"
 
 - name: Plot sysbench tps plot for each node
   vars:
     sysbench_results_target: "{{ topdir_path }}/workflows/sysbench/results/"
     host_dir: "{{ item.item.path | basename }}"
     output_image: "{{ sysbench_results_target }}/{{ host_dir }}/sysbench_tps_plot.png"
-  command: "./python/workflows/sysbench/sysbench-tps-plot.py {{ sysbench_results_target }}/{{ host_dir }}/sysbench_tps.txt --output {{ output_image }}"
-  tags: [ 'plot' ]
+  ansible.builtin.command: "./python/workflows/sysbench/sysbench-tps-plot.py {{ sysbench_results_target }}/{{ host_dir }}/sysbench_tps.txt --output {{ output_image
+    }}"
+  tags: ["plot"]
   delegate_to: localhost
   with_items: "{{ sysbench_tps_exists.results }}"
   loop_control:
     label: "Generating plot for {{ output_image }}"
   when:
-    - 'sysbench_type_mysql_docker|bool'
+    - "sysbench_type_mysql_docker|bool"
     - "item.stat.exists"
 
 - name: Plot sysbench tps non-atomic Vs atomic
@@ -742,15 +752,16 @@
     legend2: "{{ fs_type }} innodb_doublewrite=OFF"
     file2: "{{ sysbench_results_target }}/{{ dev_host }}/sysbench_tps.txt"
     output_image: "{{ sysbench_results_target }}a_vs_b.png"
-  command: "./python/workflows/sysbench/sysbench-tps-compare.py --legend1 \"{{ legend1 }}\" --legend2 \"{{ legend2 }}\" --output {{ output_image }} {{ file1 }} {{ file2 }}"
-  tags: [ 'plot' ]
+  ansible.builtin.command: "./python/workflows/sysbench/sysbench-tps-compare.py --legend1 \"{{ legend1 }}\" --legend2 \"{{ legend2 }}\" --output {{ output_image }}
+    {{ file1 }} {{ file2 }}"
+  tags: ["plot"]
   delegate_to: localhost
   with_items:
     - "{{ hostvars[inventory_hostname]['groups']['baseline'] }}"
   when:
-    - 'sysbench_type_mysql_docker|bool'
-    - 'kdevops_baseline_and_dev|bool'
-    - 'sysbench_host_is_baseline|bool'
+    - "sysbench_type_mysql_docker|bool"
+    - "kdevops_baseline_and_dev|bool"
+    - "sysbench_host_is_baseline|bool"
 
 - name: Plot sysbench TPS variance
   vars:
@@ -762,12 +773,13 @@
     dev_host: "{{ item }}-dev"
     legend2: "{{ fs_type }} innodb_doublewrite=OFF"
     file2: "{{ sysbench_results_target }}/{{ dev_host }}/sysbench_tps.txt"
-  command: "./python/workflows/sysbench/sysbench-tps-variance.py --legend1 \"{{ legend1 }}\" --legend2 \"{{ legend2 }}\" --dir {{ sysbench_results_target }} {{ file1 }} {{ file2}}"
-  tags: [ 'plot' ]
+  ansible.builtin.command: "./python/workflows/sysbench/sysbench-tps-variance.py --legend1 \"{{ legend1 }}\" --legend2 \"{{ legend2 }}\" --dir {{ sysbench_results_target
+    }} {{ file1 }} {{ file2}}"
+  tags: ["plot"]
   delegate_to: localhost
   with_items:
     - "{{ hostvars[inventory_hostname]['groups']['baseline'] }}"
   when:
-    - 'sysbench_type_mysql_docker|bool'
-    - 'kdevops_baseline_and_dev|bool'
-    - 'sysbench_host_is_baseline|bool'
+    - "sysbench_type_mysql_docker|bool"
+    - "kdevops_baseline_and_dev|bool"
+    - "sysbench_host_is_baseline|bool"
diff --git a/playbooks/roles/sysbench/tasks/postgresql-native/main.yaml b/playbooks/roles/sysbench/tasks/postgresql-native/main.yaml
index 416f137..096bf74 100644
--- a/playbooks/roles/sysbench/tasks/postgresql-native/main.yaml
+++ b/playbooks/roles/sysbench/tasks/postgresql-native/main.yaml
@@ -1,6 +1,6 @@
 ---
 - name: Get the latest PostgreSQL ref
-  tags: ['setup']
+  tags: ["setup"]
   ansible.builtin.shell: |
     set -o pipefail && \
     git ls-remote --tags --sort="-version:refname" \
@@ -15,7 +15,7 @@
   changed_when: false
 
 - name: Git clone PostgreSQL
-  tags: ['setup']
+  tags: ["setup"]
   ansible.builtin.git:
     repo: "https://git.postgresql.org/git/postgresql.git"
     dest: "{{ sysbench_postgresql_repo_path }}"
@@ -25,33 +25,33 @@
     GIT_SSL_NO_VERIFY: "true"
 
 - name: Get number of processing units available
-  tags: ['always']
+  tags: ["always"]
   ansible.builtin.command: nproc --all
   register: _sysbench_punits
   changed_when: _sysbench_punits.rc != 0
 
 - name: Set threads using nproc output
-  tags: ['always']
+  tags: ["always"]
   ansible.builtin.set_fact:
     _sysbench_threads: "{{ _sysbench_punits.stdout }}"
   when:
     - sysbench_threads == 0
 
 - name: Set threads manually
-  tags: ['always']
+  tags: ["always"]
   ansible.builtin.set_fact:
     _sysbench_threads: "{{ sysbench_threads }}"
   when:
     - sysbench_threads != 0
 
 - name: Check if clean is required for PostgreSQL builddir
-  tags: ['setup']
+  tags: ["setup"]
   ansible.builtin.stat:
     path: "{{ sysbench_postgresql_repo_path }}/GNUmakefile"
   register: _sysbench_postgresql_cleanup
 
 - name: Clean PostgreSQL builddir
-  tags: ['setup']
+  tags: ["setup"]
   ansible.builtin.command:
     cmd: |
       make clean
@@ -65,7 +65,7 @@
   ignore_errors: true
 
 - name: Configure PostgreSQL
-  tags: ['setup']
+  tags: ["setup"]
   ansible.builtin.command:
     cmd: >
       ./configure
@@ -77,7 +77,7 @@
   changed_when: _sysbench_postgresql_configure.rc != 0
 
 - name: Build PostgreSQL
-  tags: ['setup']
+  tags: ["setup"]
   community.general.make:
     jobs: "{{ _sysbench_punits.stdout }}"
   args:
@@ -85,33 +85,33 @@
   changed_when: false
 
 - name: Install PostgreSQL
-  tags: ['setup']
+  tags: ["setup"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   community.general.make:
     target: install
   args:
     chdir: "{{ sysbench_postgresql_repo_path }}"
 
 - name: Create PostgreSQL benchmark user
-  tags: ['setup']
+  tags: ["setup"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.user:
     name: "{{ sysbench_postgresql_user }}"
 
 - name: Ensure telemetry data directory exists
-  tags: ['setup', 'db_start']
+  tags: ["setup", "db_start"]
   become: true
-  become_flags: 'su - -c'
-  become_method: sudo
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ sysbench_telemetry_path }}"
     state: directory
     mode: "u=rwx,g=rx,o=rx"
 
 - name: Check if PostgreSQL Server is Running
-  tags: ['always']
+  tags: ["always"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.stat:
@@ -119,7 +119,7 @@
   register: _sysbench_postgresql_stop
 
 - name: Stop the PostgreSQL Server
-  tags: ['always']
+  tags: ["always"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -135,11 +135,12 @@
     - _sysbench_postgresql_stop.stat.exists | bool
 
 - name: Determine filesystem setting used and db page size
-  tags: ['vars']
+  tags: ["vars"]
   vars:
     fs_type_variable: "{{ ansible_host | regex_replace('^' + kdevops_host_prefix + '-', '') | regex_replace('-.+', '') }}"
     fs_command_variable_simple: "sysbench_{{ ansible_host | regex_replace('^' + kdevops_host_prefix + '-', '') | regex_replace('-dev$', '') }}_cmd"
-    fs_command_variable: "{{ fs_command_variable_simple | regex_replace('-', '_') | regex_replace('^sysbench_' + fs_type_variable, fs_type_variable + '_section') }}"
+    fs_command_variable: "{{ fs_command_variable_simple | regex_replace('-', '_') | regex_replace('^sysbench_' + fs_type_variable, fs_type_variable + '_section')
+      }}"
     db_page_size_simple: "sysbench_{{ ansible_host | regex_replace('^' + kdevops_host_prefix + '-', '') | regex_replace('-dev$', '') }}_db_page_size"
     db_page_size_variable: "{{ db_page_size_simple | regex_replace('-', '_') | regex_replace('^sysbench_' + fs_type_variable, fs_type_variable + '_section') }}"
     fs_sector_size_variable: "sysbench_{{ fs_type_variable }}_sector_size"
@@ -154,32 +155,32 @@
     sysbench_db_page_size: "{{ db_page_size }}"
 
 - name: Set filesystem options for XFS with sector size
-  tags: ['mkfs']
+  tags: ["mkfs"]
   ansible.builtin.set_fact:
     sysbench_fs_opts: "{{ sysbench_fs_opts_without_sector_size }} -s size={{ sysbench_fs_sector_size }} -L {{ sysbench_label }}"
   when: sysbench_fstype != 'ext4'
 
 - name: Set filesystem options for ext4 without sector size
-  tags: ['mkfs']
+  tags: ["mkfs"]
   ansible.builtin.set_fact:
     sysbench_fs_opts: "{{ sysbench_fs_opts_without_sector_size }} -L {{ sysbench_label }}"
   when: sysbench_fstype == 'ext4'
 
 - name: Set environment variable for sector size for ext4
-  tags: ['mkfs']
+  tags: ["mkfs"]
   ansible.builtin.set_fact:
     sysbench_fs_env:
       MKE2FS_DEVICE_SECTSIZE: "{{ sysbench_fs_sector_size }}"
   when: sysbench_fstype == 'ext4'
 
 - name: Clear environment variable for non-ext4 filesystems
-  tags: ['mkfs']
+  tags: ["mkfs"]
   ansible.builtin.set_fact:
     sysbench_fs_env: {}
   when: sysbench_fstype != 'ext4'
 
 - name: Display the filesystem options and environment variable for the current host
-  tags: ['debug']
+  tags: ["debug"]
   ansible.builtin.debug:
     msg: |
       Sysbench device:    {{ sysbench_device }}
@@ -190,32 +191,32 @@
       Sysbench env:       {{ sysbench_fs_env }}
 
 - name: Fail if no filesystem command is found for the host
-  tags: ['mkfs']
+  tags: ["mkfs"]
   ansible.builtin.fail:
     msg: "No filesystem configuration command found for the current host: {{ ansible_host }}"
   when: filesystem_command_for_host is undefined
 
 - name: Unmount {{ sysbench_mnt }}
-  tags: ['clean', 'mkfs']
+  tags: ["clean", "mkfs"]
   become: true
-  become_flags: 'su - -c'
-  become_method: sudo
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.posix.mount:
     path: "{{ sysbench_mnt }}"
     state: unmounted
 
 - name: Wipe filesystem signatures from the device
-  tags: ['clean', 'mkfs']
+  tags: ["clean", "mkfs"]
   become: true
-  become_flags: 'su - -c'
-  become_method: sudo
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.command:
     cmd: "wipefs --all {{ sysbench_device }}"
   register: _sysbench_postgresql_wipefs
   changed_when: _sysbench_postgresql_wipefs.rc != 0
 
 - name: Create the filesystem we'll use to place the database under test
-  tags: ['clean', 'mkfs']
+  tags: ["clean", "mkfs"]
   ansible.builtin.include_role:
     name: create_partition
   vars:
@@ -228,7 +229,7 @@
 
 - name: Change ownership of PostgreSQL database under test mount directory
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ sysbench_mnt }}"
     owner: "{{ sysbench_postgresql_user }}"
@@ -236,9 +237,9 @@
     recurse: true
 
 - name: Initialize the PostgreSQL database
-  tags: ['setup']
+  tags: ["setup"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
     /usr/local/pgsql/bin/initdb
@@ -247,7 +248,7 @@
   changed_when: _sysbench_postgresql_initdb.rc != 0
 
 - name: Set sysbench_postgresql_full_page_writes based on ansible_host
-  tags: ['vars']
+  tags: ["vars"]
   ansible.builtin.set_fact:
     sysbench_host_is_baseline: "{{ False if ansible_host is search('-dev$') else True }}"
     sysbench_postgresql_full_page_writes: "{{ 'off' if ansible_host is search('-dev$') else 'on' }}"
@@ -255,16 +256,16 @@
     - sysbench_disable_full_page_writes_auto|bool
 
 - name: Set sysbench_postgresql_full_page_writes based on ansible_host
-  tags: ['vars']
+  tags: ["vars"]
   ansible.builtin.set_fact:
-    sysbench_postgresql_full_page_writes: 'off'
+    sysbench_postgresql_full_page_writes: "off"
   when:
     - sysbench_disable_full_page_writes_always|bool
 
 - name: Generate PostgreSQL configuration file from template
-  tags: ['setup']
+  tags: ["setup"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.template:
     src: "{{ sysbench_postgresql_configuration }}.j2"
@@ -272,45 +273,45 @@
     mode: "u=rw,g=r,o=r"
 
 - name: Get used target kernel version
-  tags: ['db_start']
+  tags: ["db_start"]
   ansible.builtin.command: "uname -r"
   changed_when: false
   register: _uname_cmd
 
 - name: Store last kernel variable
-  tags: ['db_start']
+  tags: ["db_start"]
   ansible.builtin.set_fact:
     last_kernel: "{{ _uname_cmd.stdout_lines | regex_replace('\\]') | regex_replace('\\[') | replace(\"'\", '') }}"
   run_once: true
 
 - name: Ensure the results directory exists on the localhost
-  tags: ['db_start', 'results']
+  tags: ["db_start", "results"]
   delegate_to: localhost
   ansible.builtin.file:
     path: "{{ topdir_path }}/workflows/sysbench/results/"
     state: directory
-    mode: '0755'
+    mode: "0755"
   run_once: true
 
 - name: Ensure the results directory exists on the localhost for each node locally
-  tags: ['db_start', 'results']
+  tags: ["db_start", "results"]
   delegate_to: localhost
   ansible.builtin.file:
     path: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/"
     state: directory
-    mode: '0755'
+    mode: "0755"
 
 - name: Ensure the results directory exists on the localhost for each node locally
-  tags: ['db_start', 'plot']
+  tags: ["db_start", "plot"]
   delegate_to: localhost
   ansible.builtin.file:
     path: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}-ab/"
     state: directory
-    mode: '0755'
+    mode: "0755"
   when: "'-dev' not in inventory_hostname"
 
 - name: Document used target kernel version
-  tags: ['db_start']
+  tags: ["db_start"]
   delegate_to: localhost
   ansible.builtin.shell: |
     echo {{ last_kernel }} > {{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}-ab/last-kernel.txt
@@ -319,21 +320,21 @@
   when: "'-dev' not in inventory_hostname"
 
 - name: Document full_page_writes setting on node
-  tags: ['db_start']
+  tags: ["db_start"]
   delegate_to: localhost
   ansible.builtin.shell: |
     echo {{ sysbench_postgresql_full_page_writes }} > {{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/full_page_writes.txt
   changed_when: false
 
 - name: Document db blocksize setting on node
-  tags: ['db_start']
+  tags: ["db_start"]
   delegate_to: localhost
   ansible.builtin.shell: |
     echo {{ sysbench_db_page_size }} > {{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/postgresql_blocksize.txt
   changed_when: false
 
 - name: Start the PostgreSQL server
-  tags: ['db_start']
+  tags: ["db_start"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -344,7 +345,7 @@
   changed_when: false
 
 - name: Create PostgreSQL database USER
-  tags: ['db_start']
+  tags: ["db_start"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -357,7 +358,7 @@
   changed_when: "'CREATE ROLE' in _sysbench_postgresql_create_user_result.stderr"
 
 - name: Create PostgreSQL database DATABASE
-  tags: ['db_start']
+  tags: ["db_start"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -370,7 +371,7 @@
   changed_when: "'CREATE DATABASE' in _sysbench_postgresql_create_db_result.stderr"
 
 - name: Grant USER privileges to DATABASE
-  tags: ['db_start']
+  tags: ["db_start"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -379,7 +380,7 @@
   changed_when: false
 
 - name: Grant ALL public Privileges to DATABASE
-  tags: ['db_start']
+  tags: ["db_start"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -393,7 +394,7 @@
   changed_when: false
 
 - name: Test and Ensure Permissions are Set Correctly
-  tags: ['db_start']
+  tags: ["db_start"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -413,7 +414,7 @@
 # Keep this at threads=1 as multiple threads don't work when building the
 # initial database.
 - name: Populate sysbench database
-  tags: ['db_start']
+  tags: ["db_start"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -437,16 +438,16 @@
   changed_when: "'CREATE TABLE' in _sysbench_init_pop.stdout"
 
 - name: Save the output of populating the initial sysbench database
-  tags: ['db_start']
+  tags: ["db_start"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.copy:
     content: "{{ _sysbench_init_pop.stdout }}"
     dest: "{{ sysbench_telemetry_path }}/sysbench_populate.txt"
-    mode: '0755'
+    mode: "0755"
 
 - name: Start sysbench run
-  tags: ['run_sysbench']
+  tags: ["run_sysbench"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -471,7 +472,7 @@
   register: sysbench_postgresql_run_output
 
 - name: Stop the PostgreSQL server (Smart Mode)
-  tags: ['run_sysbench']
+  tags: ["run_sysbench"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -488,7 +489,7 @@
   ignore_errors: true
 
 - name: Stop the PostgreSQL server (Fast Mode)
-  tags: ['run_sysbench']
+  tags: ["run_sysbench"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -506,7 +507,7 @@
   ignore_errors: true
 
 - name: Stop the PostgreSQL server (Immediate Mode)
-  tags: ['run_sysbench']
+  tags: ["run_sysbench"]
   become: true
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
@@ -523,19 +524,19 @@
     - _sysbench_postgresql_stop_fast.rc | default(0) != 0
 
 - name: Write sysbench run output to log file
-  tags: ['run_sysbench']
+  tags: ["run_sysbench"]
   become: true
-  become_flags: 'su - -c'
-  become_method: sudo
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.copy:
     content: "{{ sysbench_postgresql_run_output.stdout }}"
     dest: "{{ sysbench_telemetry_path }}/sysbench_tps.txt"
-    mode: '0755'
+    mode: "0755"
 
 - name: Collect PostgreSQL database cluster control information
-  tags: ['logs']
+  tags: ["logs"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   become_user: "{{ sysbench_postgresql_user }}"
   ansible.builtin.command: >
     /usr/local/pgsql/bin/pg_controldata
@@ -544,20 +545,20 @@
   changed_when: false
 
 - name: Write PostgreSQL database cluster control information to log file
-  tags: ['logs']
+  tags: ["logs"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   become_user: root
   ansible.builtin.copy:
     content: "{{ _sysbench_postgresql_controldata_output.stdout }}"
     dest: "{{ sysbench_postgresql_controldata_logfile }}"
-    mode: '0755'
+    mode: "0755"
     owner: "{{ sysbench_postgresql_user }}"
     group: "{{ sysbench_postgresql_user }}"
     remote_src: true
 
 - name: Copy telemetry data from each node to the localhost
-  tags: ['results']
+  tags: ["results"]
   ansible.posix.synchronize:
     src: "{{ sysbench_telemetry_path }}/"
     dest: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/"
@@ -569,79 +570,79 @@
   become: false
 
 - name: Gather kernel logs from each node
-  tags: ['results']
+  tags: ["results"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: journalctl -k
   changed_when: false
   register: journal_cmd
 
 - name: Save kernel logs to local file per node
-  tags: ['results']
+  tags: ["results"]
   ansible.builtin.copy:
     content: "{{ journal_cmd.stdout }}"
     dest: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/dmesg.txt"
-    mode: '0755'
+    mode: "0755"
   delegate_to: localhost
 
 - name: Gather memory fragmentation index on each node
-  tags: ['results']
+  tags: ["results"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: cat /sys/kernel/debug/extfrag/extfrag_index
   changed_when: false
   register: extfrag_index_cmd
 
 - name: Save memory fragmentation index per node
-  tags: ['results']
+  tags: ["results"]
   ansible.builtin.copy:
     content: "{{ extfrag_index_cmd.stdout }}"
     dest: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/extfrag_index.txt"
-    mode: '0755'
+    mode: "0755"
   delegate_to: localhost
 
 - name: Gather memory unusable index on each node
-  tags: ['results']
+  tags: ["results"]
   become: true
-  become_method: sudo
+  become_method: ansible.builtin.sudo
   ansible.builtin.command: cat /sys/kernel/debug/extfrag/unusable_index
   changed_when: false
   register: unusable_index_cmd
 
 - name: Save memory unusable index per node
-  tags: ['results']
+  tags: ["results"]
   ansible.builtin.copy:
     content: "{{ unusable_index_cmd.stdout }}"
     dest: "{{ topdir_path }}/workflows/sysbench/results/{{ inventory_hostname }}/unusable_index.txt"
-    mode: '0755'
+    mode: "0755"
   delegate_to: localhost
 
 - name: Remove all results and telemetry directories on the node
-  tags: ['clean']
+  tags: ["clean"]
   become: true
-  become_flags: 'su - -c'
-  become_method: sudo
+  become_flags: "su - -c"
+  become_method: ansible.builtin.sudo
   ansible.builtin.file:
     path: "{{ item }}"
     state: absent
-    mode: '0755'
+    mode: "0755"
   loop:
     - "{{ sysbench_telemetry_path }}/"
   loop_control:
     label: "Removing {{ item }}"
 
 - name: Remove all results and telemetry directories on the host
-  tags: ['clean']
+  tags: ["clean"]
   ansible.builtin.file:
     path: "{{ item }}"
     state: absent
-    mode: '0755'
+    mode: "0755"
   loop:
     - "{{ topdir_path }}/workflows/sysbench/results/"
   delegate_to: localhost
 
 - name: Find directories under sysbench results target
-  tags: ['plot']
+  tags: ["plot"]
   vars:
     sysbench_results_target: "{{ topdir_path }}/workflows/sysbench/results/"
   ansible.builtin.find:
@@ -652,7 +653,7 @@
   delegate_to: localhost
 
 - name: Check if sysbench_tps.txt exists in each directory
-  tags: ['plot']
+  tags: ["plot"]
   vars:
     sysbench_results_target: "{{ topdir_path }}/workflows/sysbench/results/"
   ansible.builtin.stat:
@@ -664,7 +665,7 @@
   delegate_to: localhost
 
 - name: Plot sysbench tps plot for each node
-  tags: ['plot']
+  tags: ["plot"]
   vars:
     sysbench_results_target: "{{ topdir_path }}/workflows/sysbench/results/"
     host_dir: "{{ item.item.path | basename }}"
@@ -682,7 +683,7 @@
     - "item.stat.exists"
 
 - name: Plot sysbench tps non-atomic Vs atomic
-  tags: ['plot']
+  tags: ["plot"]
   vars:
     sysbench_results_target: "{{ topdir_path }}/workflows/sysbench/results/"
     sysbench_results_target_ab: "{{ sysbench_results_target }}{{ item }}-ab/"
@@ -705,11 +706,11 @@
   with_items:
     - "{{ hostvars[inventory_hostname]['groups']['baseline'] }}"
   when:
-    - 'kdevops_baseline_and_dev|bool'
-    - 'sysbench_host_is_baseline|bool'
+    - "kdevops_baseline_and_dev|bool"
+    - "sysbench_host_is_baseline|bool"
 
 - name: Plot sysbench TPS variance
-  tags: ['plot']
+  tags: ["plot"]
   vars:
     sysbench_results_target: "{{ topdir_path }}/workflows/sysbench/results/"
     sysbench_results_target_ab: "{{ sysbench_results_target }}{{ item }}-ab/"
@@ -731,5 +732,5 @@
   with_items:
     - "{{ hostvars[inventory_hostname]['groups']['baseline'] }}"
   when:
-    - 'kdevops_baseline_and_dev|bool'
-    - 'sysbench_host_is_baseline|bool'
+    - "kdevops_baseline_and_dev|bool"
+    - "sysbench_host_is_baseline|bool"
diff --git a/playbooks/roles/update_etc_hosts/defaults/main.yml b/playbooks/roles/update_etc_hosts/defaults/main.yml
index 88e24b2..7d72da2 100644
--- a/playbooks/roles/update_etc_hosts/defaults/main.yml
+++ b/playbooks/roles/update_etc_hosts/defaults/main.yml
@@ -1,4 +1,5 @@
+---
 # SPDX-License-Identifier GPL-2.0+
 #
 terraform_private_net_enabled: false
-kdevops_enable_guestfs: False
+kdevops_enable_guestfs: false
diff --git a/playbooks/roles/update_etc_hosts/tasks/main.yml b/playbooks/roles/update_etc_hosts/tasks/main.yml
index 2b9af91..23e9a64 100644
--- a/playbooks/roles/update_etc_hosts/tasks/main.yml
+++ b/playbooks/roles/update_etc_hosts/tasks/main.yml
@@ -1,45 +1,46 @@
 ---
 - name: Import optional extra_args file
-  include_vars: "{{ item }}"
-  ignore_errors: yes
+  ansible.builtin.include_vars: "{{ item }}"
+  ignore_errors: true
   with_first_found:
     - files:
-      - "../extra_vars.yml"
-      - "../extra_vars.yaml"
-      - "../extra_vars.json"
+        - "../extra_vars.yml"
+        - "../extra_vars.yaml"
+        - "../extra_vars.json"
       skip: true
   tags: vars
 
 - name: Wait for target nodes to become reachable
-  wait_for_connection:
+  ansible.builtin.wait_for_connection:
 
 - name: Gather network facts
   ansible.builtin.setup:
     gather_subset:
-      - 'network'
+      - "network"
 
 - name: Build network address
-  set_fact:
+  ansible.builtin.set_fact:
     private_network: "{{ terraform_private_net_prefix }}/{{ terraform_private_net_mask }}"
   when:
     - terraform_private_net_enabled
 
 - name: Build list of hosts
-  set_fact:
+  ansible.builtin.set_fact:
     ueh_hosts: "{{ ansible_play_hosts_all | difference([inventory_hostname]) }}"
 
-- debug:
+- name: Debug information
+  ansible.builtin.debug:
     var: ueh_hosts
 
 - name: Stat /etc/cloud/cloud.cfg.d
-  stat:
+  ansible.builtin.stat:
     path: /etc/cloud/cloud.cfg.d
   register: cloud_init
 
 - name: Disable cloud-init hosts management
-  become: yes
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     dest: /etc/cloud/cloud.cfg.d/99-kdevops-manage-net-disable
     line: "manage_etc_hosts: false"
     create: true
@@ -47,11 +48,11 @@
     - cloud_init.stat.exists
 
 - name: Add IP address of all hosts to all hosts
-  become: yes
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     dest: /etc/hosts
-    regexp: '.*{{ item }}$'
+    regexp: ".*{{ item }}$"
     line: "{{ hostvars[item].ansible_all_ipv4_addresses | ipaddr(private_network) | first }} {{ item }}"
     state: present
   with_items: "{{ ueh_hosts }}"
@@ -59,25 +60,25 @@
     - terraform_private_net_enabled
 
 - name: Add IP address of all hosts to all hosts
-  become: yes
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     dest: /etc/hosts
-    regexp: '.*{{ item }}$'
-    line: "{{ hostvars[item].ansible_all_ipv4_addresses | first }} {{item}}"
+    regexp: ".*{{ item }}$"
+    line: "{{ hostvars[item].ansible_all_ipv4_addresses | first }} {{ item }}"
     state: present
   with_items: "{{ ueh_hosts }}"
   when:
     - not terraform_private_net_enabled
 
 - name: Fix up hostname on Debian guestfs hosts
-  become: yes
-  become_method: sudo
-  lineinfile:
+  become: true
+  become_method: ansible.builtin.sudo
+  ansible.builtin.lineinfile:
     path: /etc/hosts
-    regexp: '^(127\.0\.1\.1)(\s+)unassigned-hostname\.unassigned-domain\s+({{ ansible_hostname }})$'
-    backrefs: yes
-    line: '\1\2\3'
+    regexp: "^(127\\.0\\.1\\.1)(\\s+)unassigned-hostname\\.unassigned-domain\\s+({{ ansible_hostname }})$"
+    backrefs: true
+    line: "\\1\\2\\3"
   when:
     - ansible_os_family == 'Debian'
     - kdevops_enable_guestfs|bool
diff --git a/playbooks/roles/update_ssh_config_guestfs/tasks/main.yml b/playbooks/roles/update_ssh_config_guestfs/tasks/main.yml
index 6606a6c..818c913 100644
--- a/playbooks/roles/update_ssh_config_guestfs/tasks/main.yml
+++ b/playbooks/roles/update_ssh_config_guestfs/tasks/main.yml
@@ -1,26 +1,27 @@
+---
 - name: Check if the ssh config file exists
-  stat:
+  ansible.builtin.stat:
     path: "~/.ssh/config"
   register: ssh_config
 
 # Check if the include directive is already presetn
 - name: Check if the kdevops include directive was used
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: ~/.ssh/config
     regexp: "Include ~/.ssh/config_kdevops_*"
     state: absent
-  check_mode: yes
+  check_mode: true
   changed_when: false
   register: kdevops_ssh_include
   when: ssh_config.stat.exists
 
 # Check if the the kdevops_version was added in a comment
 - name: Check if the new include directive was used with a kdevops_version comment
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: ~/.ssh/config
     regexp: "^#(.*)kdevops_version(.*)"
     state: absent
-  check_mode: yes
+  check_mode: true
   changed_when: false
   register: fixed_ssh_entry
   when: ssh_config.stat.exists
@@ -28,7 +29,7 @@
 # If both the include directive was found and kdevops version comment was found
 # we bail right away to avoid updating the ssh config file always.
 - name: Check if the new fixed include directive was used
-  meta: end_play
+  ansible.builtin.meta: end_play
   when:
     - ssh_config.stat.exists
     - kdevops_ssh_include.found | bool
@@ -38,35 +39,36 @@
 # line was not found. So remove old stale include directives which may be
 # buggy.
 - name: Remove buggy stale include directive to ~/.ssh/config without a new line
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: ~/.ssh/config
     line: "Include ~/.ssh/config_kdevops_*"
     state: absent
   when: ssh_config.stat.exists
 
 - name: Remove any stale kdevops comments
-  lineinfile:
+  ansible.builtin.lineinfile:
     path: ~/.ssh/config
     regexp: "^#(.*)kdevops(.*)"
     state: absent
   when: ssh_config.stat.exists
 
 - name: Remove any extra new lines
-  replace:
+  ansible.builtin.replace:
     path: ~/.ssh/config
-    regexp: '(^\s*$)'
-    replace: ''
+    regexp: "(^\\s*$)"
+    replace: ""
   when: ssh_config.stat.exists
 
 # ssh include directives must follow a new line.
 - name: Add Include directive to ~/.ssh/config
-  blockinfile:
+  ansible.builtin.blockinfile:
     path: ~/.ssh/config
     insertbefore: BOF
     marker: "{mark}"
     marker_begin: "# Automatically added by kdevops\n# kdevops_version: {{ kdevops_version }}"
     marker_end: ""
     create: true
+    mode: "0600"
     block: |
       Include ~/.ssh/config_kdevops_*
 
diff --git a/playbooks/roles/volume_group/tasks/main.yml b/playbooks/roles/volume_group/tasks/main.yml
index 4cafe15..ef7876b 100644
--- a/playbooks/roles/volume_group/tasks/main.yml
+++ b/playbooks/roles/volume_group/tasks/main.yml
@@ -8,7 +8,7 @@
 
 - name: Install dependencies for LVM support
   become: true
-  become_flags: 'su - -c'
+  become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
     name:
diff --git a/playbooks/roles/volume_group/tasks/terraform/aws.yml b/playbooks/roles/volume_group/tasks/terraform/aws.yml
index 0d9e6f7..ee7bfa0 100644
--- a/playbooks/roles/volume_group/tasks/terraform/aws.yml
+++ b/playbooks/roles/volume_group/tasks/terraform/aws.yml
@@ -34,9 +34,8 @@
     block_device_dict: "{{ terraform_output.stdout | from_json }}"
     local_map: "{{ block_device_dict[inventory_hostname] }}"
   ansible.builtin.set_fact:
-    ebs_volume_ids: "{{ ebs_volume_ids + [ 'nvme-Amazon_Elastic_Block_Store_' + item.value | regex_replace('-', '') ] }}"
-  when:
-    item.key != "/dev/sdf"
+    ebs_volume_ids: "{{ ebs_volume_ids + ['nvme-Amazon_Elastic_Block_Store_' + item.value | regex_replace('-', '')] }}"
+  when: item.key != "/dev/sdf"
   with_dict: "{{ local_map }}"
 
 - name: Add unused EBS volumes to the volume list
diff --git a/playbooks/steady_state.yml b/playbooks/steady_state.yml
index 0dd400d..140eef6 100644
--- a/playbooks/steady_state.yml
+++ b/playbooks/steady_state.yml
@@ -1,4 +1,5 @@
 ---
-- hosts: all
+- name: Apply steady state configuration
+  hosts: all
   roles:
     - role: steady_state
diff --git a/playbooks/update_etc_hosts.yml b/playbooks/update_etc_hosts.yml
index 90cf708..6fb8f78 100644
--- a/playbooks/update_etc_hosts.yml
+++ b/playbooks/update_etc_hosts.yml
@@ -1,6 +1,6 @@
 ---
 - name: Update target /etc/hosts with all targets and disable cloud-init
   hosts: baseline:dev
-  gather_facts: no
+  gather_facts: false
   roles:
     - role: update_etc_hosts

-- 
2.50.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH RFC 0/3] Run Ansible Lint Across Playbooks
  2025-08-01 16:23 [PATCH RFC 0/3] Run Ansible Lint Across Playbooks Daniel Gomez
                   ` (2 preceding siblings ...)
  2025-08-01 16:23 ` [PATCH RFC 3/3] ansible-lint: comprehensive linting and manual fixes Daniel Gomez
@ 2025-08-02 17:16 ` Luis Chamberlain
  2025-08-21  8:36 ` Daniel Gomez
  4 siblings, 0 replies; 6+ messages in thread
From: Luis Chamberlain @ 2025-08-02 17:16 UTC (permalink / raw)
  To: Daniel Gomez; +Cc: Chuck Lever, kdevops, Daniel Gomez

On Fri, Aug 01, 2025 at 06:23:50PM +0200, Daniel Gomez wrote:
> In line with the motivation behind "[PATCH v2 0/9] kdevops: add support
> for A/B testing" [1], this change runs ansible-lint across all playbooks
> to enforce a more consistent and standardized formatting of Ansible
> code.

Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>

  Luis

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH RFC 0/3] Run Ansible Lint Across Playbooks
  2025-08-01 16:23 [PATCH RFC 0/3] Run Ansible Lint Across Playbooks Daniel Gomez
                   ` (3 preceding siblings ...)
  2025-08-02 17:16 ` [PATCH RFC 0/3] Run Ansible Lint Across Playbooks Luis Chamberlain
@ 2025-08-21  8:36 ` Daniel Gomez
  4 siblings, 0 replies; 6+ messages in thread
From: Daniel Gomez @ 2025-08-21  8:36 UTC (permalink / raw)
  To: Luis Chamberlain, Chuck Lever; +Cc: kdevops, Daniel Gomez



On 01/08/2025 09.23, Daniel Gomez wrote:
> In line with the motivation behind "[PATCH v2 0/9] kdevops: add support
> for A/B testing" [1], this change runs ansible-lint across all playbooks
> to enforce a more consistent and standardized formatting of Ansible
> code.
> 
> https://lore.kernel.org/kdevops/91f83d54-8375-4016-ab53-7a210437d39b@kernel.org/T/#u [1]
> 
> This helps auto-fix several issues, but some rule violations still
> require manual resolution. Below is a summary of the remaining issues:
> 
> Rule Violation Summary
> 
>   1 syntax-check profile:min tags:core,unskippable
>  16 command-instead-of-module profile:min tags:command-shell,idiom
>   2 deprecated-local-action profile:min tags:deprecations
>   2 inline-env-var profile:min tags:command-shell,idiom
>   6 jinja profile:min tags:formatting
>   8 schema profile:min tags:core
>  11 name profile:min tags:idiom
>   1 name profile:min tags:idiom
> 461 var-naming profile:min tags:idiom
>  30 yaml profile:min tags:formatting,yaml
>   1 yaml profile:min tags:formatting,yaml
>  70 name profile:min tags:idiom
>   3 latest profile:min tags:idempotency
>   1 package-latest profile:min tags:idempotency
> 119 risky-file-permissions profile:min tags:unpredictability
>  10 risky-shell-pipe profile:min tags:command-shell
>  45 ignore-errors profile:min tags:unpredictability
> 162 no-changed-when profile:min tags:command-shell,idempotency
>   2 fqcn profile:min tags:formatting
> 
> Failed: 945 failure(s), 6 warning(s) on 562 files.
> <sys>:0: DeprecationWarning: builtin type swigvarlink has no __module__ attribute
> 
> Full log:
> https://gist.github.com/dkruces/bc63122aa1145562157ced72cd3ed408
> 
> This structured output may serve as a useful input for generative AI in
> future clean-up efforts.
> 
> This has been tested in current kdevops CI (fstests) and manually with
> nfstests workflow.
> 
> An additional note is that not always ansible-lint will produce a valid
> fix. I run into the following issue that affected bringup:
> 
> - name: Check if the developer has a git config
> delegate_to: localhost
> - stat:
> - path={{ dev_gitconfig_src }}
> + ansible.builtin.stat:
> + path: "{{"
> + cmd: dev_gitconfig_src }}
> run_once: true
> register: dev_git_config_file
> 
> The same pattern repeated in different tasks for the same file. So I
> manually fix these and let Generative AI verify more files.
> 
> Signed-off-by: Daniel Gomez <da.gomez@samsung.com>
> ---


I've pushed the first 2 patches.

670303fe40e9 playbooks: ansible-lint: fix FileNotFoundError
609131cb3587 playbooks: fix include_tasks paths in kdc and krb5 role

And agreed with Chuck to split the third into smaller parts for better
bisectability, easier review, and clarity. The ansible-lint tool allows fixing
issues using individual rule IDs or rule tags [1].

Link: https://ansible.readthedocs.io/projects/lint/autofix/#autofix [1]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-08-21  8:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-01 16:23 [PATCH RFC 0/3] Run Ansible Lint Across Playbooks Daniel Gomez
2025-08-01 16:23 ` [PATCH RFC 1/3] playbooks: fix include_tasks paths in kdc and krb5 roles Daniel Gomez
2025-08-01 16:23 ` [PATCH RFC 2/3] playbooks: ansible-lint: fix FileNotFoundError Daniel Gomez
2025-08-01 16:23 ` [PATCH RFC 3/3] ansible-lint: comprehensive linting and manual fixes Daniel Gomez
2025-08-02 17:16 ` [PATCH RFC 0/3] Run Ansible Lint Across Playbooks Luis Chamberlain
2025-08-21  8:36 ` Daniel Gomez

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox