[PATCH v2 2/5] ansible: replace deprecated top-level ansible_* facts with ansible_facts[]

Jeff Layton <[email protected]> Thu, 18 Jun 2026 08:17:16 -0400
Newsgroups dev.linux.lists.kdevops
Message-ID <[email protected]>
Ansible-core 2.24 will remove the INJECT_FACTS_AS_VARS feature that
auto-injects gathered facts as top-level variables like ansible_os_family
and ansible_hostname. The new form uses the ansible_facts dictionary
with the ansible_ prefix stripped, for example ansible_facts["os_family"]
and ansible_facts["hostname"].

Some files in the tree already used the new form, making the codebase
inconsistent. Convert all remaining top-level fact variable references
across 109 playbook and template files to the ansible_facts[] form.
Connection variables (ansible_host, ansible_ssh_host), magic variables
(ansible_limit, ansible_play_hosts), and callback variables are not
gathered facts and are left unchanged.

Generated-by: Claude AI
Signed-off-by: Jeff Layton <[email protected]>
---
 playbooks/build_linux_results.yml                  |  2 +-
 playbooks/fio-tests-multi-fs-compare.yml           |  2 +-
 .../ai_multifs_run/tasks/run_single_filesystem.yml |  2 +-
 playbooks/roles/ai_multifs_setup/tasks/main.yml    |  2 +-
 playbooks/roles/ai_run_benchmarks/tasks/main.yml   |  6 ++--
 playbooks/roles/base_image/tasks/base-image.yml    |  8 ++---
 .../blktests/tasks/install-deps/suse/main.yml      | 32 ++++++++++----------
 playbooks/roles/blktests/tasks/main.yml            |  2 +-
 playbooks/roles/bootlinux/defaults/main.yml        |  6 ++--
 playbooks/roles/bootlinux/tasks/build/builder.yml  | 18 ++++++------
 .../roles/bootlinux/tasks/install-deps/main.yml    |  6 ++--
 .../bootlinux/tasks/install-deps/redhat/main.yml   |  4 +--
 .../bootlinux/tasks/install-minimal-deps/main.yml  |  6 ++--
 .../roles/bootlinux/tasks/install/packages.yml     |  4 +--
 playbooks/roles/bootlinux/tasks/main.yml           |  6 ++--
 .../btrfs_progs/tasks/install-deps/suse/main.yml   |  6 ++--
 playbooks/roles/build_linux/tasks/main.yml         | 22 +++++++-------
 playbooks/roles/codereadyrepo/tasks/main.yml       | 22 +++++++-------
 .../roles/create_data_partition/tasks/main.yml     |  2 +-
 playbooks/roles/create_nfs_mount/tasks/main.yml    |  4 +--
 .../tasks/install-deps/redhat/main.yml             |  2 +-
 .../tasks/install-deps/suse/main.yml               | 32 ++++++++++----------
 .../roles/cxl/tasks/install-deps/suse/main.yml     | 32 ++++++++++----------
 playbooks/roles/cxl/tasks/main.yml                 |  2 +-
 playbooks/roles/devconfig/tasks/datacrunch_ml.yml  | 10 +++----
 .../roles/devconfig/tasks/install-deps/main.yml    |  8 ++---
 .../devconfig/tasks/install-deps/redhat/main.yml   |  4 +--
 .../devconfig/tasks/install-deps/suse/main.yml     | 34 +++++++++++-----------
 .../devconfig/tasks/kotd-rev-kernel/suse/main.yml  | 30 +++++++++----------
 playbooks/roles/devconfig/tasks/main.yml           |  2 +-
 .../roles/dhclient_cache/tasks/isc-dhclient.yml    |  2 +-
 .../roles/dhclient_cache/tasks/networkmanager.yml  |  2 +-
 playbooks/roles/dhclient_cache/tasks/wicked.yml    |  2 +-
 .../tasks/install-deps/debian/main.yml             |  4 +--
 .../docker-mirror/tasks/install-deps/main.yml      |  6 ++--
 .../docker-mirror/templates/docker-manifest.txt.j2 |  2 +-
 playbooks/roles/epel-release/tasks/main.yml        |  8 ++---
 .../roles/fio-tests/tasks/install-deps/main.yml    |  2 +-
 .../fstests/tasks/install-deps/redhat/main.yml     |  4 +--
 .../roles/fstests/tasks/install-deps/suse/main.yml | 32 ++++++++++----------
 playbooks/roles/fstests/tasks/main.yml             |  2 +-
 .../tasks/install-deps/suse/main.yml               | 28 +++++++++---------
 playbooks/roles/gitr/tasks/install-deps/main.yml   | 10 +++----
 .../roles/gitr/tasks/install-deps/redhat/main.yml  | 12 ++++----
 playbooks/roles/gitr/tasks/main.yml                | 20 ++++++-------
 playbooks/roles/guestfs/tasks/bringup/main.yml     |  2 +-
 .../roles/guestfs/tasks/install-deps/main.yml      |  6 ++--
 .../guestfs/tasks/install-deps/redhat/main.yml     |  2 +-
 .../tasks/install-deps/suse/main.yml               |  6 ++--
 .../tasks/install-deps/suse/main.yml               |  6 ++--
 playbooks/roles/iscsi/tasks/add_initiator.yml      |  4 +--
 playbooks/roles/iscsi/tasks/main.yml               |  4 +--
 playbooks/roles/kdc/tasks/install-deps/main.yml    |  6 ++--
 playbooks/roles/kdc/tasks/main.yml                 | 14 ++++-----
 playbooks/roles/kdc/templates/krb5.conf.j2         |  4 +--
 playbooks/roles/krb5/tasks/install-deps/main.yml   |  6 ++--
 playbooks/roles/krb5/tasks/main.yml                | 10 +++----
 .../roles/ktls/tasks/install-deps/redhat/main.yml  |  2 +-
 playbooks/roles/ktls/tasks/main.yml                |  2 +-
 .../roles/libvirt_user/tasks/enable-user/main.yml  |  7 +++--
 .../libvirt_user/tasks/enable-user/redhat/main.yml |  2 +-
 .../libvirt_user/tasks/enable-user/suse/main.yml   |  2 +-
 .../linux-mirror/tasks/install-deps/nfs/main.yml   |  6 ++--
 playbooks/roles/linux-mirror/tasks/main.yml        |  8 ++---
 playbooks/roles/ltp/tasks/main.yml                 | 10 +++----
 playbooks/roles/milvus/tasks/benchmark.yml         |  2 +-
 playbooks/roles/milvus/tasks/install_docker.yml    |  8 ++---
 playbooks/roles/minio_install/tasks/main.yml       |  6 ++--
 playbooks/roles/minio_warp_run/tasks/main.yml      | 18 ++++++------
 playbooks/roles/mmtests_compare/tasks/main.yml     |  4 +--
 .../roles/monitoring/tasks/install-deps/main.yml   |  4 +--
 .../roles/monitoring/tasks/monitor_collect.yml     |  4 +--
 .../monitoring/tasks/monitor_collect_only.yml      |  6 ++--
 .../tasks/monitors/folio_migration/collect.yml     | 14 ++++-----
 .../monitors/folio_migration/collect_only.yml      |  4 +--
 .../roles/nfsd/tasks/install-deps/debian/main.yml  |  4 +--
 .../roles/nfsd/tasks/install-deps/redhat/main.yml  |  4 +--
 .../roles/nfsd/tasks/install-deps/suse/main.yml    |  4 +--
 playbooks/roles/nfsd/tasks/main.yml                |  6 ++--
 playbooks/roles/nfstest/tasks/main.yml             |  4 +--
 playbooks/roles/pkg/tasks/debian.yml               |  8 ++---
 .../roles/pynfs/tasks/install-deps/debian/main.yml |  2 +-
 .../roles/pynfs/tasks/install-deps/redhat/main.yml |  2 +-
 .../roles/qemu/tasks/install-deps/suse/main.yml    |  3 +-
 .../roles/reboot-limit/tasks/do-reboot-compare.yml |  2 +-
 playbooks/roles/reboot-limit/tasks/do-reboot.yml   |  2 +-
 playbooks/roles/rxe/templates/udev-rule.j2         |  4 +--
 .../selftests/tasks/install-deps/suse/main.yml     | 32 ++++++++++----------
 playbooks/roles/selftests/tasks/main.yml           |  2 +-
 playbooks/roles/siw/templates/udev-rule.j2         |  4 +--
 .../roles/smbd/tasks/install-deps/debian/main.yml  |  4 +--
 playbooks/roles/smbd/tasks/install-deps/main.yml   |  6 ++--
 .../roles/smbd/tasks/install-deps/redhat/main.yml  |  4 +--
 .../roles/smbd/tasks/install-deps/suse/main.yml    |  4 +--
 playbooks/roles/smbd/tasks/main.yml                |  6 ++--
 playbooks/roles/steady_state/tasks/main.yaml       |  2 +-
 .../sysbench/tasks/install-deps/redhat/main.yml    |  2 +-
 .../sysbench/tasks/install-deps/suse/main.yml      | 32 ++++++++++----------
 .../roles/sysbench/tasks/mysql-docker/main.yaml    |  4 +--
 .../roles/terraform/tasks/bringup/datacrunch.yml   |  6 ++--
 playbooks/roles/update_etc_hosts/tasks/main.yml    |  8 ++---
 .../roles/vllm/tasks/configure-docker-data.yml     | 10 +++----
 playbooks/roles/vllm/tasks/deploy-bare-metal.yml   |  2 +-
 .../roles/vllm/tasks/install-deps/redhat/main.yml  | 16 +++++-----
 playbooks/roles/vllm/tasks/main.yml                | 18 ++++++------
 playbooks/roles/vllm/tasks/setup-kubernetes.yml    |  6 ++--
 .../roles/vllm/templates/vllm-visualize.py.j2      |  2 +-
 .../roles/volume_group/tasks/terraform/oci.yml     |  2 +-
 108 files changed, 425 insertions(+), 425 deletions(-)

diff --git a/playbooks/build_linux_results.yml b/playbooks/build_linux_results.yml
index 22866b387e36..b02b4dc4b508 100644
--- a/playbooks/build_linux_results.yml
+++ b/playbooks/build_linux_results.yml
@@ -30,7 +30,7 @@
     - name: Fetch build results
       ansible.builtin.fetch:
         src: "{{ item.path }}"
-        dest: "{{ topdir_path }}/{{ build_linux_results_dir }}/{{ ansible_hostname }}_{{ item.path | basename }}"
+        dest: "{{ topdir_path }}/{{ build_linux_results_dir }}/{{ ansible_facts['hostname'] }}_{{ item.path | basename }}"
         flat: true
       loop: "{{ result_files.files }}"
       when:
diff --git a/playbooks/fio-tests-multi-fs-compare.yml b/playbooks/fio-tests-multi-fs-compare.yml
index 9ab51dc302a4..bac3ffc412db 100644
--- a/playbooks/fio-tests-multi-fs-compare.yml
+++ b/playbooks/fio-tests-multi-fs-compare.yml
@@ -123,7 +123,7 @@
         dest: "{{ output_dir }}/multi-filesystem-comparison-summary.html"
         mode: '0644'
       vars:
-        timestamp: "{{ ansible_date_time.iso8601 }}"
+        timestamp: "{{ ansible_facts['date_time'].iso8601 }}"
         total_configs: "{{ filesystem_configs | length }}"
         total_files: "{{ json_files.files | length }}"
       when: generated_files.files | length > 0
diff --git a/playbooks/roles/ai_multifs_run/tasks/run_single_filesystem.yml b/playbooks/roles/ai_multifs_run/tasks/run_single_filesystem.yml
index 4a7840cdf496..c0f56cc0db84 100644
--- a/playbooks/roles/ai_multifs_run/tasks/run_single_filesystem.yml
+++ b/playbooks/roles/ai_multifs_run/tasks/run_single_filesystem.yml
@@ -75,7 +75,7 @@
       Mount Point: {{ ai_multifs_mount_point }}
       Data Directory: {{ current_fs_benchmark_dir }}
       Results Directory: {{ current_fs_results_dir }}
-      Test Start Time: {{ ansible_date_time.iso8601 }}
+      Test Start Time: {{ ansible_facts['date_time'].iso8601 }}
 
       mkfs Output:
       {{ mkfs_result.stdout }}
diff --git a/playbooks/roles/ai_multifs_setup/tasks/main.yml b/playbooks/roles/ai_multifs_setup/tasks/main.yml
index c8af11c6103d..1fabc3c660c1 100644
--- a/playbooks/roles/ai_multifs_setup/tasks/main.yml
+++ b/playbooks/roles/ai_multifs_setup/tasks/main.yml
@@ -55,7 +55,7 @@
   copy:
     content: |
       # AI Multi-Filesystem Testing Configuration
-      Generated: {{ ansible_date_time.iso8601 }}
+      Generated: {{ ansible_facts['date_time'].iso8601 }}
       Device: {{ ai_multifs_device }}
       Mount Point: {{ ai_multifs_mount_point }}
       Results Directory: {{ ai_multifs_results_dir }}
diff --git a/playbooks/roles/ai_run_benchmarks/tasks/main.yml b/playbooks/roles/ai_run_benchmarks/tasks/main.yml
index 996bb41c45c5..1fc47df178b6 100644
--- a/playbooks/roles/ai_run_benchmarks/tasks/main.yml
+++ b/playbooks/roles/ai_run_benchmarks/tasks/main.yml
@@ -44,7 +44,7 @@
 
 - name: Check if lock file is stale (older than 5 minutes)
   ansible.builtin.set_fact:
-    lock_is_stale: "{{ (ansible_date_time.epoch | int - lock_file.stat.mtime | default(0) | int) > 300 }}"
+    lock_is_stale: "{{ (ansible_facts['date_time'].epoch | int - lock_file.stat.mtime | default(0) | int) > 300 }}"
   when: lock_file.stat.exists
 
 - name: Remove stale lock file
@@ -60,7 +60,7 @@
     msg: |
       ERROR: Benchmark lock file exists at {{ ai_benchmark_results_dir }}/.benchmark.lock
       This indicates a benchmark may be in progress or was terminated abnormally.
-      Lock file age: {{ (ansible_date_time.epoch | int - lock_file.stat.mtime | default(0) | int) }} seconds
+      Lock file age: {{ (ansible_facts['date_time'].epoch | int - lock_file.stat.mtime | default(0) | int) }} seconds
       If you're sure no benchmark is running, remove the lock file manually.
   when:
     - lock_file.stat.exists
@@ -158,7 +158,7 @@
         {{ ai_benchmark_results_dir }}/venv/bin/python
         {{ ai_benchmark_results_dir }}/workdir/milvus_benchmark.py
         --config {{ ai_benchmark_results_dir }}/workdir/benchmark_config.json
-        --output {{ ai_benchmark_results_dir }}/results_{{ ansible_hostname }}_{{ item }}.json
+        --output {{ ai_benchmark_results_dir }}/results_{{ ansible_facts['hostname'] }}_{{ item }}.json
       register: benchmark_result
       with_sequence: start=1 end={{ ai_benchmark_iterations }}
       tags: run_benchmark
diff --git a/playbooks/roles/base_image/tasks/base-image.yml b/playbooks/roles/base_image/tasks/base-image.yml
index 4a51648afc04..341f64429ce1 100644
--- a/playbooks/roles/base_image/tasks/base-image.yml
+++ b/playbooks/roles/base_image/tasks/base-image.yml
@@ -41,7 +41,7 @@
       - "virt-builder"
       - "{{ base_image_os_version }}"
       - "--arch"
-      - "{{ ansible_machine }}"
+      - "{{ ansible_facts['machine'] }}"
       - "-o"
       - "{{ base_image_pathname }}"
       - "--size"
@@ -61,7 +61,7 @@
       - "virt-builder"
       - "{{ base_image_os_version }}"
       - "--arch"
-      - "{{ ansible_machine }}"
+      - "{{ ansible_facts['machine'] }}"
       - "-o"
       - "{{ base_image_pathname }}"
       - "--size"
@@ -89,7 +89,7 @@
     - libvirt_uri_system|bool
     - guestfs_fedora is defined
     - guestfs_fedora|bool
-    - ansible_distribution|lower in ['debian', 'ubuntu']
+    - ansible_facts['distribution']|lower in ['debian', 'ubuntu']
     - virt_builder_result_system is changed
 
 - name: Set SELinux to permissive mode for Fedora images on non-SELinux hosts (user libvirt)
@@ -104,7 +104,7 @@
     - not libvirt_uri_system|bool
     - guestfs_fedora is defined
     - guestfs_fedora|bool
-    - ansible_distribution|lower in ['debian', 'ubuntu']
+    - ansible_facts['distribution']|lower in ['debian', 'ubuntu']
     - virt_builder_result_user is changed
 
 - name: Set proper ownership on base image for rcloud access (system libvirt)
diff --git a/playbooks/roles/blktests/tasks/install-deps/suse/main.yml b/playbooks/roles/blktests/tasks/install-deps/suse/main.yml
index 578778ee9687..992a4a433642 100644
--- a/playbooks/roles/blktests/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/blktests/tasks/install-deps/suse/main.yml
@@ -2,25 +2,25 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
 
 - name: Set SLE specific version labels to make checks easier
   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" }}'
-    is_sle15: '{{ ansible_distribution_major_version == "15" }}'
-    is_sle10sp3: '{{ ansible_distribution_version == "10.3" }}'
-    is_sle11sp1: '{{ ansible_distribution_version == "11.1" }}'
-    is_sle11sp4: '{{ ansible_distribution_version == "11.4" }}'
-    is_sle12sp1: '{{ ansible_distribution_version == "12.1" }}'
-    is_sle12sp3: '{{ ansible_distribution_version == "12.3" }}'
-    is_sle12sp5: '{{ ansible_distribution_version == "12.5" }}'
-    is_sle15sp2: '{{ ansible_distribution_version == "15.2" }}'
-    is_sle15sp3: '{{ ansible_distribution_version == "15.3" }}'
-    is_sle15sp4: '{{ ansible_distribution_version == "15.4" }}'
+    is_sle10: '{{ ansible_facts["distribution_major_version"] == "10" }}'
+    is_sle11: '{{ ansible_facts["distribution_major_version"] == "11" }}'
+    is_sle12: '{{ ansible_facts["distribution_major_version"] == "12" }}'
+    is_sle15: '{{ ansible_facts["distribution_major_version"] == "15" }}'
+    is_sle10sp3: '{{ ansible_facts["distribution_version"] == "10.3" }}'
+    is_sle11sp1: '{{ ansible_facts["distribution_version"] == "11.1" }}'
+    is_sle11sp4: '{{ ansible_facts["distribution_version"] == "11.4" }}'
+    is_sle12sp1: '{{ ansible_facts["distribution_version"] == "12.1" }}'
+    is_sle12sp3: '{{ ansible_facts["distribution_version"] == "12.3" }}'
+    is_sle12sp5: '{{ ansible_facts["distribution_version"] == "12.5" }}'
+    is_sle15sp2: '{{ ansible_facts["distribution_version"] == "15.2" }}'
+    is_sle15sp3: '{{ ansible_facts["distribution_version"] == "15.3" }}'
+    is_sle15sp4: '{{ ansible_facts["distribution_version"] == "15.4" }}'
   when:
     - is_sle|bool
 
diff --git a/playbooks/roles/blktests/tasks/main.yml b/playbooks/roles/blktests/tasks/main.yml
index f7253d8a4ec8..9bc67c22bdbc 100644
--- a/playbooks/roles/blktests/tasks/main.yml
+++ b/playbooks/roles/blktests/tasks/main.yml
@@ -172,7 +172,7 @@
 - name: Print uname for each host
   tags: ["blktests", "run_tests"]
   ansible.builtin.debug:
-    var: ansible_kernel
+    var: ansible_facts['kernel']
 - name: Get used target kernel version
   tags: ["blktests", "copy_results", "augment_expunge_list"]
   ansible.builtin.command: "uname -r"
diff --git a/playbooks/roles/bootlinux/defaults/main.yml b/playbooks/roles/bootlinux/defaults/main.yml
index e694b5da9716..ea50c9b05eff 100644
--- a/playbooks/roles/bootlinux/defaults/main.yml
+++ b/playbooks/roles/bootlinux/defaults/main.yml
@@ -26,12 +26,12 @@ target_linux_delta_file:
 target_linux_config: "config-{{ target_linux_ref }}"
 make: "make"
 # Once ansible v2.10 becomes available we can move on to using
-# ansible_processor_nproc but that was merged in 2020:
+# ansible_facts['processor_nproc'] but that was merged in 2020:
 # The commit is 34db57a47f875d11c4068567b9ec7ace174ec4cf
-# introduce fact "ansible_processor_nproc": number of usable vcpus #66569
+# introduce fact "ansible_facts['processor_nproc']": number of usable vcpus #66569
 # https://github.com/ansible/ansible/pull/66569
 # Build command without environment variables (added via environment dict)
-target_linux_make_cmd: "{{ make }} -j{{ ansible_processor_vcpus }}"
+target_linux_make_cmd: "{{ make }} -j{{ ansible_facts['processor_vcpus'] }}"
 
 # Make parameters dictionary for community.general.make module
 bootlinux_make_params: >-
diff --git a/playbooks/roles/bootlinux/tasks/build/builder.yml b/playbooks/roles/bootlinux/tasks/build/builder.yml
index 3b056f9fe697..5138b69ed72d 100644
--- a/playbooks/roles/bootlinux/tasks/build/builder.yml
+++ b/playbooks/roles/bootlinux/tasks/build/builder.yml
@@ -8,7 +8,7 @@
       - b4
   when:
     - target_linux_install_b4 | default('', true) | length > 0
-    - ansible_os_family == "Debian"
+    - ansible_facts['os_family'] == "Debian"
 
 - name: Clone {{ target_linux_tree }}
   ansible.builtin.git:
@@ -125,7 +125,7 @@
 - name: Build {{ target_linux_tree }}
   community.general.make:
     chdir: "{{ target_linux_dir_path }}"
-    jobs: "{{ ansible_processor_nproc }}"
+    jobs: "{{ ansible_facts['processor_nproc'] }}"
     target: "all"
   when:
     - bootlinux_compiler_gcc|bool
@@ -151,7 +151,7 @@
 - name: Build {{ target_linux_tree }}
   community.general.make:
     chdir: "{{ target_linux_dir_path }}"
-    jobs: "{{ ansible_processor_nproc }}"
+    jobs: "{{ ansible_facts['processor_nproc'] }}"
     params:
       LLVM: 1
     target: "all"
@@ -174,7 +174,7 @@
 
 - name: Build kernel .deb packages
   when:
-    - ansible_os_family == "Debian"
+    - ansible_facts['os_family'] == "Debian"
   block:
     - name: Build the list of artifacts directories on the builder
       ansible.builtin.set_fact:
@@ -184,7 +184,7 @@
     - name: Make the bindeb-pkg target
       community.general.make:
         chdir: "{{ target_linux_dir_path }}"
-        jobs: "{{ ansible_processor_nproc }}"
+        jobs: "{{ ansible_facts['processor_nproc'] }}"
         target: "bindeb-pkg"
 
     - name: Find the build artifacts
@@ -206,13 +206,13 @@
 
 - name: Build kernel .rpm packages
   when:
-    - ansible_os_family != "Debian"
+    - ansible_facts['os_family'] != "Debian"
   block:
     - name: Build the list of artifacts directories on the builder
       ansible.builtin.set_fact:
         artifact_paths:
           - "{{ target_linux_dir_path }}/rpmbuild/RPMS"
-          - "{{ ansible_env.HOME }}/rpmbuild/RPMS"
+          - "{{ ansible_facts['env'].HOME }}/rpmbuild/RPMS"
 
     - name: Wipe the artifact directories on the builder
       ansible.builtin.file:
@@ -234,7 +234,7 @@
     - name: Make the binrpm-pkg target
       community.general.make:
         chdir: "{{ target_linux_dir_path }}"
-        jobs: "{{ ansible_processor_nproc }}"
+        jobs: "{{ ansible_facts['processor_nproc'] }}"
         target: "binrpm-pkg"
         params:
           RPMOPTS: "--without devel"
@@ -244,7 +244,7 @@
     - name: Make the binrpm-pkg target
       community.general.make:
         chdir: "{{ target_linux_dir_path }}"
-        jobs: "{{ ansible_processor_nproc }}"
+        jobs: "{{ ansible_facts['processor_nproc'] }}"
         target: "binrpm-pkg"
         params:
           RPMOPTS: "--without devel"
diff --git a/playbooks/roles/bootlinux/tasks/install-deps/main.yml b/playbooks/roles/bootlinux/tasks/install-deps/main.yml
index 0ce469b6ed8f..963ad5a53ba4 100644
--- a/playbooks/roles/bootlinux/tasks/install-deps/main.yml
+++ b/playbooks/roles/bootlinux/tasks/install-deps/main.yml
@@ -3,14 +3,14 @@
 - name: Debian-specific setup
   ansible.builtin.import_tasks: debian/main.yml
   when:
-    - ansible_os_family == "Debian"
+    - ansible_facts['os_family'] == "Debian"
 
 - name: SuSE-specific setup
   ansible.builtin.import_tasks: suse/main.yml
   when:
-    - ansible_os_family == "Suse"
+    - ansible_facts['os_family'] == "Suse"
 
 - name: Red Hat-specific setup
   ansible.builtin.import_tasks: redhat/main.yml
   when:
-    - ansible_os_family == "RedHat"
+    - ansible_facts['os_family'] == "RedHat"
diff --git a/playbooks/roles/bootlinux/tasks/install-deps/redhat/main.yml b/playbooks/roles/bootlinux/tasks/install-deps/redhat/main.yml
index 4cc052f68702..64029322befc 100644
--- a/playbooks/roles/bootlinux/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/bootlinux/tasks/install-deps/redhat/main.yml
@@ -4,7 +4,7 @@
   ansible.builtin.include_role:
     name: epel-release
   when:
-    - ansible_distribution != "Fedora"
+    - ansible_facts['distribution'] != "Fedora"
 
 - name: Install packages we care about
   become: true
@@ -68,7 +68,7 @@
   vars:
     packages:
       - btrfs-progs
-  when: ansible_distribution == 'Fedora'
+  when: ansible_facts['distribution'] == 'Fedora'
 
 - name: Install clang
   become: true
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml
index daa4321f20f7..35ad15f9318c 100644
--- a/playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml
@@ -3,14 +3,14 @@
 - name: Debian-specific minimal setup
   ansible.builtin.import_tasks: debian/main.yml
   when:
-    - ansible_os_family == "Debian"
+    - ansible_facts['os_family'] == "Debian"
 
 - name: SuSE-specific minimal setup
   ansible.builtin.import_tasks: suse/main.yml
   when:
-    - ansible_os_family == "Suse"
+    - ansible_facts['os_family'] == "Suse"
 
 - name: Red Hat-specific minimal setup
   ansible.builtin.import_tasks: redhat/main.yml
   when:
-    - ansible_os_family == "RedHat"
+    - ansible_facts['os_family'] == "RedHat"
diff --git a/playbooks/roles/bootlinux/tasks/install/packages.yml b/playbooks/roles/bootlinux/tasks/install/packages.yml
index 3a1bd2b1eb78..5784f5e20a94 100644
--- a/playbooks/roles/bootlinux/tasks/install/packages.yml
+++ b/playbooks/roles/bootlinux/tasks/install/packages.yml
@@ -2,7 +2,7 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Install the built kernel RPMs on the target nodes
   when:
-    - ansible_os_family != "Debian"
+    - ansible_facts['os_family'] != "Debian"
   block:
     - name: Find the kernel build artifacts on the control host
       delegate_to: localhost
@@ -44,7 +44,7 @@
 
 - name: Install the built kernel debs on the target nodes
   when:
-    - ansible_os_family == "Debian"
+    - ansible_facts['os_family'] == "Debian"
   block:
     - name: Find the kernel build artifacts on the control host
       delegate_to: localhost
diff --git a/playbooks/roles/bootlinux/tasks/main.yml b/playbooks/roles/bootlinux/tasks/main.yml
index 74533b5152c7..1a3644817384 100644
--- a/playbooks/roles/bootlinux/tasks/main.yml
+++ b/playbooks/roles/bootlinux/tasks/main.yml
@@ -63,7 +63,7 @@
 
 - name: Set bootlinux_b4_am_this_host as a fact for dev hosts only
   ansible.builtin.set_fact:
-    bootlinux_b4_am_this_host: "{{ ansible_hostname | regex_search('^.*-dev$') is not none }}"
+    bootlinux_b4_am_this_host: "{{ ansible_facts['hostname'] | regex_search('^.*-dev$') is not none }}"
   when:
     - kdevops_baseline_and_dev|bool
     - not workflow_linux_packaged|bool
@@ -77,7 +77,7 @@
 
 - name: Determine if this is a dev node for A/B testing
   ansible.builtin.set_fact:
-    bootlinux_is_dev_node: "{{ ansible_hostname | regex_search('^.*-dev$') is not none }}"
+    bootlinux_is_dev_node: "{{ ansible_facts['hostname'] | regex_search('^.*-dev$') is not none }}"
   when:
     - kdevops_baseline_and_dev|bool
     - bootlinux_ab_different_ref|bool
@@ -213,7 +213,7 @@
   ansible.builtin.debug:
     msg: |
       === KERNEL BUILD COMMAND DEBUG ===
-      build_jobs: {{ ansible_processor_vcpus }}
+      build_jobs: {{ ansible_facts['processor_vcpus'] }}
       bootlinux_make_params: {{ bootlinux_make_params }}
       bootlinux_build_environment: {{ bootlinux_build_environment }}
       bootlinux_compiler_clang: {{ bootlinux_compiler_clang|default(false) }}
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 83d9dd934ff8..7e654dfb6f9e 100644
--- a/playbooks/roles/btrfs_progs/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/btrfs_progs/tasks/install-deps/suse/main.yml
@@ -2,9 +2,9 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
 
 - name: Install btrfs-progs build dependencies
   become: true
diff --git a/playbooks/roles/build_linux/tasks/main.yml b/playbooks/roles/build_linux/tasks/main.yml
index 9f8bdf0db381..74e39775c04a 100644
--- a/playbooks/roles/build_linux/tasks/main.yml
+++ b/playbooks/roles/build_linux/tasks/main.yml
@@ -18,21 +18,21 @@
     - name: Set filesystem type based on node name
       set_fact:
         node_fstype: >-
-          {%- if 'xfs' in ansible_hostname -%}xfs
-          {%- elif 'ext4' in ansible_hostname -%}ext4
-          {%- elif 'btrfs' in ansible_hostname -%}btrfs
-          {%- elif 'tmpfs' in ansible_hostname -%}tmpfs
+          {%- if 'xfs' in ansible_facts['hostname'] -%}xfs
+          {%- elif 'ext4' in ansible_facts['hostname'] -%}ext4
+          {%- elif 'btrfs' in ansible_facts['hostname'] -%}btrfs
+          {%- elif 'tmpfs' in ansible_facts['hostname'] -%}tmpfs
           {%- else -%}{{ build_linux_fstype|default('xfs') }}{%- endif -%}
 
     - name: Set XFS block and sector sizes from node name
       when: node_fstype == 'xfs'
       set_fact:
         node_xfs_blocksize: >-
-          {%- if 'xfs-4k' in ansible_hostname -%}4096
-          {%- elif 'xfs-8k' in ansible_hostname -%}8192
-          {%- elif 'xfs-16k' in ansible_hostname -%}16384
-          {%- elif 'xfs-32k' in ansible_hostname -%}32768
-          {%- elif 'xfs-64k' in ansible_hostname -%}65536
+          {%- if 'xfs-4k' in ansible_facts['hostname'] -%}4096
+          {%- elif 'xfs-8k' in ansible_facts['hostname'] -%}8192
+          {%- elif 'xfs-16k' in ansible_facts['hostname'] -%}16384
+          {%- elif 'xfs-32k' in ansible_facts['hostname'] -%}32768
+          {%- elif 'xfs-64k' in ansible_facts['hostname'] -%}65536
           {%- else -%}4096{%- endif -%}
         node_xfs_sectorsize: "4096"
 
@@ -216,7 +216,7 @@
 
 - name: Check for build results
   ansible.builtin.stat:
-    path: "{{ data_path }}/build-results/summary_{{ ansible_hostname }}.json"
+    path: "{{ data_path }}/build-results/summary_{{ ansible_facts['hostname'] }}.json"
   register: summary_file
 
 - name: Read and display summary
@@ -224,7 +224,7 @@
   block:
     - name: Read summary file
       ansible.builtin.slurp:
-        src: "{{ data_path }}/build-results/summary_{{ ansible_hostname }}.json"
+        src: "{{ data_path }}/build-results/summary_{{ ansible_facts['hostname'] }}.json"
       register: summary_content
 
     - name: Parse summary
diff --git a/playbooks/roles/codereadyrepo/tasks/main.yml b/playbooks/roles/codereadyrepo/tasks/main.yml
index f670adaaa9cc..d6a20af7d55a 100644
--- a/playbooks/roles/codereadyrepo/tasks/main.yml
+++ b/playbooks/roles/codereadyrepo/tasks/main.yml
@@ -2,49 +2,49 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Enable a CodeReady Builder repo for this distribution
   when:
-    - ansible_distribution != "Fedora"
+    - ansible_facts['distribution'] != "Fedora"
     - devconfig_custom_yum_repofile | default('', true) | length == 0
   block:
     - name: Select the RHEL CodeReady Builder repo
       ansible.builtin.set_fact:
-        codeready_repo: "codeready-builder-for-rhel-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}-rpms"
+        codeready_repo: "codeready-builder-for-rhel-{{ ansible_facts['distribution_major_version'] }}-{{ ansible_facts['architecture'] }}-rpms"
       when:
-        - ansible_distribution == 'RedHat'
+        - ansible_facts['distribution'] == 'RedHat'
         - kdevops_enable_guestfs|bool
 
     - name: Select the Oracle Linux CodeReady Builder repo
       ansible.builtin.set_fact:
         codeready_repo: "ol9_codeready_builder"
       when:
-        - ansible_distribution == 'OracleLinux'
+        - ansible_facts['distribution'] == 'OracleLinux'
 
     - name: Select the CentOS CodeReady Builder repo
       ansible.builtin.set_fact:
         codeready_repo: "crb"
       when:
-        - ansible_distribution == 'CentOS'
+        - ansible_facts['distribution'] == 'CentOS'
 
     - name: Select the AWS RHEL CodeReady Builder repo
       ansible.builtin.set_fact:
-        codeready_repo: "codeready-builder-for-rhel-{{ ansible_distribution_major_version }}-rhui-rpms"
+        codeready_repo: "codeready-builder-for-rhel-{{ ansible_facts['distribution_major_version'] }}-rhui-rpms"
       when:
-        - ansible_distribution == 'RedHat'
+        - ansible_facts['distribution'] == 'RedHat'
         - kdevops_enable_terraform|bool
         - kdevops_terraform_provider == "aws"
 
     - name: Select the Azure RHEL CodeReady Builder repo
       ansible.builtin.set_fact:
-        codeready_repo: "codeready-builder-for-rhel-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}-rhui-rpms"
+        codeready_repo: "codeready-builder-for-rhel-{{ ansible_facts['distribution_major_version'] }}-{{ ansible_facts['architecture'] }}-rhui-rpms"
       when:
-        - ansible_distribution == 'RedHat'
+        - ansible_facts['distribution'] == 'RedHat'
         - kdevops_enable_terraform|bool
         - kdevops_terraform_provider == "azure"
 
     - name: Select the Google Cloud RHEL CodeReady Builder repo
       ansible.builtin.set_fact:
-        codeready_repo: "rhui-codeready-builder-for-rhel-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}-rhui-rpms"
+        codeready_repo: "rhui-codeready-builder-for-rhel-{{ ansible_facts['distribution_major_version'] }}-{{ ansible_facts['architecture'] }}-rhui-rpms"
       when:
-        - ansible_distribution == 'RedHat'
+        - ansible_facts['distribution'] == 'RedHat'
         - kdevops_enable_terraform|bool
         - kdevops_terraform_provider == "gce"
 
diff --git a/playbooks/roles/create_data_partition/tasks/main.yml b/playbooks/roles/create_data_partition/tasks/main.yml
index 04c2ae92b474..1004f5574650 100644
--- a/playbooks/roles/create_data_partition/tasks/main.yml
+++ b/playbooks/roles/create_data_partition/tasks/main.yml
@@ -39,7 +39,7 @@
         - data_volume_id in item.value.links.ids
       loop_control:
         label: "Adding block device: /dev/{{ item.key }}"
-      with_dict: "{{ ansible_devices }}"
+      with_dict: "{{ ansible_facts['devices'] }}"
 
 - name: Create data partition if not created yet
   ansible.builtin.include_role:
diff --git a/playbooks/roles/create_nfs_mount/tasks/main.yml b/playbooks/roles/create_nfs_mount/tasks/main.yml
index d94c21f478e7..6efae5848da8 100644
--- a/playbooks/roles/create_nfs_mount/tasks/main.yml
+++ b/playbooks/roles/create_nfs_mount/tasks/main.yml
@@ -12,7 +12,7 @@
   failed_when: false
   tags: vars
 
-- name: Install NFS client administrative tools for {{ ansible_os_family }}
+- name: Install NFS client administrative tools for {{ ansible_facts['os_family'] }}
   tags: deps
   vars:
     packages:
@@ -26,7 +26,7 @@
   become_flags: "su - -c"
   become_method: ansible.builtin.sudo
   ansible.builtin.package:
-    name: "{{ packages[ansible_os_family] }}"
+    name: "{{ packages[ansible_facts['os_family']] }}"
     state: present
 
 - name: Inspect {{ nfs_mounted_on }}
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 89ed1d59ff31..6b95079a19f2 100644
--- a/playbooks/roles/create_partition/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/create_partition/tasks/install-deps/redhat/main.yml
@@ -24,4 +24,4 @@
   vars:
     packages:
       - btrfs-progs
-  when: ansible_distribution == 'Fedora'
+  when: ansible_facts['distribution'] == 'Fedora'
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 d5cb5b199af6..07cd1c6431af 100644
--- a/playbooks/roles/create_partition/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/create_partition/tasks/install-deps/suse/main.yml
@@ -2,25 +2,25 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
 
 - name: Set SLE specific version labels to make checks easier
   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" }}'
-    is_sle15: '{{ ansible_distribution_major_version == "15" }}'
-    is_sle10sp3: '{{ ansible_distribution_version == "10.3" }}'
-    is_sle11sp1: '{{ ansible_distribution_version == "11.1" }}'
-    is_sle11sp4: '{{ ansible_distribution_version == "11.4" }}'
-    is_sle12sp1: '{{ ansible_distribution_version == "12.1" }}'
-    is_sle12sp3: '{{ ansible_distribution_version == "12.3" }}'
-    is_sle12sp5: '{{ ansible_distribution_version == "12.5" }}'
-    is_sle15sp2: '{{ ansible_distribution_version == "15.2" }}'
-    is_sle15sp3: '{{ ansible_distribution_version == "15.3" }}'
-    is_sle15sp4: '{{ ansible_distribution_version == "15.4" }}'
+    is_sle10: '{{ ansible_facts["distribution_major_version"] == "10" }}'
+    is_sle11: '{{ ansible_facts["distribution_major_version"] == "11" }}'
+    is_sle12: '{{ ansible_facts["distribution_major_version"] == "12" }}'
+    is_sle15: '{{ ansible_facts["distribution_major_version"] == "15" }}'
+    is_sle10sp3: '{{ ansible_facts["distribution_version"] == "10.3" }}'
+    is_sle11sp1: '{{ ansible_facts["distribution_version"] == "11.1" }}'
+    is_sle11sp4: '{{ ansible_facts["distribution_version"] == "11.4" }}'
+    is_sle12sp1: '{{ ansible_facts["distribution_version"] == "12.1" }}'
+    is_sle12sp3: '{{ ansible_facts["distribution_version"] == "12.3" }}'
+    is_sle12sp5: '{{ ansible_facts["distribution_version"] == "12.5" }}'
+    is_sle15sp2: '{{ ansible_facts["distribution_version"] == "15.2" }}'
+    is_sle15sp3: '{{ ansible_facts["distribution_version"] == "15.3" }}'
+    is_sle15sp4: '{{ ansible_facts["distribution_version"] == "15.4" }}'
   when:
     - is_sle|bool
 
diff --git a/playbooks/roles/cxl/tasks/install-deps/suse/main.yml b/playbooks/roles/cxl/tasks/install-deps/suse/main.yml
index e25eec43cb40..11da9971dd91 100644
--- a/playbooks/roles/cxl/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/cxl/tasks/install-deps/suse/main.yml
@@ -2,25 +2,25 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
 
 - name: Set SLE specific version labels to make checks easier
   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" }}'
-    is_sle15: '{{ ansible_distribution_major_version == "15" }}'
-    is_sle10sp3: '{{ ansible_distribution_version == "10.3" }}'
-    is_sle11sp1: '{{ ansible_distribution_version == "11.1" }}'
-    is_sle11sp4: '{{ ansible_distribution_version == "11.4" }}'
-    is_sle12sp1: '{{ ansible_distribution_version == "12.1" }}'
-    is_sle12sp3: '{{ ansible_distribution_version == "12.3" }}'
-    is_sle12sp5: '{{ ansible_distribution_version == "12.5" }}'
-    is_sle15sp2: '{{ ansible_distribution_version == "15.2" }}'
-    is_sle15sp3: '{{ ansible_distribution_version == "15.3" }}'
-    is_sle15sp4: '{{ ansible_distribution_version == "15.4" }}'
+    is_sle10: '{{ ansible_facts["distribution_major_version"] == "10" }}'
+    is_sle11: '{{ ansible_facts["distribution_major_version"] == "11" }}'
+    is_sle12: '{{ ansible_facts["distribution_major_version"] == "12" }}'
+    is_sle15: '{{ ansible_facts["distribution_major_version"] == "15" }}'
+    is_sle10sp3: '{{ ansible_facts["distribution_version"] == "10.3" }}'
+    is_sle11sp1: '{{ ansible_facts["distribution_version"] == "11.1" }}'
+    is_sle11sp4: '{{ ansible_facts["distribution_version"] == "11.4" }}'
+    is_sle12sp1: '{{ ansible_facts["distribution_version"] == "12.1" }}'
+    is_sle12sp3: '{{ ansible_facts["distribution_version"] == "12.3" }}'
+    is_sle12sp5: '{{ ansible_facts["distribution_version"] == "12.5" }}'
+    is_sle15sp2: '{{ ansible_facts["distribution_version"] == "15.2" }}'
+    is_sle15sp3: '{{ ansible_facts["distribution_version"] == "15.3" }}'
+    is_sle15sp4: '{{ ansible_facts["distribution_version"] == "15.4" }}'
   when:
     - is_sle|bool
 
diff --git a/playbooks/roles/cxl/tasks/main.yml b/playbooks/roles/cxl/tasks/main.yml
index 225368062c04..c3a224a4223c 100644
--- a/playbooks/roles/cxl/tasks/main.yml
+++ b/playbooks/roles/cxl/tasks/main.yml
@@ -99,7 +99,7 @@
 - name: Print uname for each host
   tags: ["ndctl", "cxl-test-prep", "copy_results"]
   ansible.builtin.debug:
-    var: ansible_kernel
+    var: ansible_facts['kernel']
 - name: Clear out old meson results directory on target hosts
   become: true
   become_flags: "su - -c"
diff --git a/playbooks/roles/devconfig/tasks/datacrunch_ml.yml b/playbooks/roles/devconfig/tasks/datacrunch_ml.yml
index d4a9cbc73fbf..7efc5e3bdbc6 100644
--- a/playbooks/roles/devconfig/tasks/datacrunch_ml.yml
+++ b/playbooks/roles/devconfig/tasks/datacrunch_ml.yml
@@ -45,7 +45,7 @@
     - name: Execute uv installer
       ansible.builtin.command:
         cmd: sh /tmp/uv-installer.sh
-        creates: "{{ ansible_env.HOME }}/.local/bin/uv"
+        creates: "{{ ansible_facts['env'].HOME }}/.local/bin/uv"
     - name: Remove uv installer script
       ansible.builtin.file:
         path: /tmp/uv-installer.sh
@@ -53,13 +53,13 @@
 
 - name: Create Python virtual environment
   ansible.builtin.command:
-    cmd: python3 -m venv {{ ansible_env.HOME }}/.venv
-    creates: "{{ ansible_env.HOME }}/.venv/bin/activate"
+    cmd: python3 -m venv {{ ansible_facts['env'].HOME }}/.venv
+    creates: "{{ ansible_facts['env'].HOME }}/.venv/bin/activate"
 
 - name: Install PyTorch in virtual environment
   ansible.builtin.pip:
     name: torch
-    virtualenv: "{{ ansible_env.HOME }}/.venv"
+    virtualenv: "{{ ansible_facts['env'].HOME }}/.venv"
 
 - name: Unload NVIDIA kernel modules to avoid PyTorch/driver mismatch
   become: true
@@ -105,7 +105,7 @@
 
 - name: Auto-activate Python virtualenv on login
   ansible.builtin.lineinfile:
-    path: "{{ ansible_env.HOME }}/.bashrc"
+    path: "{{ ansible_facts['env'].HOME }}/.bashrc"
     line: "test -s ~/.venv/bin/activate && source ~/.venv/bin/activate"
     create: yes
     mode: '0644'
diff --git a/playbooks/roles/devconfig/tasks/install-deps/main.yml b/playbooks/roles/devconfig/tasks/install-deps/main.yml
index f3170bac6998..018dcfad12a3 100644
--- a/playbooks/roles/devconfig/tasks/install-deps/main.yml
+++ b/playbooks/roles/devconfig/tasks/install-deps/main.yml
@@ -4,7 +4,7 @@
   ansible.builtin.setup:
     gather_subset:
       - "os_family"
-  when: ansible_os_family is not defined
+  when: ansible_facts['os_family'] is not defined
   tags: vars_simple
 
 - name: Import optional user secret specific variables
@@ -29,20 +29,20 @@
 - name: Debian-specific setup
   ansible.builtin.include_tasks: debian/main.yml
   when:
-    - ansible_os_family == "Debian"
+    - ansible_facts['os_family'] == "Debian"
     - devconfig_try_refresh_repos|bool or devconfig_try_install_kdevtools|bool or kdevops_cli_install|bool
   tags: vars_simple
 
 - name: SuSE-specific setup
   ansible.builtin.include_tasks: suse/main.yml
   when:
-    - ansible_os_family == "Suse"
+    - ansible_facts['os_family'] == "Suse"
     - devconfig_try_refresh_repos|bool or devconfig_try_install_kdevtools|bool or kdevops_cli_install|bool
   tags: vars_simple
 
 - name: Red Hat-specific setup
   ansible.builtin.include_tasks: redhat/main.yml
   when:
-    - ansible_os_family == "RedHat"
+    - ansible_facts['os_family'] == "RedHat"
     - devconfig_try_refresh_repos|bool or devconfig_try_install_kdevtools|bool or kdevops_cli_install|bool
   tags: vars_simple
diff --git a/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml b/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml
index f851da05ab4a..df4dbc834329 100644
--- a/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml
@@ -80,7 +80,7 @@
   ansible.builtin.include_role:
     name: epel-release
   when:
-    - ansible_distribution != "Fedora"
+    - ansible_facts['distribution'] != "Fedora"
 
 - name: Build install package list
   ansible.builtin.set_fact:
@@ -117,7 +117,7 @@
     packages: "{{ packages + ['btrfs-progs'] }}"
   when:
     - devconfig_try_install_kdevtools|bool
-    - ansible_distribution == 'Fedora'
+    - ansible_facts['distribution'] == 'Fedora'
 
 - name: Add GNU screen to install package list
   ansible.builtin.set_fact:
diff --git a/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml b/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml
index 04ec3f70beee..dbf7757db7f9 100644
--- a/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml
@@ -2,26 +2,26 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
   tags: ["vars"]
 
 - name: Set SLE specific version labels to make checks easier
   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" }}'
-    is_sle15: '{{ ansible_distribution_major_version == "15" }}'
-    is_sle10sp3: '{{ ansible_distribution_version == "10.3" }}'
-    is_sle11sp1: '{{ ansible_distribution_version == "11.1" }}'
-    is_sle11sp4: '{{ ansible_distribution_version == "11.4" }}'
-    is_sle12sp1: '{{ ansible_distribution_version == "12.1" }}'
-    is_sle12sp3: '{{ ansible_distribution_version == "12.3" }}'
-    is_sle12sp5: '{{ ansible_distribution_version == "12.5" }}'
-    is_sle15sp2: '{{ ansible_distribution_version == "15.2" }}'
-    is_sle15sp3: '{{ ansible_distribution_version == "15.3" }}'
-    is_sle15sp4: '{{ ansible_distribution_version == "15.4" }}'
+    is_sle10: '{{ ansible_facts["distribution_major_version"] == "10" }}'
+    is_sle11: '{{ ansible_facts["distribution_major_version"] == "11" }}'
+    is_sle12: '{{ ansible_facts["distribution_major_version"] == "12" }}'
+    is_sle15: '{{ ansible_facts["distribution_major_version"] == "15" }}'
+    is_sle10sp3: '{{ ansible_facts["distribution_version"] == "10.3" }}'
+    is_sle11sp1: '{{ ansible_facts["distribution_version"] == "11.1" }}'
+    is_sle11sp4: '{{ ansible_facts["distribution_version"] == "11.4" }}'
+    is_sle12sp1: '{{ ansible_facts["distribution_version"] == "12.1" }}'
+    is_sle12sp3: '{{ ansible_facts["distribution_version"] == "12.3" }}'
+    is_sle12sp5: '{{ ansible_facts["distribution_version"] == "12.5" }}'
+    is_sle15sp2: '{{ ansible_facts["distribution_version"] == "15.2" }}'
+    is_sle15sp3: '{{ ansible_facts["distribution_version"] == "15.3" }}'
+    is_sle15sp4: '{{ ansible_facts["distribution_version"] == "15.4" }}'
   when:
     - is_sle|bool
   tags: ["vars"]
@@ -187,7 +187,7 @@
 - name: Register for python2 module product when needed
   become: true
   become_method: sudo
-  ansible.builtin.command: "SUSEConnect -p sle-module-python2/{{ ansible_distribution_version }}/{{ ansible_architecture }}"
+  ansible.builtin.command: "SUSEConnect -p sle-module-python2/{{ ansible_facts['distribution_version'] }}/{{ ansible_facts['architecture'] }}"
   when:
     - suse_register_system|bool
     - repos_will_be_added|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 372a93326528..07bc4da8cf33 100644
--- a/playbooks/roles/devconfig/tasks/kotd-rev-kernel/suse/main.yml
+++ b/playbooks/roles/devconfig/tasks/kotd-rev-kernel/suse/main.yml
@@ -2,25 +2,25 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
   tags: ["vars"]
 
 - name: Set SLE specific version labels to make checks easier
   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" }}'
-    is_sle15: '{{ ansible_distribution_major_version == "15" }}'
-    is_sle10sp3: '{{ ansible_distribution_version == "10.3" }}'
-    is_sle11sp1: '{{ ansible_distribution_version == "11.1" }}'
-    is_sle11sp4: '{{ ansible_distribution_version == "11.4" }}'
-    is_sle12sp1: '{{ ansible_distribution_version == "12.1" }}'
-    is_sle12sp3: '{{ ansible_distribution_version == "12.3" }}'
-    is_sle12sp5: '{{ ansible_distribution_version == "12.5" }}'
-    is_sle15sp2: '{{ ansible_distribution_version == "15.2" }}'
-    is_sle15sp3: '{{ ansible_distribution_version == "15.3" }}'
+    is_sle10: '{{ ansible_facts["distribution_major_version"] == "10" }}'
+    is_sle11: '{{ ansible_facts["distribution_major_version"] == "11" }}'
+    is_sle12: '{{ ansible_facts["distribution_major_version"] == "12" }}'
+    is_sle15: '{{ ansible_facts["distribution_major_version"] == "15" }}'
+    is_sle10sp3: '{{ ansible_facts["distribution_version"] == "10.3" }}'
+    is_sle11sp1: '{{ ansible_facts["distribution_version"] == "11.1" }}'
+    is_sle11sp4: '{{ ansible_facts["distribution_version"] == "11.4" }}'
+    is_sle12sp1: '{{ ansible_facts["distribution_version"] == "12.1" }}'
+    is_sle12sp3: '{{ ansible_facts["distribution_version"] == "12.3" }}'
+    is_sle12sp5: '{{ ansible_facts["distribution_version"] == "12.5" }}'
+    is_sle15sp2: '{{ ansible_facts["distribution_version"] == "15.2" }}'
+    is_sle15sp3: '{{ ansible_facts["distribution_version"] == "15.3" }}'
   when:
     - is_sle|bool
   tags: ["vars"]
diff --git a/playbooks/roles/devconfig/tasks/main.yml b/playbooks/roles/devconfig/tasks/main.yml
index 6df6ea7ec5f8..f7a53b1111e5 100644
--- a/playbooks/roles/devconfig/tasks/main.yml
+++ b/playbooks/roles/devconfig/tasks/main.yml
@@ -648,7 +648,7 @@
 - name: "Group up facts we'll give to the host"
   tags: ["journal_ln"]
   ansible.builtin.set_fact:
-    node_host_ip: "{{ ansible_ssh_host }} {{ ansible_default_ipv4.address }}"
+    node_host_ip: "{{ ansible_ssh_host }} {{ ansible_facts['default_ipv4'].address }}"
   delegate_facts: true
   when: devconfig_enable_systemd_journal_remote|bool
 
diff --git a/playbooks/roles/dhclient_cache/tasks/isc-dhclient.yml b/playbooks/roles/dhclient_cache/tasks/isc-dhclient.yml
index c7bd176a6af4..ec7eaa27b671 100644
--- a/playbooks/roles/dhclient_cache/tasks/isc-dhclient.yml
+++ b/playbooks/roles/dhclient_cache/tasks/isc-dhclient.yml
@@ -5,7 +5,7 @@
 
 - name: Detect primary network interface
   ansible.builtin.set_fact:
-    primary_interface: "{{ ansible_default_ipv4.interface | default('eth0') }}"
+    primary_interface: "{{ ansible_facts['default_ipv4'].interface | default('eth0') }}"
 
 - name: Create dhclient enter hook for persistent lease caching
   become: true
diff --git a/playbooks/roles/dhclient_cache/tasks/networkmanager.yml b/playbooks/roles/dhclient_cache/tasks/networkmanager.yml
index bd5c799e20ed..6ef169d80a71 100644
--- a/playbooks/roles/dhclient_cache/tasks/networkmanager.yml
+++ b/playbooks/roles/dhclient_cache/tasks/networkmanager.yml
@@ -5,7 +5,7 @@
 
 - name: Detect primary network interface
   ansible.builtin.set_fact:
-    primary_interface: "{{ ansible_default_ipv4.interface | default('eth0') }}"
+    primary_interface: "{{ ansible_facts['default_ipv4'].interface | default('eth0') }}"
 
 - name: Create NetworkManager dispatcher script for DHCP cache save
   become: true
diff --git a/playbooks/roles/dhclient_cache/tasks/wicked.yml b/playbooks/roles/dhclient_cache/tasks/wicked.yml
index 36683fbe80ee..ab8758209008 100644
--- a/playbooks/roles/dhclient_cache/tasks/wicked.yml
+++ b/playbooks/roles/dhclient_cache/tasks/wicked.yml
@@ -5,7 +5,7 @@
 
 - name: Detect primary network interface
   ansible.builtin.set_fact:
-    primary_interface: "{{ ansible_default_ipv4.interface | default('eth0') }}"
+    primary_interface: "{{ ansible_facts['default_ipv4'].interface | default('eth0') }}"
 
 - name: Create wicked extension for DHCP cache save
   become: true
diff --git a/playbooks/roles/docker-mirror/tasks/install-deps/debian/main.yml b/playbooks/roles/docker-mirror/tasks/install-deps/debian/main.yml
index 1bb810d10631..fcee17d3bf62 100644
--- a/playbooks/roles/docker-mirror/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/docker-mirror/tasks/install-deps/debian/main.yml
@@ -17,13 +17,13 @@
 - name: Add Docker GPG key
   become: true
   ansible.builtin.apt_key:
-    url: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg
+    url: https://download.docker.com/linux/{{ ansible_facts['distribution'] | lower }}/gpg
     state: present
 
 - name: Add Docker repository
   become: true
   ansible.builtin.apt_repository:
-    repo: "deb [arch={{ ansible_architecture }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable"
+    repo: "deb [arch={{ ansible_facts['architecture'] }}] https://download.docker.com/linux/{{ ansible_facts['distribution'] | lower }} {{ ansible_facts['distribution_release'] }} stable"
     state: present
 
 - name: Install Docker
diff --git a/playbooks/roles/docker-mirror/tasks/install-deps/main.yml b/playbooks/roles/docker-mirror/tasks/install-deps/main.yml
index 41d9f2c17721..df69ee913720 100644
--- a/playbooks/roles/docker-mirror/tasks/install-deps/main.yml
+++ b/playbooks/roles/docker-mirror/tasks/install-deps/main.yml
@@ -4,12 +4,12 @@
 
 - name: Install Docker dependencies on Debian
   ansible.builtin.include_tasks: debian/main.yml
-  when: ansible_os_family == "Debian"
+  when: ansible_facts['os_family'] == "Debian"
 
 - name: Install Docker dependencies on RedHat
   ansible.builtin.include_tasks: redhat/main.yml
-  when: ansible_os_family == "RedHat"
+  when: ansible_facts['os_family'] == "RedHat"
 
 - name: Install Docker dependencies on SUSE
   ansible.builtin.include_tasks: suse/main.yml
-  when: ansible_os_family == "Suse"
+  when: ansible_facts['os_family'] == "Suse"
diff --git a/playbooks/roles/docker-mirror/templates/docker-manifest.txt.j2 b/playbooks/roles/docker-mirror/templates/docker-manifest.txt.j2
index 67619e667b65..46d03fbae432 100644
--- a/playbooks/roles/docker-mirror/templates/docker-manifest.txt.j2
+++ b/playbooks/roles/docker-mirror/templates/docker-manifest.txt.j2
@@ -1,5 +1,5 @@
 # Docker Images Mirror Manifest
-# Generated: {{ ansible_date_time.iso8601 }}
+# Generated: {{ ansible_facts['date_time'].iso8601 }}
 # Registry: localhost:{{ docker_mirror_port | default(5000) }}
 #
 # Cached Images:
diff --git a/playbooks/roles/epel-release/tasks/main.yml b/playbooks/roles/epel-release/tasks/main.yml
index a0403b9f1353..213fc2f54a47 100644
--- a/playbooks/roles/epel-release/tasks/main.yml
+++ b/playbooks/roles/epel-release/tasks/main.yml
@@ -3,8 +3,8 @@
 - name: Set epel-release package name for RHEL
   ansible.builtin.set_fact:
     epel_package:
-      - "https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm"
-  when: ansible_distribution == "RedHat"
+      - "https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_facts['distribution_major_version'] }}.noarch.rpm"
+  when: ansible_facts['distribution'] == "RedHat"
 
 - name: Install the distribution's epel-release package
   become: true
@@ -25,8 +25,8 @@
       - "/usr/bin/dnf"
       - "config-manager"
       - "--enable"
-      - "{{ 'ol' + ansible_distribution_major_version + '_developer_EPEL' }}"
+      - "{{ 'ol' + ansible_facts['distribution_major_version'] + '_developer_EPEL' }}"
   register: enable
   changed_when: enable is succeeded
   when:
-    - ansible_distribution == "OracleLinux"
+    - ansible_facts['distribution'] == "OracleLinux"
diff --git a/playbooks/roles/fio-tests/tasks/install-deps/main.yml b/playbooks/roles/fio-tests/tasks/install-deps/main.yml
index 65f35b93d9b7..74d494e914e3 100644
--- a/playbooks/roles/fio-tests/tasks/install-deps/main.yml
+++ b/playbooks/roles/fio-tests/tasks/install-deps/main.yml
@@ -1,4 +1,4 @@
 ---
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Include distribution-specific installation tasks
-  ansible.builtin.include_tasks: "{{ ansible_os_family | lower }}/main.yml"
+  ansible.builtin.include_tasks: "{{ ansible_facts['os_family'] | lower }}/main.yml"
diff --git a/playbooks/roles/fstests/tasks/install-deps/redhat/main.yml b/playbooks/roles/fstests/tasks/install-deps/redhat/main.yml
index 5d4a1034f0b4..0163e2822945 100644
--- a/playbooks/roles/fstests/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/fstests/tasks/install-deps/redhat/main.yml
@@ -8,7 +8,7 @@
   ansible.builtin.include_role:
     name: epel-release
   when:
-    - ansible_distribution != "Fedora"
+    - ansible_facts['distribution'] != "Fedora"
 
 - name: Install build dependencies for fstests
   become: true
@@ -104,7 +104,7 @@
   vars:
     packages:
       - btrfs-progs
-  when: ansible_distribution == 'Fedora'
+  when: ansible_facts['distribution'] == 'Fedora'
 
 - name: Install dependencies for building xfsprogs
   become: true
diff --git a/playbooks/roles/fstests/tasks/install-deps/suse/main.yml b/playbooks/roles/fstests/tasks/install-deps/suse/main.yml
index 077ec31b98b7..aa734345a7e3 100644
--- a/playbooks/roles/fstests/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/fstests/tasks/install-deps/suse/main.yml
@@ -2,25 +2,25 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
 
 - name: Set SLE specific version labels to make checks easier
   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" }}'
-    is_sle15: '{{ ansible_distribution_major_version == "15" }}'
-    is_sle10sp3: '{{ ansible_distribution_version == "10.3" }}'
-    is_sle11sp1: '{{ ansible_distribution_version == "11.1" }}'
-    is_sle11sp4: '{{ ansible_distribution_version == "11.4" }}'
-    is_sle12sp1: '{{ ansible_distribution_version == "12.1" }}'
-    is_sle12sp3: '{{ ansible_distribution_version == "12.3" }}'
-    is_sle12sp5: '{{ ansible_distribution_version == "12.5" }}'
-    is_sle15sp2: '{{ ansible_distribution_version == "15.2" }}'
-    is_sle15sp3: '{{ ansible_distribution_version == "15.3" }}'
-    is_sle15sp4: '{{ ansible_distribution_version == "15.4" }}'
+    is_sle10: '{{ ansible_facts["distribution_major_version"] == "10" }}'
+    is_sle11: '{{ ansible_facts["distribution_major_version"] == "11" }}'
+    is_sle12: '{{ ansible_facts["distribution_major_version"] == "12" }}'
+    is_sle15: '{{ ansible_facts["distribution_major_version"] == "15" }}'
+    is_sle10sp3: '{{ ansible_facts["distribution_version"] == "10.3" }}'
+    is_sle11sp1: '{{ ansible_facts["distribution_version"] == "11.1" }}'
+    is_sle11sp4: '{{ ansible_facts["distribution_version"] == "11.4" }}'
+    is_sle12sp1: '{{ ansible_facts["distribution_version"] == "12.1" }}'
+    is_sle12sp3: '{{ ansible_facts["distribution_version"] == "12.3" }}'
+    is_sle12sp5: '{{ ansible_facts["distribution_version"] == "12.5" }}'
+    is_sle15sp2: '{{ ansible_facts["distribution_version"] == "15.2" }}'
+    is_sle15sp3: '{{ ansible_facts["distribution_version"] == "15.3" }}'
+    is_sle15sp4: '{{ ansible_facts["distribution_version"] == "15.4" }}'
   when:
     - is_sle|bool
 
diff --git a/playbooks/roles/fstests/tasks/main.yml b/playbooks/roles/fstests/tasks/main.yml
index 8fb454420936..c0f0fffba8a8 100644
--- a/playbooks/roles/fstests/tasks/main.yml
+++ b/playbooks/roles/fstests/tasks/main.yml
@@ -1079,7 +1079,7 @@
 - name: Print uname for each host
   tags: ["oscheck", "fstests", "run_tests"]
   ansible.builtin.debug:
-    var: ansible_kernel
+    var: ansible_facts['kernel']
 - name: Clean up our localhost results/last-run directory
   ansible.builtin.file:
     path: "{{ fstests_results_target }}/"
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 3ed23972f46e..a0d373b96676 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
@@ -2,23 +2,23 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
 
 - name: Set SLE specific version labels to make checks easier
   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" }}'
-    is_sle15: '{{ ansible_distribution_major_version == "15" }}'
-    is_sle10sp3: '{{ ansible_distribution_version == "10.3" }}'
-    is_sle11sp1: '{{ ansible_distribution_version == "11.1" }}'
-    is_sle11sp4: '{{ ansible_distribution_version == "11.4" }}'
-    is_sle12sp1: '{{ ansible_distribution_version == "12.1" }}'
-    is_sle12sp3: '{{ ansible_distribution_version == "12.3" }}'
-    is_sle15sp2: '{{ ansible_distribution_version == "15.2" }}'
-    is_sle15sp3: '{{ ansible_distribution_version == "15.3" }}'
+    is_sle10: '{{ ansible_facts["distribution_major_version"] == "10" }}'
+    is_sle11: '{{ ansible_facts["distribution_major_version"] == "11" }}'
+    is_sle12: '{{ ansible_facts["distribution_major_version"] == "12" }}'
+    is_sle15: '{{ ansible_facts["distribution_major_version"] == "15" }}'
+    is_sle10sp3: '{{ ansible_facts["distribution_version"] == "10.3" }}'
+    is_sle11sp1: '{{ ansible_facts["distribution_version"] == "11.1" }}'
+    is_sle11sp4: '{{ ansible_facts["distribution_version"] == "11.4" }}'
+    is_sle12sp1: '{{ ansible_facts["distribution_version"] == "12.1" }}'
+    is_sle12sp3: '{{ ansible_facts["distribution_version"] == "12.3" }}'
+    is_sle15sp2: '{{ ansible_facts["distribution_version"] == "15.2" }}'
+    is_sle15sp3: '{{ ansible_facts["distribution_version"] == "15.3" }}'
   when:
     - is_sle|bool
 
diff --git a/playbooks/roles/gitr/tasks/install-deps/main.yml b/playbooks/roles/gitr/tasks/install-deps/main.yml
index d4e7870e24a3..8dd7b1be14c5 100644
--- a/playbooks/roles/gitr/tasks/install-deps/main.yml
+++ b/playbooks/roles/gitr/tasks/install-deps/main.yml
@@ -5,8 +5,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
@@ -14,14 +14,14 @@
 - name: Debian-specific setup
   ansible.builtin.include_tasks: debian/main.yml
   when:
-    - ansible_os_family == "Debian"
+    - ansible_facts['os_family'] == "Debian"
 
 - name: SuSE-specific setup
   ansible.builtin.include_tasks: suse/main.yml
   when:
-    - ansible_os_family == "Suse"
+    - ansible_facts['os_family'] == "Suse"
 
 - name: Red Hat-specific setup
   ansible.builtin.include_tasks: redhat/main.yml
   when:
-    - ansible_os_family == "RedHat"
+    - ansible_facts['os_family'] == "RedHat"
diff --git a/playbooks/roles/gitr/tasks/install-deps/redhat/main.yml b/playbooks/roles/gitr/tasks/install-deps/redhat/main.yml
index b25c6454f1ea..6258fa5604f5 100644
--- a/playbooks/roles/gitr/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/gitr/tasks/install-deps/redhat/main.yml
@@ -4,19 +4,19 @@
   ansible.builtin.include_role:
     name: epel-release
   when:
-    - ansible_distribution != "Fedora"
+    - ansible_facts['distribution'] != "Fedora"
 
 - name: Update gitr dependencies for RHEL/Centos
   ansible.builtin.set_fact:
     gitr_packages: "{{ gitr_packages + ['perl-App-cpanminus'] }}"
   when:
-    - ansible_distribution != "Fedora"
+    - ansible_facts['distribution'] != "Fedora"
 
 - name: Update gitr dependencies for Fedora
   ansible.builtin.set_fact:
     gitr_packages: "{{ gitr_packages + ['cvsps', 'perl-TAP-Harness-Archive'] }}"
   when:
-    - ansible_distribution == "Fedora"
+    - ansible_facts['distribution'] == "Fedora"
 
 - name: Install dependencies for gitr
   become: true
@@ -35,10 +35,10 @@
     mode: new
   with_items: "{{ gitr_cpan_modules }}"
   when:
-    - ansible_distribution != "Fedora"
+    - ansible_facts['distribution'] != "Fedora"
 
 - name: Download and install cvsps
-  when: ansible_distribution != "Fedora"
+  when: ansible_facts['distribution'] != "Fedora"
   block:
     - name: Clone the cvsps source code
       ansible.builtin.git:
@@ -53,7 +53,7 @@
     - name: Build cvsps
       community.general.make:
         chdir: "{{ cvsps_data }}"
-        jobs: "{{ ansible_processor_nproc }}"
+        jobs: "{{ ansible_facts['processor_nproc'] }}"
 
     - name: Install cvsps
       become: true
diff --git a/playbooks/roles/gitr/tasks/main.yml b/playbooks/roles/gitr/tasks/main.yml
index f55840215882..cd4402deec90 100644
--- a/playbooks/roles/gitr/tasks/main.yml
+++ b/playbooks/roles/gitr/tasks/main.yml
@@ -27,7 +27,7 @@
   ansible.builtin.set_fact:
     gitr_results_full_path: "{{ topdir_path }}/workflows/gitr/results"
     gitr_results_target: "../workflows/gitr/results/last-run"
-    gitr_run_uniqifier: "{{ ansible_date_time.iso8601_basic_short }}"
+    gitr_run_uniqifier: "{{ ansible_facts['date_time'].iso8601_basic_short }}"
 
 - name: Clean up our localhost results/last-run directory
   ansible.builtin.file:
@@ -230,7 +230,7 @@
   tags: ["gitr", "build"]
   community.general.make:
     chdir: "{{ gitr_mnt }}/git"
-    jobs: "{{ ansible_processor_nproc }}"
+    jobs: "{{ ansible_facts['processor_nproc'] }}"
 
 - name: Set the test thread count (single)
   tags: run_tests
@@ -242,14 +242,14 @@
 - name: Set the test thread count (fast)
   tags: run_tests
   ansible.builtin.set_fact:
-    gitr_test_thread_count: "{{ ansible_processor_nproc }}"
+    gitr_test_thread_count: "{{ ansible_facts['processor_nproc'] }}"
   when:
     - gitr_thread_fast|bool
 
 - name: Set the test thread count (stress)
   tags: run_tests
   ansible.builtin.set_fact:
-    gitr_test_thread_count: "{{ ansible_processor_nproc * 2 }}"
+    gitr_test_thread_count: "{{ ansible_facts['processor_nproc'] * 2 }}"
   when:
     - gitr_thread_stress|bool
 
@@ -286,7 +286,7 @@
   register: rpc_results
   when:
     - gitr_fstype == "nfs"
-    - ansible_os_family == 'RedHat'
+    - ansible_facts['os_family'] == 'RedHat'
   changed_when: false
 
 - name: Capture RPC transport statistics
@@ -295,7 +295,7 @@
   register: xprt_results
   when:
     - gitr_fstype == "nfs"
-    - ansible_os_family == 'RedHat'
+    - ansible_facts['os_family'] == 'RedHat'
   changed_when: false
 
 - name: Save test summary output to a file
@@ -321,7 +321,7 @@
     mode: "u=rw,g=r,o=r"
   when:
     - gitr_fstype == "nfs"
-    - ansible_os_family == 'RedHat'
+    - ansible_facts['os_family'] == 'RedHat'
 
 - name: Save RPC transport statistics to a file
   tags: copy_results
@@ -331,7 +331,7 @@
     mode: "u=rw,g=r,o=r"
   when:
     - gitr_fstype == "nfs"
-    - ansible_os_family == 'RedHat'
+    - ansible_facts['os_family'] == 'RedHat'
 
 - name: Copy the TAP archive to the control node
   tags: copy_results
@@ -367,7 +367,7 @@
     validate_checksum: false
   when:
     - gitr_fstype == "nfs"
-    - ansible_os_family == 'RedHat'
+    - ansible_facts['os_family'] == 'RedHat'
 
 - name: Copy RPC transport statistics to the control node
   tags: copy_results
@@ -378,7 +378,7 @@
     validate_checksum: false
   when:
     - gitr_fstype == "nfs"
-    - ansible_os_family == 'RedHat'
+    - ansible_facts['os_family'] == 'RedHat'
 
 - name: Verify last-run kernel directory exists
   tags: ["copy_results"]
diff --git a/playbooks/roles/guestfs/tasks/bringup/main.yml b/playbooks/roles/guestfs/tasks/bringup/main.yml
index 06a0e60dfcee..16f7470bde6f 100644
--- a/playbooks/roles/guestfs/tasks/bringup/main.yml
+++ b/playbooks/roles/guestfs/tasks/bringup/main.yml
@@ -94,7 +94,7 @@
               if ansible_cfg_ssh_port | int != 22 else []
             ) + (
               ["--no-selinux-relabel"]
-              if (guestfs_fedora is defined and guestfs_fedora|bool and ansible_distribution|lower in ['debian', 'ubuntu'])
+              if (guestfs_fedora is defined and guestfs_fedora|bool and ansible_facts['distribution']|lower in ['debian', 'ubuntu'])
               else []
             )
           }}
diff --git a/playbooks/roles/guestfs/tasks/install-deps/main.yml b/playbooks/roles/guestfs/tasks/install-deps/main.yml
index 11b0320754f6..7d44d98875e8 100644
--- a/playbooks/roles/guestfs/tasks/install-deps/main.yml
+++ b/playbooks/roles/guestfs/tasks/install-deps/main.yml
@@ -4,16 +4,16 @@
   ansible.builtin.import_tasks:
     file: "{{ role_path }}/tasks/install-deps/debian/main.yml"
   when:
-    - ansible_os_family == "Debian"
+    - ansible_facts['os_family'] == "Debian"
 
 - name: SuSE-specific setup
   ansible.builtin.import_tasks:
     file: "{{ role_path }}/tasks/install-deps/suse/main.yml"
   when:
-    - ansible_os_family == "Suse"
+    - ansible_facts['os_family'] == "Suse"
 
 - name: Red Hat-specific setup
   ansible.builtin.import_tasks:
     file: "{{ role_path }}/tasks/install-deps/redhat/main.yml"
   when:
-    - ansible_os_family == "Redhat"
+    - ansible_facts['os_family'] == "Redhat"
diff --git a/playbooks/roles/guestfs/tasks/install-deps/redhat/main.yml b/playbooks/roles/guestfs/tasks/install-deps/redhat/main.yml
index a6acf543923c..4eaaa0e3d0d7 100644
--- a/playbooks/roles/guestfs/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/guestfs/tasks/install-deps/redhat/main.yml
@@ -10,4 +10,4 @@
       - dhcpcd
     state: present
   when:
-    - ansible_distribution != "Fedora"
+    - ansible_facts['distribution'] != "Fedora"
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 f1501896c822..dadd51142ca2 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
@@ -2,9 +2,9 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
   tags: ["vars"]
 
 - name: Install kdevops generic dependencies
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 fb3aab145fee..05d352eb8078 100644
--- a/playbooks/roles/install_terraform/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/install_terraform/tasks/install-deps/suse/main.yml
@@ -2,9 +2,9 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["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
diff --git a/playbooks/roles/iscsi/tasks/add_initiator.yml b/playbooks/roles/iscsi/tasks/add_initiator.yml
index 1af4931f8873..096b2e97e5f7 100644
--- a/playbooks/roles/iscsi/tasks/add_initiator.yml
+++ b/playbooks/roles/iscsi/tasks/add_initiator.yml
@@ -5,8 +5,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
diff --git a/playbooks/roles/iscsi/tasks/main.yml b/playbooks/roles/iscsi/tasks/main.yml
index 803bcb3cc51b..a41f70d70753 100644
--- a/playbooks/roles/iscsi/tasks/main.yml
+++ b/playbooks/roles/iscsi/tasks/main.yml
@@ -5,8 +5,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
diff --git a/playbooks/roles/kdc/tasks/install-deps/main.yml b/playbooks/roles/kdc/tasks/install-deps/main.yml
index 59336c35da5a..2a2392fe0e66 100644
--- a/playbooks/roles/kdc/tasks/install-deps/main.yml
+++ b/playbooks/roles/kdc/tasks/install-deps/main.yml
@@ -2,12 +2,12 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Debian-specific set up
   ansible.builtin.include_tasks: debian/main.yml
-  when: ansible_os_family == 'Debian'
+  when: ansible_facts['os_family'] == 'Debian'
 
 - name: SuSE-specific set up
   ansible.builtin.include_tasks: suse/main.yml
-  when: ansible_os_family == 'Suse'
+  when: ansible_facts['os_family'] == 'Suse'
 
 - name: Red Hat-specific set up
   ansible.builtin.include_tasks: redhat/main.yml
-  when: ansible_os_family == 'RedHat'
+  when: ansible_facts['os_family'] == 'RedHat'
diff --git a/playbooks/roles/kdc/tasks/main.yml b/playbooks/roles/kdc/tasks/main.yml
index b6f5dc91c34b..b5c9c7826d87 100644
--- a/playbooks/roles/kdc/tasks/main.yml
+++ b/playbooks/roles/kdc/tasks/main.yml
@@ -5,23 +5,23 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
 
 - name: Debian-specific setup
   ansible.builtin.include_tasks: install-deps/debian/main.yml
-  when: ansible_os_family == 'Debian'
+  when: ansible_facts['os_family'] == 'Debian'
 
 - name: SuSE-specific setup
   ansible.builtin.include_tasks: install-deps/suse/main.yml
-  when: ansible_os_family == 'Suse'
+  when: ansible_facts['os_family'] == 'Suse'
 
 - name: Red Hat-specific setup
   ansible.builtin.include_tasks: install-deps/redhat/main.yml
-  when: ansible_os_family == 'RedHat'
+  when: ansible_facts['os_family'] == 'RedHat'
 
 - name: Configure /etc/krb5.conf
   become: true
@@ -91,7 +91,7 @@
     permanent: true
     immediate: true
     state: enabled
-  when: ansible_os_family == 'RedHat'
+  when: ansible_facts['os_family'] == 'RedHat'
 
 - name: Allow access to kadmin service in firewalld
   become: true
@@ -101,7 +101,7 @@
     permanent: true
     immediate: true
     state: enabled
-  when: ansible_os_family == 'RedHat'
+  when: ansible_facts['os_family'] == 'RedHat'
 
 - name: Start and enable {{ krb5kdc_service_name }} systemd service
   become: true
diff --git a/playbooks/roles/kdc/templates/krb5.conf.j2 b/playbooks/roles/kdc/templates/krb5.conf.j2
index e42ffb9bcc8d..8c964ac73352 100644
--- a/playbooks/roles/kdc/templates/krb5.conf.j2
+++ b/playbooks/roles/kdc/templates/krb5.conf.j2
@@ -20,8 +20,8 @@ includedir /etc/krb5.conf.d/
 
 [realms]
 {{ krb5_realm }} = {
-    kdc = {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}:88
-    admin_server = {{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}:749
+    kdc = {{ hostvars[inventory_hostname]['ansible_facts['default_ipv4']']['address'] }}:88
+    admin_server = {{ hostvars[inventory_hostname]['ansible_facts['default_ipv4']']['address'] }}:749
 }
 
 [domain_realm]
diff --git a/playbooks/roles/krb5/tasks/install-deps/main.yml b/playbooks/roles/krb5/tasks/install-deps/main.yml
index 59336c35da5a..2a2392fe0e66 100644
--- a/playbooks/roles/krb5/tasks/install-deps/main.yml
+++ b/playbooks/roles/krb5/tasks/install-deps/main.yml
@@ -2,12 +2,12 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Debian-specific set up
   ansible.builtin.include_tasks: debian/main.yml
-  when: ansible_os_family == 'Debian'
+  when: ansible_facts['os_family'] == 'Debian'
 
 - name: SuSE-specific set up
   ansible.builtin.include_tasks: suse/main.yml
-  when: ansible_os_family == 'Suse'
+  when: ansible_facts['os_family'] == 'Suse'
 
 - name: Red Hat-specific set up
   ansible.builtin.include_tasks: redhat/main.yml
-  when: ansible_os_family == 'RedHat'
+  when: ansible_facts['os_family'] == 'RedHat'
diff --git a/playbooks/roles/krb5/tasks/main.yml b/playbooks/roles/krb5/tasks/main.yml
index bac7477683c5..abd4da30949a 100644
--- a/playbooks/roles/krb5/tasks/main.yml
+++ b/playbooks/roles/krb5/tasks/main.yml
@@ -2,15 +2,15 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Debian-specific setup
   ansible.builtin.include_tasks: install-deps/debian/main.yml
-  when: ansible_os_family == 'Debian'
+  when: ansible_facts['os_family'] == 'Debian'
 
 - name: SuSE-specific setup
   ansible.builtin.include_tasks: install-deps/suse/main.yml
-  when: ansible_os_family == 'Suse'
+  when: ansible_facts['os_family'] == 'Suse'
 
 - name: Red Hat-specific setup
   ansible.builtin.include_tasks: install-deps/redhat/main.yml
-  when: ansible_os_family == 'RedHat'
+  when: ansible_facts['os_family'] == 'RedHat'
 
 - name: Configure /etc/krb5.conf
   become: true
@@ -36,13 +36,13 @@
   become: true
   become_method: sudo
   ansible.builtin.command:
-    cmd: kadmin -w {{ krb5_admin_pw }} -q "addprinc -randkey nfs/{{ hostvars[inventory_hostname].ansible_fqdn }}"
+    cmd: kadmin -w {{ krb5_admin_pw }} -q "addprinc -randkey nfs/{{ hostvars[inventory_hostname].ansible_facts['fqdn'] }}"
 
 - name: Add nfs principal to keytab
   become: true
   become_method: sudo
   ansible.builtin.command:
-    cmd: kadmin -w {{ krb5_admin_pw }} -q "ktadd -k /etc/krb5.keytab nfs/{{ hostvars[inventory_hostname].ansible_fqdn }}"
+    cmd: kadmin -w {{ krb5_admin_pw }} -q "ktadd -k /etc/krb5.keytab nfs/{{ hostvars[inventory_hostname].ansible_facts['fqdn'] }}"
 
 - name: Restart rpc.gssd on the NFS server
   become: true
diff --git a/playbooks/roles/ktls/tasks/install-deps/redhat/main.yml b/playbooks/roles/ktls/tasks/install-deps/redhat/main.yml
index ef5ce809b501..75a372c67f15 100644
--- a/playbooks/roles/ktls/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/ktls/tasks/install-deps/redhat/main.yml
@@ -4,7 +4,7 @@
   ansible.builtin.include_role:
     name: epel-release
   when:
-    - ansible_distribution != "Fedora"
+    - ansible_facts['distribution'] != "Fedora"
 
 - name: Install ktls dependencies
   become: true
diff --git a/playbooks/roles/ktls/tasks/main.yml b/playbooks/roles/ktls/tasks/main.yml
index e734d16b450b..678cd4b2fe65 100644
--- a/playbooks/roles/ktls/tasks/main.yml
+++ b/playbooks/roles/ktls/tasks/main.yml
@@ -73,7 +73,7 @@
     privatekey_path: "/etc/pki/tls/private/ktls.key"
     subject_alt_name:
       - "DNS:{{ ansible_host }}"
-      - "IP:{{ ansible_default_ipv4.address }}"
+      - "IP:{{ ansible_facts['default_ipv4'].address }}"
   register: csr
   become: true
 
diff --git a/playbooks/roles/libvirt_user/tasks/enable-user/main.yml b/playbooks/roles/libvirt_user/tasks/enable-user/main.yml
index 7eb558810038..868534d39114 100644
--- a/playbooks/roles/libvirt_user/tasks/enable-user/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/enable-user/main.yml
@@ -2,12 +2,13 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Debian user enablement
   ansible.builtin.include_tasks: enable-user/debian/main.yml
-  when: ansible_os_family == 'Debian'
+  when: ansible_facts['os_family'] == 'Debian'
 
 - name: SuSE user enablement
   ansible.builtin.include_tasks: enable-user/suse/main.yml
-  when: ansible_os_family == 'Suse'
+  when: ansible_facts['os_family'] == 'Suse'
 
 - name: Red Hat family user enablement
   ansible.builtin.include_tasks: enable-user/redhat/main.yml
-  when: ansible_os_family == 'RedHat'
+  when:
+    - ansible_facts['os_family'] == 'RedHat'
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 feb2e7f44eed..c9a815c2f976 100644
--- a/playbooks/roles/libvirt_user/tasks/enable-user/redhat/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/enable-user/redhat/main.yml
@@ -4,7 +4,7 @@
   become: true
   become_method: sudo
   ansible.builtin.user:
-    name: "{{ ansible_env.USER }}"
+    name: "{{ ansible_facts['env'].USER }}"
     groups: libvirt,kvm,qemu
     append: true
   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 6db38ff82d34..f1a6ebc3aa0e 100644
--- a/playbooks/roles/libvirt_user/tasks/enable-user/suse/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/enable-user/suse/main.yml
@@ -4,7 +4,7 @@
   become: true
   become_method: sudo
   ansible.builtin.user:
-    name: "{{ ansible_env.USER }}"
+    name: "{{ ansible_facts['env'].USER }}"
     groups: libvirt,kvm,qemu
     append: true
   when:
diff --git a/playbooks/roles/linux-mirror/tasks/install-deps/nfs/main.yml b/playbooks/roles/linux-mirror/tasks/install-deps/nfs/main.yml
index 80b2ac2ffa0f..9d3a989aebd4 100644
--- a/playbooks/roles/linux-mirror/tasks/install-deps/nfs/main.yml
+++ b/playbooks/roles/linux-mirror/tasks/install-deps/nfs/main.yml
@@ -3,14 +3,14 @@
 - name: Import Debian NFS dependencies
   ansible.builtin.import_tasks: debian/main.yml
   when:
-    - ansible_os_family == 'Debian'
+    - ansible_facts['os_family'] == 'Debian'
 
 - name: Import RedHat NFS dependencies
   ansible.builtin.import_tasks: redhat/main.yml
   when:
-    - ansible_os_family == 'RedHat'
+    - ansible_facts['os_family'] == 'RedHat'
 
 - name: Import SUSE NFS dependencies
   ansible.builtin.import_tasks: suse/main.yml
   when:
-    - ansible_os_family == 'Suse'
+    - ansible_facts['os_family'] == 'Suse'
diff --git a/playbooks/roles/linux-mirror/tasks/main.yml b/playbooks/roles/linux-mirror/tasks/main.yml
index 990779abb7cb..3bed3c30bf82 100644
--- a/playbooks/roles/linux-mirror/tasks/main.yml
+++ b/playbooks/roles/linux-mirror/tasks/main.yml
@@ -14,7 +14,7 @@
 - name: Install dependencies for the linux-mirror role
   ansible.builtin.include_tasks: install-deps/fedora/main.yml
   when:
-    - ansible_distribution == 'Fedora'
+    - ansible_facts['distribution'] == 'Fedora'
   tags: ["mirror"]
 
 - name: Fail if linux_mirror_nfs is enabled but user is not root
@@ -283,7 +283,7 @@
   ansible.builtin.set_fact:
     nfs_server_service: nfs-kernel-server
   when:
-    - ansible_os_family == 'Debian'
+    - ansible_facts['os_family'] == 'Debian'
     - linux_mirror_nfs | bool
   tags: ["mirror"]
 
@@ -291,7 +291,7 @@
   ansible.builtin.set_fact:
     nfs_server_service: nfs-server
   when:
-    - ansible_os_family == 'RedHat'
+    - ansible_facts['os_family'] == 'RedHat'
     - linux_mirror_nfs | bool
   tags: ["mirror"]
 
@@ -299,7 +299,7 @@
   ansible.builtin.set_fact:
     nfs_server_service: nfsserver
   when:
-    - ansible_os_family == 'Suse'
+    - ansible_facts['os_family'] == 'Suse'
     - linux_mirror_nfs | bool
   tags: ["mirror"]
 
diff --git a/playbooks/roles/ltp/tasks/main.yml b/playbooks/roles/ltp/tasks/main.yml
index f46c436696da..c680f4bfeec1 100644
--- a/playbooks/roles/ltp/tasks/main.yml
+++ b/playbooks/roles/ltp/tasks/main.yml
@@ -79,8 +79,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
@@ -89,7 +89,7 @@
   ansible.builtin.include_role:
     name: codereadyrepo
   when:
-    - ansible_os_family == "RedHat"
+    - ansible_facts['os_family'] == "RedHat"
 
 - name: Install dependencies for ltp
   tags: ["build", "ltp"]
@@ -161,7 +161,7 @@
   community.general.make:
     chdir: "{{ ltp_build_dir }}"
     target: all
-    jobs: "{{ ansible_processor_nproc }}"
+    jobs: "{{ ansible_facts['processor_nproc'] }}"
 
 - name: Set the pathname of the install directory
   tags: ["build", "ltp"]
@@ -215,7 +215,7 @@
   community.general.make:
     chdir: "{{ ltp_build_dir }}"
     target: install
-    jobs: "{{ ansible_processor_nproc }}"
+    jobs: "{{ ansible_facts['processor_nproc'] }}"
 
 - name: Start the rpcbind service
   tags: ["ltp"]
diff --git a/playbooks/roles/milvus/tasks/benchmark.yml b/playbooks/roles/milvus/tasks/benchmark.yml
index d65d417e1607..8542ad100f9d 100644
--- a/playbooks/roles/milvus/tasks/benchmark.yml
+++ b/playbooks/roles/milvus/tasks/benchmark.yml
@@ -49,7 +49,7 @@
       ansible.builtin.command: >
         python3 {{ ai_vector_db_milvus_data_dir }}/scripts/milvus_benchmark.py
         --config {{ ai_vector_db_milvus_data_dir }}/scripts/benchmark_config.json
-        --output {{ ai_benchmark_results_dir }}/milvus/results_{{ ansible_date_time.epoch }}.json
+        --output {{ ai_benchmark_results_dir }}/milvus/results_{{ ansible_facts['date_time'].epoch }}.json
       register: benchmark_result
       when: ai_vector_db_milvus_benchmark_enable | bool
 
diff --git a/playbooks/roles/milvus/tasks/install_docker.yml b/playbooks/roles/milvus/tasks/install_docker.yml
index 322c27335f3b..afdad188a7e2 100644
--- a/playbooks/roles/milvus/tasks/install_docker.yml
+++ b/playbooks/roles/milvus/tasks/install_docker.yml
@@ -5,7 +5,7 @@
   register: docker_packages_check
   changed_when: false
   failed_when: false
-  when: ansible_os_family == "Debian"
+  when: ansible_facts['os_family'] == "Debian"
 
 - name: Install Docker and Python dependencies
   ansible.builtin.package:
@@ -19,7 +19,7 @@
     state: present
   become: true
   when:
-    - ansible_os_family == "Debian"
+    - ansible_facts['os_family'] == "Debian"
     - docker_packages_check.rc != 0
 
 - name: Check if Docker packages are installed (RedHat)
@@ -28,7 +28,7 @@
   register: docker_packages_check_rh
   changed_when: false
   failed_when: false
-  when: ansible_os_family == "RedHat"
+  when: ansible_facts['os_family'] == "RedHat"
 
 - name: Install Docker and Python dependencies (RedHat)
   ansible.builtin.package:
@@ -41,7 +41,7 @@
     state: present
   become: true
   when:
-    - ansible_os_family == "RedHat"
+    - ansible_facts['os_family'] == "RedHat"
     - docker_packages_check_rh.rc != 0
 
 - name: Check if user is in docker group
diff --git a/playbooks/roles/minio_install/tasks/main.yml b/playbooks/roles/minio_install/tasks/main.yml
index 683f05ea5a9f..58c0141969f4 100644
--- a/playbooks/roles/minio_install/tasks/main.yml
+++ b/playbooks/roles/minio_install/tasks/main.yml
@@ -15,7 +15,7 @@
       - python3-bpfcc
     state: present
   become: yes
-  when: ansible_os_family == "Debian"
+  when: ansible_facts['os_family'] == "Debian"
 
 - name: Install Docker and monitoring dependencies (RedHat)
   package:
@@ -25,7 +25,7 @@
       - python3-bcc
     state: present
   become: yes
-  when: ansible_os_family == "RedHat"
+  when: ansible_facts['os_family'] == "RedHat"
 
 - name: Install Docker and monitoring dependencies (SUSE)
   package:
@@ -35,7 +35,7 @@
       - python3-bcc
     state: present
   become: yes
-  when: ansible_os_family == "SUSE"
+  when: ansible_facts['os_family'] == "SUSE"
 
 - name: Ensure Docker service is running
   systemd:
diff --git a/playbooks/roles/minio_warp_run/tasks/main.yml b/playbooks/roles/minio_warp_run/tasks/main.yml
index 4abe58dac5f9..2052c761eaef 100644
--- a/playbooks/roles/minio_warp_run/tasks/main.yml
+++ b/playbooks/roles/minio_warp_run/tasks/main.yml
@@ -141,7 +141,7 @@
 
 - name: Set timestamp for consistent filename
   set_fact:
-    warp_timestamp: "{{ ansible_date_time.epoch }}"
+    warp_timestamp: "{{ ansible_facts['date_time'].epoch }}"
   when: not (minio_warp_run_comprehensive_suite | default(false))
 
 - name: Run MinIO Warp single benchmark with JSON output
@@ -149,7 +149,7 @@
     echo "=== Starting single benchmark ==="
     echo "Duration: {{ minio_warp_duration }}"
     echo "Full command:"
-    OUTPUT_FILE="/tmp/warp-results/warp_benchmark_{{ ansible_hostname }}_{{ warp_timestamp }}.json"
+    OUTPUT_FILE="/tmp/warp-results/warp_benchmark_{{ ansible_facts['hostname'] }}_{{ warp_timestamp }}.json"
 
     # Show the actual command being run
     set -x
@@ -163,7 +163,7 @@
       --duration="{{ minio_warp_duration }}" \
       --concurrent="{{ minio_warp_concurrent_requests }}" \
       --obj.size="{{ minio_warp_object_size }}" \
-      {% if minio_warp_enable_web_ui|default(false) %}--warp-client="{{ ansible_default_ipv4.address }}:{{ minio_warp_web_ui_port|default(7762) }}"{% endif %} \
+      {% if minio_warp_enable_web_ui|default(false) %}--warp-client="{{ ansible_facts['default_ipv4'].address }}:{{ minio_warp_web_ui_port|default(7762) }}"{% endif %} \
       --noclear \
       --json > "$OUTPUT_FILE" 2>&1
     RESULT=$?
@@ -192,12 +192,12 @@
 
 - name: Display benchmark completion
   debug:
-    msg: "MinIO Warp benchmark completed on {{ ansible_hostname }}"
+    msg: "MinIO Warp benchmark completed on {{ ansible_facts['hostname'] }}"
   when: (warp_output is defined and warp_output.rc | default(1) == 0) or (suite_output is defined and suite_output.rc | default(1) == 0)
 
 - name: Check if results file exists
   stat:
-    path: "/tmp/warp-results/warp_benchmark_{{ ansible_hostname }}_{{ warp_timestamp }}.json"
+    path: "/tmp/warp-results/warp_benchmark_{{ ansible_facts['hostname'] }}_{{ warp_timestamp }}.json"
   register: results_file
   when: warp_timestamp is defined
 
@@ -208,7 +208,7 @@
 
 - name: Copy results to local system
   fetch:
-    src: "/tmp/warp-results/warp_benchmark_{{ ansible_hostname }}_{{ warp_timestamp }}.json"
+    src: "/tmp/warp-results/warp_benchmark_{{ ansible_facts['hostname'] }}_{{ warp_timestamp }}.json"
     dest: "{{ playbook_dir }}/../workflows/minio/results/"
     flat: yes
   become: no
@@ -227,7 +227,7 @@
     content: |
       MinIO Warp Benchmark Results
       ============================
-      Host: {{ ansible_hostname }}
+      Host: {{ ansible_facts['hostname'] }}
       Timestamp: {{ warp_timestamp | default('unknown') }}
 
       Debug Output:
@@ -239,12 +239,12 @@
 
       Error Output (if any):
       {{ warp_output.stderr | default('No errors') }}
-    dest: "/tmp/warp-results/warp_fallback_{{ ansible_hostname }}_{{ warp_timestamp | default(ansible_date_time.epoch) }}.txt"
+    dest: "/tmp/warp-results/warp_fallback_{{ ansible_facts['hostname'] }}_{{ warp_timestamp | default(ansible_facts['date_time'].epoch) }}.txt"
   when: warp_debug is defined
 
 - name: Copy fallback results
   fetch:
-    src: "/tmp/warp-results/warp_fallback_{{ ansible_hostname }}_{{ warp_timestamp | default(ansible_date_time.epoch) }}.txt"
+    src: "/tmp/warp-results/warp_fallback_{{ ansible_facts['hostname'] }}_{{ warp_timestamp | default(ansible_facts['date_time'].epoch) }}.txt"
     dest: "{{ playbook_dir }}/../workflows/minio/results/"
     flat: yes
   when: warp_debug is defined and not (results_file is defined and not results_file.skipped | default(false) and results_file.stat.exists | default(false))
diff --git a/playbooks/roles/mmtests_compare/tasks/main.yml b/playbooks/roles/mmtests_compare/tasks/main.yml
index 134b42e1567f..91f7703f7eb5 100644
--- a/playbooks/roles/mmtests_compare/tasks/main.yml
+++ b/playbooks/roles/mmtests_compare/tasks/main.yml
@@ -394,8 +394,8 @@
   vars:
     benchmark_name: "{{ mmtests_test_type }}"
     test_description: "Performance Benchmark"
-    analysis_date: "{{ ansible_date_time.date }}"
-    analysis_time: "{{ ansible_date_time.time }}"
+    analysis_date: "{{ ansible_facts['date_time'].date }}"
+    analysis_time: "{{ ansible_facts['date_time'].time }}"
     baseline_hostname: "{{ baseline_hostname }}"
     baseline_kernel: "{{ baseline_kernel }}"
     dev_hostname: "{{ dev_hostname }}"
diff --git a/playbooks/roles/monitoring/tasks/install-deps/main.yml b/playbooks/roles/monitoring/tasks/install-deps/main.yml
index 4aec23ba6bdb..9153b7654aad 100644
--- a/playbooks/roles/monitoring/tasks/install-deps/main.yml
+++ b/playbooks/roles/monitoring/tasks/install-deps/main.yml
@@ -3,7 +3,7 @@
 # Install monitoring dependencies based on distro
 - name: Set the distro group
   ansible.builtin.set_fact:
-    kdevops_target_distro_group: '{{ ansible_distribution | lower }}'
+    kdevops_target_distro_group: '{{ ansible_facts["distribution"] | lower }}'
 
-- name: Import install-deps task for {{ ansible_distribution | lower }}
+- name: Import install-deps task for {{ ansible_facts['distribution'] | lower }}
   ansible.builtin.include_tasks: "{{ kdevops_target_distro_group }}/main.yml"
diff --git a/playbooks/roles/monitoring/tasks/monitor_collect.yml b/playbooks/roles/monitoring/tasks/monitor_collect.yml
index 982767d9da78..c4afa34cb045 100644
--- a/playbooks/roles/monitoring/tasks/monitor_collect.yml
+++ b/playbooks/roles/monitoring/tasks/monitor_collect.yml
@@ -145,7 +145,7 @@
   become_method: sudo
   ansible.builtin.fetch:
     src: "{{ item.path }}"
-    dest: "{{ monitoring_results_path }}/fragmentation/{{ ansible_hostname }}_{{ item.path | basename }}"
+    dest: "{{ monitoring_results_path }}/fragmentation/{{ ansible_facts['hostname'] }}_{{ item.path | basename }}"
     flat: true
     validate_checksum: false
   loop: "{{ fragmentation_output_files.files | default([]) }}"
@@ -163,7 +163,7 @@
       Data saved to: {{ monitoring_results_path }}/fragmentation/
       Files collected:
       {% for file in fragmentation_output_files.files %}
-        - {{ ansible_hostname }}_{{ file.path | basename }}
+        - {{ ansible_facts['hostname'] }}_{{ file.path | basename }}
       {% endfor %}
       {% else %}
       No fragmentation data was collected.
diff --git a/playbooks/roles/monitoring/tasks/monitor_collect_only.yml b/playbooks/roles/monitoring/tasks/monitor_collect_only.yml
index ab96ef6c8a46..c699155bf13f 100644
--- a/playbooks/roles/monitoring/tasks/monitor_collect_only.yml
+++ b/playbooks/roles/monitoring/tasks/monitor_collect_only.yml
@@ -124,7 +124,7 @@
   become_method: sudo
   ansible.builtin.fetch:
     src: /root/monitoring/folio_migration_stats_snapshot.txt
-    dest: "{{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_stats_interim.txt"
+    dest: "{{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_stats_interim.txt"
     flat: true
     validate_checksum: false
   when:
@@ -147,7 +147,7 @@
   become_method: sudo
   ansible.builtin.fetch:
     src: "{{ monitor_fragmentation_output_dir|default('/root/monitoring/fragmentation') }}/fragmentation_snapshot.json"
-    dest: "{{ monitoring_results_path }}/{{ ansible_hostname }}_fragmentation_data_interim.json"
+    dest: "{{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_fragmentation_data_interim.json"
     flat: true
     validate_checksum: false
   when:
@@ -161,7 +161,7 @@
   ansible.builtin.debug:
     msg: |
       Interim folio migration monitoring data collected (monitoring still running).
-      Data saved to: {{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_stats_interim.txt
+      Data saved to: {{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_stats_interim.txt
   when:
     - monitor_developmental_stats|default(false)|bool
     - monitor_folio_migration|default(false)|bool
diff --git a/playbooks/roles/monitoring/tasks/monitors/folio_migration/collect.yml b/playbooks/roles/monitoring/tasks/monitors/folio_migration/collect.yml
index 6db92371e329..970a09fd32eb 100644
--- a/playbooks/roles/monitoring/tasks/monitors/folio_migration/collect.yml
+++ b/playbooks/roles/monitoring/tasks/monitors/folio_migration/collect.yml
@@ -85,7 +85,7 @@
   become_method: sudo
   ansible.builtin.fetch:
     src: /root/monitoring/folio_migration_stats.txt
-    dest: "{{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_stats.txt"
+    dest: "{{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_stats.txt"
     flat: true
     validate_checksum: false
   when: folio_migration_data_file.stat.exists|default(false)
@@ -102,7 +102,7 @@
   become_method: sudo
   ansible.builtin.fetch:
     src: /root/monitoring/folio_migration_plot.png
-    dest: "{{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_plot.png"
+    dest: "{{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_plot.png"
     flat: true
     validate_checksum: false
   when: folio_migration_plot_file.stat.exists|default(false)
@@ -111,9 +111,9 @@
   ansible.builtin.debug:
     msg: |
       Folio migration monitoring collection complete.
-      Data saved to: {{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_stats.txt
+      Data saved to: {{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_stats.txt
       {% if folio_migration_plot_file.stat.exists | default(false) %}
-      Plot saved to: {{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_plot.png
+      Plot saved to: {{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_plot.png
       {% endif %}
   when: folio_migration_data_file.stat.exists|default(false)
 
@@ -128,8 +128,8 @@
 - name: Generate folio migration plots on localhost
   ansible.builtin.command: |
     python3 {{ playbook_dir }}/roles/monitoring/files/plot_migration_stats.py
-      -o {{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_plot.png
-      {{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_stats.txt
+      -o {{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_plot.png
+      {{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_stats.txt
   delegate_to: localhost
   register: localhost_plot_generation
   ignore_errors: true
@@ -143,6 +143,6 @@
       {% if folio_localhost_matplotlib_check.rc != 0 %}
       Skipping plot generation - matplotlib not available on localhost
       {% else %}
-      Plot generated: {{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_plot.png
+      Plot generated: {{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_plot.png
       {% endif %}
   when: folio_migration_data_file.stat.exists|default(false)
diff --git a/playbooks/roles/monitoring/tasks/monitors/folio_migration/collect_only.yml b/playbooks/roles/monitoring/tasks/monitors/folio_migration/collect_only.yml
index 2682339af9aa..482ada823064 100644
--- a/playbooks/roles/monitoring/tasks/monitors/folio_migration/collect_only.yml
+++ b/playbooks/roles/monitoring/tasks/monitors/folio_migration/collect_only.yml
@@ -26,7 +26,7 @@
   become_method: sudo
   ansible.builtin.fetch:
     src: /root/monitoring/folio_migration_stats_snapshot.txt
-    dest: "{{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_stats_interim.txt"
+    dest: "{{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_stats_interim.txt"
     flat: true
     validate_checksum: false
   when:
@@ -50,7 +50,7 @@
     msg: |
       Folio migration interim data {% if folio_migration_data_file.stat.exists|default(false) %}collected{% else %}not available{% endif %}.
       {% if folio_migration_data_file.stat.exists|default(false) %}
-      Data saved to: {{ monitoring_results_path }}/{{ ansible_hostname }}_folio_migration_stats_interim.txt
+      Data saved to: {{ monitoring_results_path }}/{{ ansible_facts['hostname'] }}_folio_migration_stats_interim.txt
       {% endif %}
   when:
     - monitor_developmental_stats|default(false)|bool
diff --git a/playbooks/roles/nfsd/tasks/install-deps/debian/main.yml b/playbooks/roles/nfsd/tasks/install-deps/debian/main.yml
index 79a93f8a2f43..6d663ff931b3 100644
--- a/playbooks/roles/nfsd/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/nfsd/tasks/install-deps/debian/main.yml
@@ -5,8 +5,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
diff --git a/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml b/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml
index d8aa20877392..06bad7da9478 100644
--- a/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml
@@ -5,8 +5,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
diff --git a/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml b/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml
index 5d5716fd888c..e5d249942b00 100644
--- a/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml
@@ -5,8 +5,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
diff --git a/playbooks/roles/nfsd/tasks/main.yml b/playbooks/roles/nfsd/tasks/main.yml
index 2175af150e7b..2658ea4befde 100644
--- a/playbooks/roles/nfsd/tasks/main.yml
+++ b/playbooks/roles/nfsd/tasks/main.yml
@@ -2,15 +2,15 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Debian-specific setup
   ansible.builtin.include_tasks: install-deps/debian/main.yml
-  when: ansible_os_family == 'Debian'
+  when: ansible_facts['os_family'] == 'Debian'
 
 - name: SuSE-specific setup
   ansible.builtin.include_tasks: install-deps/suse/main.yml
-  when: ansible_os_family == 'Suse'
+  when: ansible_facts['os_family'] == 'Suse'
 
 - name: Red Hat-specific setup
   ansible.builtin.include_tasks: install-deps/redhat/main.yml
-  when: ansible_os_family == 'RedHat'
+  when: ansible_facts['os_family'] == 'RedHat'
 
 - name: Generate /etc/nfs.conf
   become: true
diff --git a/playbooks/roles/nfstest/tasks/main.yml b/playbooks/roles/nfstest/tasks/main.yml
index 1c1e3593701b..2fe7debc6827 100644
--- a/playbooks/roles/nfstest/tasks/main.yml
+++ b/playbooks/roles/nfstest/tasks/main.yml
@@ -17,8 +17,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
diff --git a/playbooks/roles/pkg/tasks/debian.yml b/playbooks/roles/pkg/tasks/debian.yml
index a33aa3f43a94..7ae480d4d255 100644
--- a/playbooks/roles/pkg/tasks/debian.yml
+++ b/playbooks/roles/pkg/tasks/debian.yml
@@ -2,10 +2,10 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Debian_libaio rename for buster
   ansible.builtin.set_fact:
-    is_bookworm: '{{ ansible_distribution_release == "bookworm" }}'
-    is_bullseye: '{{ ansible_distribution_release == "bullseye" }}'
-    is_buster: '{{ ansible_distribution_release == "buster" }}'
-    is_trixie: '{{ ansible_distribution_release == "trixie" }}'
+    is_bookworm: '{{ ansible_facts["distribution_release"] == "bookworm" }}'
+    is_bullseye: '{{ ansible_facts["distribution_release"] == "bullseye" }}'
+    is_buster: '{{ ansible_facts["distribution_release"] == "buster" }}'
+    is_trixie: '{{ ansible_facts["distribution_release"] == "trixie" }}'
 
 - name: Debian_libaio rename for debian releases older than trixie
   ansible.builtin.set_fact:
diff --git a/playbooks/roles/pynfs/tasks/install-deps/debian/main.yml b/playbooks/roles/pynfs/tasks/install-deps/debian/main.yml
index 7bd0c68dad0f..6dfe92198a83 100644
--- a/playbooks/roles/pynfs/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/pynfs/tasks/install-deps/debian/main.yml
@@ -28,4 +28,4 @@
     state: present
   tags: ["pynfs", "deps"]
   when:
-    - ansible_distribution_major_version | int >= 13
+    - ansible_facts['distribution_major_version'] | int >= 13
diff --git a/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml b/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml
index f8858c543488..18fda5ac4c08 100644
--- a/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml
@@ -31,4 +31,4 @@
   ansible.builtin.pip:
     name: xdrlib3
   when:
-    - ansible_distribution == "Fedora" or ansible_distribution_major_version | int > 8
+    - ansible_facts['distribution'] == "Fedora" or ansible_facts['distribution_major_version'] | int > 8
diff --git a/playbooks/roles/qemu/tasks/install-deps/suse/main.yml b/playbooks/roles/qemu/tasks/install-deps/suse/main.yml
index caaa81213a0b..f4e3880754be 100644
--- a/playbooks/roles/qemu/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/qemu/tasks/install-deps/suse/main.yml
@@ -2,8 +2,7 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set SUSE distribution facts
   ansible.builtin.set_fact:
-    qemu_is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
-
+    qemu_is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
 - name: Install QEMU build dependencies
   become: true
   become_method: ansible.builtin.sudo
diff --git a/playbooks/roles/reboot-limit/tasks/do-reboot-compare.yml b/playbooks/roles/reboot-limit/tasks/do-reboot-compare.yml
index 34c8f8e5b405..7418bcad203b 100644
--- a/playbooks/roles/reboot-limit/tasks/do-reboot-compare.yml
+++ b/playbooks/roles/reboot-limit/tasks/do-reboot-compare.yml
@@ -4,7 +4,7 @@
 - name: Print uname for each host
   tags: ["run_tests"]
   ansible.builtin.debug:
-    var: ansible_kernel
+    var: ansible_facts['kernel']
 - name: Hint to our watchdog our reboot-limit comparison tests are about to kick off
   ansible.builtin.file:
     path: "{{ reboot_limit_local_results_dir }}/.begin"
diff --git a/playbooks/roles/reboot-limit/tasks/do-reboot.yml b/playbooks/roles/reboot-limit/tasks/do-reboot.yml
index 7f0e398797ea..de360643c51f 100644
--- a/playbooks/roles/reboot-limit/tasks/do-reboot.yml
+++ b/playbooks/roles/reboot-limit/tasks/do-reboot.yml
@@ -3,7 +3,7 @@
 - name: Print uname for each host
   tags: ["run_tests"]
   ansible.builtin.debug:
-    var: ansible_kernel
+    var: ansible_facts['kernel']
 - name: Hint to our watchdog our reboot-limit tests are about to kick off
   ansible.builtin.file:
     path: "{{ reboot_limit_local_results_dir }}/.begin"
diff --git a/playbooks/roles/rxe/templates/udev-rule.j2 b/playbooks/roles/rxe/templates/udev-rule.j2
index 9f5b5e4a68f3..385a2851ff42 100644
--- a/playbooks/roles/rxe/templates/udev-rule.j2
+++ b/playbooks/roles/rxe/templates/udev-rule.j2
@@ -1,2 +1,2 @@
-SUBSYSTEM=="net", KERNEL=="{{ ansible_default_ipv4.interface }}", \
-   PROGRAM="/usr/sbin/rdma link add rxe0 type rxe netdev {{ ansible_default_ipv4.interface }}"
+SUBSYSTEM=="net", KERNEL=="{{ ansible_facts['default_ipv4'].interface }}", \
+   PROGRAM="/usr/sbin/rdma link add rxe0 type rxe netdev {{ ansible_facts['default_ipv4'].interface }}"
diff --git a/playbooks/roles/selftests/tasks/install-deps/suse/main.yml b/playbooks/roles/selftests/tasks/install-deps/suse/main.yml
index f3c76620398d..a40b067cfc97 100644
--- a/playbooks/roles/selftests/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/selftests/tasks/install-deps/suse/main.yml
@@ -2,25 +2,25 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
 
 - name: Set SLE specific version labels to make checks easier
   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" }}'
-    is_sle15: '{{ ansible_distribution_major_version == "15" }}'
-    is_sle10sp3: '{{ ansible_distribution_version == "10.3" }}'
-    is_sle11sp1: '{{ ansible_distribution_version == "11.1" }}'
-    is_sle11sp4: '{{ ansible_distribution_version == "11.4" }}'
-    is_sle12sp1: '{{ ansible_distribution_version == "12.1" }}'
-    is_sle12sp3: '{{ ansible_distribution_version == "12.3" }}'
-    is_sle12sp5: '{{ ansible_distribution_version == "12.5" }}'
-    is_sle15sp2: '{{ ansible_distribution_version == "15.2" }}'
-    is_sle15sp3: '{{ ansible_distribution_version == "15.3" }}'
-    is_sle15sp4: '{{ ansible_distribution_version == "15.4" }}'
+    is_sle10: '{{ ansible_facts["distribution_major_version"] == "10" }}'
+    is_sle11: '{{ ansible_facts["distribution_major_version"] == "11" }}'
+    is_sle12: '{{ ansible_facts["distribution_major_version"] == "12" }}'
+    is_sle15: '{{ ansible_facts["distribution_major_version"] == "15" }}'
+    is_sle10sp3: '{{ ansible_facts["distribution_version"] == "10.3" }}'
+    is_sle11sp1: '{{ ansible_facts["distribution_version"] == "11.1" }}'
+    is_sle11sp4: '{{ ansible_facts["distribution_version"] == "11.4" }}'
+    is_sle12sp1: '{{ ansible_facts["distribution_version"] == "12.1" }}'
+    is_sle12sp3: '{{ ansible_facts["distribution_version"] == "12.3" }}'
+    is_sle12sp5: '{{ ansible_facts["distribution_version"] == "12.5" }}'
+    is_sle15sp2: '{{ ansible_facts["distribution_version"] == "15.2" }}'
+    is_sle15sp3: '{{ ansible_facts["distribution_version"] == "15.3" }}'
+    is_sle15sp4: '{{ ansible_facts["distribution_version"] == "15.4" }}'
   when:
     - is_sle|bool
 
diff --git a/playbooks/roles/selftests/tasks/main.yml b/playbooks/roles/selftests/tasks/main.yml
index d99e056888e6..ea41ea80c179 100644
--- a/playbooks/roles/selftests/tasks/main.yml
+++ b/playbooks/roles/selftests/tasks/main.yml
@@ -267,7 +267,7 @@
 - name: Print uname for each host
   tags: ["selftests", "run_tests"]
   ansible.builtin.debug:
-    var: ansible_kernel
+    var: ansible_facts['kernel']
 - name: Load configfs module
   tags: ["selftests", "run_tests", "configfs"]
   become: true
diff --git a/playbooks/roles/siw/templates/udev-rule.j2 b/playbooks/roles/siw/templates/udev-rule.j2
index 54f7beb6a764..aad1fc204056 100644
--- a/playbooks/roles/siw/templates/udev-rule.j2
+++ b/playbooks/roles/siw/templates/udev-rule.j2
@@ -1,2 +1,2 @@
-SUBSYSTEM=="net", KERNEL=="{{ ansible_default_ipv4.interface }}", \
-   PROGRAM="/usr/sbin/rdma link add siw0 type siw netdev {{ ansible_default_ipv4.interface }}"
+SUBSYSTEM=="net", KERNEL=="{{ ansible_facts['default_ipv4'].interface }}", \
+   PROGRAM="/usr/sbin/rdma link add siw0 type siw netdev {{ ansible_facts['default_ipv4'].interface }}"
diff --git a/playbooks/roles/smbd/tasks/install-deps/debian/main.yml b/playbooks/roles/smbd/tasks/install-deps/debian/main.yml
index abbffad4099f..893361f2f3dc 100644
--- a/playbooks/roles/smbd/tasks/install-deps/debian/main.yml
+++ b/playbooks/roles/smbd/tasks/install-deps/debian/main.yml
@@ -5,8 +5,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
diff --git a/playbooks/roles/smbd/tasks/install-deps/main.yml b/playbooks/roles/smbd/tasks/install-deps/main.yml
index 59336c35da5a..2a2392fe0e66 100644
--- a/playbooks/roles/smbd/tasks/install-deps/main.yml
+++ b/playbooks/roles/smbd/tasks/install-deps/main.yml
@@ -2,12 +2,12 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Debian-specific set up
   ansible.builtin.include_tasks: debian/main.yml
-  when: ansible_os_family == 'Debian'
+  when: ansible_facts['os_family'] == 'Debian'
 
 - name: SuSE-specific set up
   ansible.builtin.include_tasks: suse/main.yml
-  when: ansible_os_family == 'Suse'
+  when: ansible_facts['os_family'] == 'Suse'
 
 - name: Red Hat-specific set up
   ansible.builtin.include_tasks: redhat/main.yml
-  when: ansible_os_family == 'RedHat'
+  when: ansible_facts['os_family'] == 'RedHat'
diff --git a/playbooks/roles/smbd/tasks/install-deps/redhat/main.yml b/playbooks/roles/smbd/tasks/install-deps/redhat/main.yml
index 72fbb03f676e..f1f7bcc708bd 100644
--- a/playbooks/roles/smbd/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/smbd/tasks/install-deps/redhat/main.yml
@@ -5,8 +5,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
diff --git a/playbooks/roles/smbd/tasks/install-deps/suse/main.yml b/playbooks/roles/smbd/tasks/install-deps/suse/main.yml
index edb2c9fb4890..9a2fc3cb7ced 100644
--- a/playbooks/roles/smbd/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/smbd/tasks/install-deps/suse/main.yml
@@ -5,8 +5,8 @@
   vars:
     params:
       files:
-        - "{{ ansible_distribution }}.yml"
-        - "{{ ansible_os_family }}.yml"
+        - "{{ ansible_facts['distribution'] }}.yml"
+        - "{{ ansible_facts['os_family'] }}.yml"
         - default.yml
       paths:
         - "vars"
diff --git a/playbooks/roles/smbd/tasks/main.yml b/playbooks/roles/smbd/tasks/main.yml
index ff17a2e08106..4df0617127f4 100644
--- a/playbooks/roles/smbd/tasks/main.yml
+++ b/playbooks/roles/smbd/tasks/main.yml
@@ -2,15 +2,15 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Debian-specific setup
   ansible.builtin.include_tasks: install-deps/debian/main.yml
-  when: ansible_os_family == 'Debian'
+  when: ansible_facts['os_family'] == 'Debian'
 
 - name: SuSE-specific setup
   ansible.builtin.include_tasks: install-deps/suse/main.yml
-  when: ansible_os_family == 'Suse'
+  when: ansible_facts['os_family'] == 'Suse'
 
 - name: Red Hat-specific setup
   ansible.builtin.include_tasks: install-deps/redhat/main.yml
-  when: ansible_os_family == 'RedHat'
+  when: ansible_facts['os_family'] == 'RedHat'
 
 - name: Create smb.conf
   become: true
diff --git a/playbooks/roles/steady_state/tasks/main.yaml b/playbooks/roles/steady_state/tasks/main.yaml
index 0cc08bd69935..0dba64555280 100644
--- a/playbooks/roles/steady_state/tasks/main.yaml
+++ b/playbooks/roles/steady_state/tasks/main.yaml
@@ -151,7 +151,7 @@
       {% else %}
         {{ device_physical_block_size | trim | int }}
       {% endif %}
-    effective_jobs: "{{ ssd_steady_state_numjobs | default(ansible_processor_vcpus, true) | int }}"
+    effective_jobs: "{{ ssd_steady_state_numjobs | default(ansible_facts['processor_vcpus'], true) | int }}"
   when: kdevops_run_ssd_steady_state|bool
   tags: ["prefill"]
 
diff --git a/playbooks/roles/sysbench/tasks/install-deps/redhat/main.yml b/playbooks/roles/sysbench/tasks/install-deps/redhat/main.yml
index 5f8f44a5976e..f964cf8c5255 100644
--- a/playbooks/roles/sysbench/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/sysbench/tasks/install-deps/redhat/main.yml
@@ -8,7 +8,7 @@
   ansible.builtin.include_role:
     name: epel-release
   when:
-    - ansible_distribution != "Fedora"
+    - ansible_facts['distribution'] != "Fedora"
 
 - name: Install docker
   become: true
diff --git a/playbooks/roles/sysbench/tasks/install-deps/suse/main.yml b/playbooks/roles/sysbench/tasks/install-deps/suse/main.yml
index 786464f9a4b0..2be469cf1022 100644
--- a/playbooks/roles/sysbench/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/sysbench/tasks/install-deps/suse/main.yml
@@ -2,25 +2,25 @@
 # SPDX-License-Identifier: copyleft-next-0.3.1
 - name: Set generic SUSE specific distro facts
   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 }}'
+    is_sle: '{{ (ansible_facts["distribution"] == "SLES") or (ansible_facts["distribution"] == "SLED") }}'
+    is_leap: '{{ "Leap" in ansible_facts["distribution"] }}'
+    is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_facts["distribution"] }}'
 
 - name: Set SLE specific version labels to make checks easier
   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" }}'
-    is_sle15: '{{ ansible_distribution_major_version == "15" }}'
-    is_sle10sp3: '{{ ansible_distribution_version == "10.3" }}'
-    is_sle11sp1: '{{ ansible_distribution_version == "11.1" }}'
-    is_sle11sp4: '{{ ansible_distribution_version == "11.4" }}'
-    is_sle12sp1: '{{ ansible_distribution_version == "12.1" }}'
-    is_sle12sp3: '{{ ansible_distribution_version == "12.3" }}'
-    is_sle12sp5: '{{ ansible_distribution_version == "12.5" }}'
-    is_sle15sp2: '{{ ansible_distribution_version == "15.2" }}'
-    is_sle15sp3: '{{ ansible_distribution_version == "15.3" }}'
-    is_sle15sp4: '{{ ansible_distribution_version == "15.4" }}'
+    is_sle10: '{{ ansible_facts["distribution_major_version"] == "10" }}'
+    is_sle11: '{{ ansible_facts["distribution_major_version"] == "11" }}'
+    is_sle12: '{{ ansible_facts["distribution_major_version"] == "12" }}'
+    is_sle15: '{{ ansible_facts["distribution_major_version"] == "15" }}'
+    is_sle10sp3: '{{ ansible_facts["distribution_version"] == "10.3" }}'
+    is_sle11sp1: '{{ ansible_facts["distribution_version"] == "11.1" }}'
+    is_sle11sp4: '{{ ansible_facts["distribution_version"] == "11.4" }}'
+    is_sle12sp1: '{{ ansible_facts["distribution_version"] == "12.1" }}'
+    is_sle12sp3: '{{ ansible_facts["distribution_version"] == "12.3" }}'
+    is_sle12sp5: '{{ ansible_facts["distribution_version"] == "12.5" }}'
+    is_sle15sp2: '{{ ansible_facts["distribution_version"] == "15.2" }}'
+    is_sle15sp3: '{{ ansible_facts["distribution_version"] == "15.3" }}'
+    is_sle15sp4: '{{ ansible_facts["distribution_version"] == "15.4" }}'
   when:
     - is_sle|bool
 
diff --git a/playbooks/roles/sysbench/tasks/mysql-docker/main.yaml b/playbooks/roles/sysbench/tasks/mysql-docker/main.yaml
index ff9ef3a6777e..d9e35c63b4ed 100644
--- a/playbooks/roles/sysbench/tasks/mysql-docker/main.yaml
+++ b/playbooks/roles/sysbench/tasks/mysql-docker/main.yaml
@@ -591,7 +591,7 @@
   tags: ["run_sysbench"]
   ansible.builtin.copy:
     content: "{{ sysbench_logs.stdout }}"
-    dest: "{{ sysbench_telemetry_path }}/docker-sysbench-results-{{ ansible_date_time.iso8601 }}.log"
+    dest: "{{ sysbench_telemetry_path }}/docker-sysbench-results-{{ ansible_facts['date_time'].iso8601 }}.log"
   when: "sysbench_type_mysql_docker|bool"
 
 - name: Collect sysbench docker logs for MySQL container
@@ -612,7 +612,7 @@
   become_method: 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_facts['date_time'].iso8601 }}.log"
     mode: "u=rw,g=r,o=r"
   when: "sysbench_type_mysql_docker|bool"
 
diff --git a/playbooks/roles/terraform/tasks/bringup/datacrunch.yml b/playbooks/roles/terraform/tasks/bringup/datacrunch.yml
index 7439027ce934..bfdbeacedaa7 100644
--- a/playbooks/roles/terraform/tasks/bringup/datacrunch.yml
+++ b/playbooks/roles/terraform/tasks/bringup/datacrunch.yml
@@ -5,7 +5,7 @@
 
 - name: Set DataCrunch provider architecture
   ansible.builtin.set_fact:
-    datacrunch_provider_arch: "{{ 'amd64' if ansible_architecture == 'x86_64' else ansible_architecture }}"
+    datacrunch_provider_arch: "{{ 'amd64' if ansible_facts['architecture'] == 'x86_64' else ansible_facts['architecture'] }}"
   tags:
     - bringup
     - destroy
@@ -15,7 +15,7 @@
   ansible.builtin.stat:
     path: >-
       ~/.terraform.d/plugins/registry.terraform.io/linux-kdevops/datacrunch/0.0.3/{{
-      ansible_system | lower }}_{{ datacrunch_provider_arch }}/terraform-provider-datacrunch_v0.0.3
+      ansible_facts['system'] | lower }}_{{ datacrunch_provider_arch }}/terraform-provider-datacrunch_v0.0.3
   register: datacrunch_provider_installed
   tags:
     - bringup
@@ -26,7 +26,7 @@
   ansible.builtin.shell:
     cmd: |
       PROVIDER_VERSION="0.0.3"
-      PROVIDER_OS="{{ ansible_system | lower }}"
+      PROVIDER_OS="{{ ansible_facts['system'] | lower }}"
       PROVIDER_ARCH="{{ datacrunch_provider_arch }}"
       PROVIDER_DIR="$HOME/.terraform.d/plugins/registry.terraform.io/linux-kdevops/datacrunch"
       PROVIDER_DIR="${PROVIDER_DIR}/${PROVIDER_VERSION}/${PROVIDER_OS}_${PROVIDER_ARCH}"
diff --git a/playbooks/roles/update_etc_hosts/tasks/main.yml b/playbooks/roles/update_etc_hosts/tasks/main.yml
index e3b6c92a38c2..1ae9f84f36fa 100644
--- a/playbooks/roles/update_etc_hosts/tasks/main.yml
+++ b/playbooks/roles/update_etc_hosts/tasks/main.yml
@@ -53,7 +53,7 @@
   ansible.builtin.lineinfile:
     dest: /etc/hosts
     regexp: '.*{{ item }}$'
-    line: "{{ hostvars[item].ansible_all_ipv4_addresses | ansible.utils.ipaddr(private_network) | first }} {{ item }}"
+    line: "{{ hostvars[item].ansible_facts['all_ipv4_addresses'] | ansible.utils.ipaddr(private_network) | first }} {{ item }}"
     state: present
   with_items: "{{ ueh_hosts }}"
   when:
@@ -66,7 +66,7 @@
   ansible.builtin.lineinfile:
     dest: /etc/hosts
     regexp: ".*{{ item }}$"
-    line: "{{ hostvars[item].ansible_all_ipv4_addresses | first }} {{ item }}"
+    line: "{{ hostvars[item].ansible_facts['all_ipv4_addresses'] | first }} {{ item }}"
     state: present
   with_items: "{{ ueh_hosts }}"
   when:
@@ -78,9 +78,9 @@
   become_method: sudo
   ansible.builtin.lineinfile:
     path: /etc/hosts
-    regexp: "^(127\\.0\\.1\\.1)(\\s+)unassigned-hostname\\.unassigned-domain\\s+({{ ansible_hostname }})$"
+    regexp: "^(127\\.0\\.1\\.1)(\\s+)unassigned-hostname\\.unassigned-domain\\s+({{ ansible_facts['hostname'] }})$"
     backrefs: true
     line: "\\1\\2\\3"
   when:
-    - ansible_os_family == 'Debian'
+    - ansible_facts['os_family'] == 'Debian'
     - kdevops_enable_guestfs|bool
diff --git a/playbooks/roles/vllm/tasks/configure-docker-data.yml b/playbooks/roles/vllm/tasks/configure-docker-data.yml
index ff8ea71301ba..726e304fd1b7 100644
--- a/playbooks/roles/vllm/tasks/configure-docker-data.yml
+++ b/playbooks/roles/vllm/tasks/configure-docker-data.yml
@@ -40,9 +40,9 @@
 - name: Auto-detect Docker mirror registry endpoint via 9P mount
   set_fact:
     docker_registry_mirrors:
-      - "http://{{ ansible_default_ipv4.gateway }}:5000"
+      - "http://{{ ansible_facts['default_ipv4'].gateway }}:5000"
     docker_insecure_registries:
-      - "{{ ansible_default_ipv4.gateway }}:5000"
+      - "{{ ansible_facts['default_ipv4'].gateway }}:5000"
     docker_mirror_type: "9p_mount"
   when:
     - docker_mirror_check.stat.exists
@@ -50,7 +50,7 @@
 
 - name: Auto-detect Docker mirror registry endpoint via IP
   ansible.builtin.uri:
-    url: "http://{{ ansible_default_ipv4.gateway }}:5000/v2/_catalog"
+    url: "http://{{ ansible_facts['default_ipv4'].gateway }}:5000/v2/_catalog"
     method: GET
     timeout: 5
   register: mirror_registry_check
@@ -62,9 +62,9 @@
 - name: Set Docker registry mirror configuration via IP
   set_fact:
     docker_registry_mirrors:
-      - "http://{{ ansible_default_ipv4.gateway }}:5000"
+      - "http://{{ ansible_facts['default_ipv4'].gateway }}:5000"
     docker_insecure_registries:
-      - "{{ ansible_default_ipv4.gateway }}:5000"
+      - "{{ ansible_facts['default_ipv4'].gateway }}:5000"
     docker_mirror_type: "ip_gateway"
   when:
     - not docker_mirror_check.stat.exists
diff --git a/playbooks/roles/vllm/tasks/deploy-bare-metal.yml b/playbooks/roles/vllm/tasks/deploy-bare-metal.yml
index 392788f3dabc..2d9876d6544e 100644
--- a/playbooks/roles/vllm/tasks/deploy-bare-metal.yml
+++ b/playbooks/roles/vllm/tasks/deploy-bare-metal.yml
@@ -261,7 +261,7 @@
 
           Service: {{ vllm_bare_metal_service_name | default('vllm') }}
           Status: Active
-          API Endpoint: http://{{ ansible_default_ipv4.address }}:{{ vllm_api_port | default(8000) }}
+          API Endpoint: http://{{ ansible_facts['default_ipv4'].address }}:{{ vllm_api_port | default(8000) }}
 
           Available Models:
           {% for model in models_response.json.data %}
diff --git a/playbooks/roles/vllm/tasks/install-deps/redhat/main.yml b/playbooks/roles/vllm/tasks/install-deps/redhat/main.yml
index fd2f4d535a09..9d62bb9d7917 100644
--- a/playbooks/roles/vllm/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/vllm/tasks/install-deps/redhat/main.yml
@@ -13,7 +13,7 @@
       - ca-certificates
       - gnupg
     state: present
-  when: ansible_distribution_major_version|int <= 7
+  when: ansible_facts['distribution_major_version']|int <= 7
   tags: ["vllm", "deps"]
 
 - name: Install vLLM system dependencies (dnf)
@@ -29,7 +29,7 @@
       - ca-certificates
       - gnupg
     state: present
-  when: ansible_distribution_major_version|int >= 8
+  when: ansible_facts['distribution_major_version']|int >= 8
   tags: ["vllm", "deps"]
 
 - name: Install Python development dependencies
@@ -44,7 +44,7 @@
       - gcc-c++
       - make
     state: present
-  when: ansible_distribution_major_version|int <= 7
+  when: ansible_facts['distribution_major_version']|int <= 7
   tags: ["vllm", "deps"]
 
 - name: Install Python development dependencies (dnf)
@@ -59,7 +59,7 @@
       - gcc-c++
       - make
     state: present
-  when: ansible_distribution_major_version|int >= 8
+  when: ansible_facts['distribution_major_version']|int >= 8
   tags: ["vllm", "deps"]
 
 - name: Install Python benchmarking dependencies (yum)
@@ -72,7 +72,7 @@
       - python3-pandas
       - python3-matplotlib
     state: present
-  when: ansible_distribution_major_version|int <= 7
+  when: ansible_facts['distribution_major_version']|int <= 7
   tags: ["vllm", "deps", "benchmark"]
 
 - name: Install Python benchmarking dependencies (dnf)
@@ -85,7 +85,7 @@
       - python3-pandas
       - python3-matplotlib
     state: present
-  when: ansible_distribution_major_version|int >= 8
+  when: ansible_facts['distribution_major_version']|int >= 8
   tags: ["vllm", "deps", "benchmark"]
 
 - name: Install Python Kubernetes client library (yum)
@@ -95,7 +95,7 @@
     name:
       - python3-kubernetes
     state: present
-  when: ansible_distribution_major_version|int <= 7
+  when: ansible_facts['distribution_major_version']|int <= 7
   tags: ["vllm", "deps"]
 
 - name: Install Python Kubernetes client library (dnf)
@@ -105,5 +105,5 @@
     name:
       - python3-kubernetes
     state: present
-  when: ansible_distribution_major_version|int >= 8
+  when: ansible_facts['distribution_major_version']|int >= 8
   tags: ["vllm", "deps"]
diff --git a/playbooks/roles/vllm/tasks/main.yml b/playbooks/roles/vllm/tasks/main.yml
index ca92d676645f..36dbffeaf6d9 100644
--- a/playbooks/roles/vllm/tasks/main.yml
+++ b/playbooks/roles/vllm/tasks/main.yml
@@ -147,15 +147,15 @@
         content: |
           {
             "hostname": "{{ inventory_hostname }}",
-            "distribution": "{{ ansible_distribution }}",
-            "distribution_version": "{{ ansible_distribution_version }}",
-            "kernel": "{{ ansible_kernel }}",
-            "processor_count": {{ ansible_processor_count }},
-            "processor_cores": {{ ansible_processor_cores }},
-            "memtotal_mb": {{ ansible_memtotal_mb }},
-            "virtualization_type": "{{ ansible_virtualization_type | default('bare-metal') }}",
-            "virtualization_role": "{{ ansible_virtualization_role | default('host') }}",
-            "date": "{{ ansible_date_time.iso8601 }}"
+            "distribution": "{{ ansible_facts['distribution'] }}",
+            "distribution_version": "{{ ansible_facts['distribution_version'] }}",
+            "kernel": "{{ ansible_facts['kernel'] }}",
+            "processor_count": {{ ansible_facts['processor_count'] }},
+            "processor_cores": {{ ansible_facts['processor_cores'] }},
+            "memtotal_mb": {{ ansible_facts['memtotal_mb'] }},
+            "virtualization_type": "{{ ansible_facts['virtualization_type'] | default('bare-metal') }}",
+            "virtualization_role": "{{ ansible_facts['virtualization_role'] | default('host') }}",
+            "date": "{{ ansible_facts['date_time'].iso8601 }}"
           }
         dest: "{{ vllm_results_dir }}/system_info.json"
         mode: '0644'
diff --git a/playbooks/roles/vllm/tasks/setup-kubernetes.yml b/playbooks/roles/vllm/tasks/setup-kubernetes.yml
index 8ee729da4b6e..ccaac44ca9fa 100644
--- a/playbooks/roles/vllm/tasks/setup-kubernetes.yml
+++ b/playbooks/roles/vllm/tasks/setup-kubernetes.yml
@@ -132,7 +132,7 @@
               Current status:
                 Kernel configuration: {{ veth_check.stdout }}
                 veth module status: {{ veth_loaded.stdout }}
-                Kernel version: {{ ansible_kernel }}
+                Kernel version: {{ ansible_facts['kernel'] }}
 
               REQUIRED: Rebuild your kernel with CONFIG_VETH enabled:
                 CONFIG_VETH=y  (built-in, recommended)
@@ -239,8 +239,8 @@
               minikube start
               --driver=docker
               --force
-              --cpus={{ [ansible_processor_vcpus | default(4), 32] | min }}
-              --memory={{ [(ansible_memtotal_mb * 0.75) | int, 49152] | min }}
+              --cpus={{ [ansible_facts['processor_vcpus'] | default(4), 32] | min }}
+              --memory={{ [(ansible_facts['memtotal_mb'] * 0.75) | int, 49152] | min }}
               --disk-size=50g
               --delete-on-failure=true
               {{ '--gpus all' if not vllm_use_cpu_inference|default(false) else '' }}
diff --git a/playbooks/roles/vllm/templates/vllm-visualize.py.j2 b/playbooks/roles/vllm/templates/vllm-visualize.py.j2
index b5c02e6080f7..1567aa1b09be 100644
--- a/playbooks/roles/vllm/templates/vllm-visualize.py.j2
+++ b/playbooks/roles/vllm/templates/vllm-visualize.py.j2
@@ -175,7 +175,7 @@ def generate_html_report(results):
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>vLLM Benchmark Results - {{ ansible_date_time.date }}</title>
+    <title>vLLM Benchmark Results - {{ ansible_facts['date_time'].date }}</title>
     <style>
         body {{
             font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
diff --git a/playbooks/roles/volume_group/tasks/terraform/oci.yml b/playbooks/roles/volume_group/tasks/terraform/oci.yml
index 600afebd64ec..69961044f0df 100644
--- a/playbooks/roles/volume_group/tasks/terraform/oci.yml
+++ b/playbooks/roles/volume_group/tasks/terraform/oci.yml
@@ -36,4 +36,4 @@
     - item.key != instance_data_device
   loop_control:
     label: "Adding block device: /dev/{{ item.key }}"
-  with_dict: "{{ ansible_devices }}"
+  with_dict: "{{ ansible_facts['devices'] }}"

-- 
2.54.0