[PATCH 1/4] ansible: fix bare conditionals for ansible-core 2.20+ strict booleans

Jeff Layton <[email protected]> Tue, 19 May 2026 06:54:25 -0400
Newsgroups dev.linux.lists.kdevops
Message-ID <[email protected]>
Starting with ansible-core 2.20, when: conditionals that evaluate to
a string instead of a boolean cause a fatal error rather than a
deprecation warning. This affected two categories of variables across
16 role files.

Kconfig boolean variables exported through extra_vars.yaml arrive as
strings like "True" rather than native booleans and need the |bool
filter appended. This covers variables such as kdevops_workflows_dedicated_workflow,
kdevops_baseline_and_dev, kdevops_workflow_enable_*, kdevops_enable_terraform,
kdevops_enable_guestfs, bootlinux_builder, workflows_reboot_limit, and several
others in the gen_nodes, gen_hosts, gen_tfvars, devconfig, build_linux,
codereadyrepo, gen_pci_kconfig, reboot-limit, update_etc_hosts, and
kdevops_archive roles.

String variables like target_linux_install_b4, fstests_nfs_auth_flavor,
and devconfig_custom_yum_repofile hold package names, paths, or
configuration values that may be empty or None and need the
"| default('', true) | length > 0" pattern to produce a proper boolean.

One registered variable was also fixed where devconfig checked
"not grub_timeout_grep" (a result dict) instead of the correct
"not grub_timeout_grep.changed" form.

Generated-by: Claude AI
Signed-off-by: Jeff Layton <[email protected]>
---
 playbooks/roles/bootlinux/tasks/build/9p.yml       |   2 +-
 playbooks/roles/bootlinux/tasks/build/builder.yml  |   2 +-
 playbooks/roles/bootlinux/tasks/build/targets.yml  |   2 +-
 playbooks/roles/bootlinux/tasks/main.yml           |   4 +-
 playbooks/roles/build_linux/tasks/main.yml         |   8 +-
 playbooks/roles/codereadyrepo/tasks/main.yml       |  10 +-
 .../devconfig/tasks/install-deps/redhat/main.yml   |   8 +-
 .../devconfig/tasks/install-deps/suse/main.yml     |   2 +-
 playbooks/roles/devconfig/tasks/main.yml           |  18 +-
 playbooks/roles/fstests/tasks/main.yml             |  12 +-
 playbooks/roles/gen_hosts/tasks/main.yml           |  80 +++----
 playbooks/roles/gen_nodes/tasks/main.yml           | 242 ++++++++++-----------
 playbooks/roles/gen_pci_kconfig/tasks/main.yml     |   4 +-
 playbooks/roles/gen_tfvars/tasks/main.yml          |   6 +-
 playbooks/roles/kdevops_archive/tasks/main.yml     |   2 +-
 .../roles/nfsd/tasks/install-deps/redhat/main.yml  |   2 +-
 .../roles/nfsd/tasks/install-deps/suse/main.yml    |   2 +-
 playbooks/roles/reboot-limit/tasks/do-reboot.yml   |   4 +-
 playbooks/roles/update_etc_hosts/tasks/main.yml    |   6 +-
 19 files changed, 208 insertions(+), 208 deletions(-)

diff --git a/playbooks/roles/bootlinux/tasks/build/9p.yml b/playbooks/roles/bootlinux/tasks/build/9p.yml
index f390f028db1e..79a9c2249517 100644
--- a/playbooks/roles/bootlinux/tasks/build/9p.yml
+++ b/playbooks/roles/bootlinux/tasks/build/9p.yml
@@ -13,7 +13,7 @@
       - b4
   when:
     - target_linux_install_b4 is defined
-    - target_linux_install_b4
+    - target_linux_install_b4 | default('', true) | length > 0
     - ansible_facts['os_family']|lower != 'debian'
   run_once: true
   delegate_to: localhost
diff --git a/playbooks/roles/bootlinux/tasks/build/builder.yml b/playbooks/roles/bootlinux/tasks/build/builder.yml
index 79ff8c8d5546..c442b7b969ce 100644
--- a/playbooks/roles/bootlinux/tasks/build/builder.yml
+++ b/playbooks/roles/bootlinux/tasks/build/builder.yml
@@ -7,7 +7,7 @@
       - b4
   when:
     - target_linux_install_b4 is defined
-    - target_linux_install_b4
+    - target_linux_install_b4 | default('', true) | length > 0
     - ansible_os_family == "Debian"
 
 - name: Clone {{ target_linux_tree }}
diff --git a/playbooks/roles/bootlinux/tasks/build/targets.yml b/playbooks/roles/bootlinux/tasks/build/targets.yml
index d77c8634b7b4..487bd05fa8f3 100644
--- a/playbooks/roles/bootlinux/tasks/build/targets.yml
+++ b/playbooks/roles/bootlinux/tasks/build/targets.yml
@@ -7,7 +7,7 @@
       - b4
   when:
     - target_linux_install_b4 is defined
-    - target_linux_install_b4
+    - target_linux_install_b4 | default('', true) | length > 0
     - ansible_facts['os_family']|lower != 'debian'
 
 - name: Git clone {{ target_linux_tree }} on the target nodes
diff --git a/playbooks/roles/bootlinux/tasks/main.yml b/playbooks/roles/bootlinux/tasks/main.yml
index da42612eaad8..38d6e5aaed8b 100644
--- a/playbooks/roles/bootlinux/tasks/main.yml
+++ b/playbooks/roles/bootlinux/tasks/main.yml
@@ -56,8 +56,8 @@
     name:
       - b4
   when:
-    - target_linux_install_b4 is defined
-    - target_linux_install_b4
+    - target_linux_install_b4 | default('', true) | length > 0 is defined
+    - target_linux_install_b4 | default('', true) | length > 0
     - ansible_facts['os_family']|lower != 'debian'
     - not workflow_linux_packaged|bool
 
diff --git a/playbooks/roles/build_linux/tasks/main.yml b/playbooks/roles/build_linux/tasks/main.yml
index a8edda0f046e..6c6060f78f04 100644
--- a/playbooks/roles/build_linux/tasks/main.yml
+++ b/playbooks/roles/build_linux/tasks/main.yml
@@ -37,7 +37,7 @@
 
 - name: Setup dedicated build filesystem
   when:
-    - build_linux_storage_enable
+    - build_linux_storage_enable|bool
   block:
     - name: Check if device is already mounted
       become: yes
@@ -149,7 +149,7 @@
     single_branch: yes
   when:
     - not linux_git_exists.stat.exists or git_repo_check.rc != 0
-    - shallow_clone
+    - shallow_clone|bool
 
 - name: Clone Linux kernel source (full)
   ansible.builtin.git:
@@ -157,7 +157,7 @@
     dest: "{{ linux_source_dir }}"
   when:
     - not linux_git_exists.stat.exists or git_repo_check.rc != 0
-    - not shallow_clone
+    - not shallow_clone|bool
   retries: 3
   delay: 10
   register: git_result
@@ -173,7 +173,7 @@
   args:
     chdir: "{{ linux_source_dir }}"
   when:
-    - build_linux_use_latest_tag
+    - build_linux_use_latest_tag|bool
     - linux_source_stat.stat.writeable
 
 - name: Ensure /data directory is writable
diff --git a/playbooks/roles/codereadyrepo/tasks/main.yml b/playbooks/roles/codereadyrepo/tasks/main.yml
index 16e00af97572..445a218f9bd1 100644
--- a/playbooks/roles/codereadyrepo/tasks/main.yml
+++ b/playbooks/roles/codereadyrepo/tasks/main.yml
@@ -2,14 +2,14 @@
 - name: Enable a CodeReady Builder repo for this distribution
   when:
     - ansible_distribution != "Fedora"
-    - not devconfig_custom_yum_repofile
+    - 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"
       when:
         - ansible_distribution == 'RedHat'
-        - kdevops_enable_guestfs
+        - kdevops_enable_guestfs|bool
 
     - name: Select the Oracle Linux CodeReady Builder repo
       ansible.builtin.set_fact:
@@ -28,7 +28,7 @@
         codeready_repo: "codeready-builder-for-rhel-{{ ansible_distribution_major_version }}-rhui-rpms"
       when:
         - ansible_distribution == 'RedHat'
-        - kdevops_enable_terraform
+        - kdevops_enable_terraform|bool
         - kdevops_terraform_provider == "aws"
 
     - name: Select the Azure RHEL CodeReady Builder repo
@@ -36,7 +36,7 @@
         codeready_repo: "codeready-builder-for-rhel-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}-rhui-rpms"
       when:
         - ansible_distribution == 'RedHat'
-        - kdevops_enable_terraform
+        - kdevops_enable_terraform|bool
         - kdevops_terraform_provider == "azure"
 
     - name: Select the Google Cloud RHEL CodeReady Builder repo
@@ -44,7 +44,7 @@
         codeready_repo: "rhui-codeready-builder-for-rhel-{{ ansible_distribution_major_version }}-{{ ansible_architecture }}-rhui-rpms"
       when:
         - ansible_distribution == 'RedHat'
-        - kdevops_enable_terraform
+        - kdevops_enable_terraform|bool
         - kdevops_terraform_provider == "gce"
 
     - name: The distribution/provisioner combo isn't recognized
diff --git a/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml b/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml
index 1a287cf1885c..3208ff90c46e 100644
--- a/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/devconfig/tasks/install-deps/redhat/main.yml
@@ -9,15 +9,15 @@
     activationkey: "{{ rhel_activation_key }}"
     force_register: true
   when:
-    - rhel_org_id
-    - rhel_activation_key
+    - rhel_org_id | default('', true) | length > 0
+    - rhel_activation_key | default('', true) | length > 0
 
 - name: Check whether custom repofile exists
   ansible.builtin.stat:
     path: "{{ devconfig_custom_yum_repofile }}"
   register: custom_repofile
   delegate_to: localhost
-  when: devconfig_custom_yum_repofile
+  when: devconfig_custom_yum_repofile | default('', true) | length > 0
 
 - name: Add custom yum repo
   become: true
@@ -29,7 +29,7 @@
     group: root
     mode: "0644"
   when:
-    - devconfig_custom_yum_repofile
+    - devconfig_custom_yum_repofile | default('', true) | length > 0
     - custom_repofile.stat.exists
 
 - name: Discover the fastest package update mirrors
diff --git a/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml b/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml
index f837981d7fd4..92386c09e194 100644
--- a/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/devconfig/tasks/install-deps/suse/main.yml
@@ -377,7 +377,7 @@
     install_snmp: true
     install_kdump: true
   when:
-    - is_sle15|bool or is_tumbleweed
+    - is_sle15|bool or is_tumbleweed|bool
   tags: ["vars"]
 
 - name: Install snmp
diff --git a/playbooks/roles/devconfig/tasks/main.yml b/playbooks/roles/devconfig/tasks/main.yml
index ba55928ebcfb..38b8bc39e270 100644
--- a/playbooks/roles/devconfig/tasks/main.yml
+++ b/playbooks/roles/devconfig/tasks/main.yml
@@ -22,16 +22,16 @@
   ansible.builtin.command: "whoami"
   register: declared_host_user
   when:
-    - kdevops_use_declared_hosts
-    - workflow_infer_user_and_group
+    - kdevops_use_declared_hosts|bool
+    - workflow_infer_user_and_group|bool
   changed_when: false
 
 - name: Infer group on declared hosts
   ansible.builtin.command: "id -g -n"
   register: declared_host_group
   when:
-    - kdevops_use_declared_hosts
-    - workflow_infer_user_and_group
+    - kdevops_use_declared_hosts|bool
+    - workflow_infer_user_and_group|bool
   changed_when: false
 
 - name: Set inferred user and group for declared hosts
@@ -39,8 +39,8 @@
     data_user: "{{ declared_host_user.stdout | default(data_user) }}"
     data_group: "{{ declared_host_group.stdout | default(data_group) }}"
   when:
-    - kdevops_use_declared_hosts
-    - workflow_infer_user_and_group
+    - kdevops_use_declared_hosts|bool
+    - workflow_infer_user_and_group|bool
 
 # Update /etc/hostname first so the change gets picked up by the reboot
 # that occurs during the distro-specific tasks
@@ -436,7 +436,7 @@
   when:
     - grub2_config_file.stat.exists
     - devconfig_enable_console|bool
-    - not grub_timeout_grep
+    - not grub_timeout_grep.changed
   tags: ["console"]
 
 - name: Check to see if the GRUB serial command is defined
@@ -720,8 +720,8 @@
     sysctl_set: true
     reload: true
   when:
-    - devconfig_enable_sysctl_tuning
-    - devconfig_enable_sysctl_mm_overcommit_memory
+    - devconfig_enable_sysctl_tuning|bool
+    - devconfig_enable_sysctl_mm_overcommit_memory|bool
   tags: ["sysctl"]
 
 - name: Rev the kernel to the latest distribution kotd
diff --git a/playbooks/roles/fstests/tasks/main.yml b/playbooks/roles/fstests/tasks/main.yml
index f0fbcda48345..85e425e861b2 100644
--- a/playbooks/roles/fstests/tasks/main.yml
+++ b/playbooks/roles/fstests/tasks/main.yml
@@ -801,8 +801,8 @@
   register: nfsmount_conf
   when:
     - fstests_fstyp == "nfs"
-    - fstests_nfs_auth_flavor is defined
-    - fstests_nfs_auth_flavor
+    - fstests_nfs_auth_flavor | default('', true) | length > 0 is defined
+    - fstests_nfs_auth_flavor | default('', true) | length > 0
 
 - name: Create /etc/nfsmount.conf
   become: true
@@ -816,8 +816,8 @@
     mode: "0644"
   when:
     - fstests_fstyp == "nfs"
-    - fstests_nfs_auth_flavor is defined
-    - fstests_nfs_auth_flavor
+    - fstests_nfs_auth_flavor | default('', true) | length > 0 is defined
+    - fstests_nfs_auth_flavor | default('', true) | length > 0
     - not nfsmount_conf.stat.exists
 
 - name: Set auth flavor for NFS
@@ -830,8 +830,8 @@
     line: "Sec={{ fstests_nfs_auth_flavor }}"
   when:
     - fstests_fstyp == "nfs"
-    - fstests_nfs_auth_flavor is defined
-    - fstests_nfs_auth_flavor
+    - fstests_nfs_auth_flavor | default('', true) | length > 0 is defined
+    - fstests_nfs_auth_flavor | default('', true) | length > 0
 
 - name: Create SMB share for test vol
   ansible.builtin.include_role:
diff --git a/playbooks/roles/gen_hosts/tasks/main.yml b/playbooks/roles/gen_hosts/tasks/main.yml
index 0d67e49f2255..ac8f5ad006e3 100644
--- a/playbooks/roles/gen_hosts/tasks/main.yml
+++ b/playbooks/roles/gen_hosts/tasks/main.yml
@@ -19,7 +19,7 @@
         {{ kdevops_declared_hosts }}
       {%- endif -%}
   when:
-    - kdevops_use_declared_hosts
+    - kdevops_use_declared_hosts|bool
     - kdevops_declared_hosts is defined
   tags: vars
 
@@ -57,8 +57,8 @@
     is_fstests: true
     fs_config_path: "{{ kdevops_playbooks_dir_full_path }}/{{ fs_config_role_path }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fstests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fstests|bool
     - ansible_hosts_template.stat.exists
   tags: vars
 
@@ -86,9 +86,9 @@
         | list
       }}
   when:
-    - is_fstests
+    - is_fstests|bool
     - ansible_hosts_template.stat.exists
-    - not kdevops_use_declared_hosts
+    - not kdevops_use_declared_hosts|bool
 
 - name: Infer enabled blktests test section types
   ansible.builtin.set_fact:
@@ -100,18 +100,18 @@
         | list
       }}
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_blktests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_blktests|bool
     - ansible_hosts_template.stat.exists
-    - not kdevops_use_declared_hosts
+    - not kdevops_use_declared_hosts|bool
 
 - name: Debug inferring block test types
   ansible.builtin.debug:
     var: blktests_enabled_test_types
   when:
     - false
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_blktests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_blktests|bool
     - ansible_hosts_template.stat.exists
 
 - name: Infer enabled selftests test section types
@@ -124,10 +124,10 @@
         | list
       }}
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_selftests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_selftests|bool
     - ansible_hosts_template.stat.exists
-    - not kdevops_use_declared_hosts
+    - not kdevops_use_declared_hosts|bool
 
 - name: Collect dynamically supported filesystems
   vars:
@@ -138,8 +138,8 @@
     sysbench_enabled_filesystems: "{{ local_supported_filesystems }}"
     enabled_sysbench_tests: "{{ [] }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_sysbench
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_sysbench|bool
 
 - name: Collect enabled sysbench target sections for dynamically supported filesystems
   loop: "{{ sysbench_enabled_filesystems }}"
@@ -155,8 +155,8 @@
   ansible.builtin.set_fact:
     enabled_sysbench_tests: "{{ enabled_sysbench_tests + enabled_fs_node }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_sysbench
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_sysbench|bool
 
 - name: Infer enabled mmtests test types
   ansible.builtin.set_fact:
@@ -168,18 +168,18 @@
         | list
       }}
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_mmtests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_mmtests|bool
     - ansible_hosts_template.stat.exists
-    - not kdevops_use_declared_hosts
+    - not kdevops_use_declared_hosts|bool
 
 - name: Load AI nodes configuration for multi-filesystem setup
   include_vars:
     file: "{{ topdir_path }}/{{ kdevops_nodes }}"
     name: guestfs_nodes
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_ai
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_ai|bool
     - ai_enable_multifs_testing|default(false)|bool
     - ansible_hosts_template.stat.exists
 
@@ -187,8 +187,8 @@
   set_fact:
     all_generic_nodes: "{{ guestfs_nodes.guestfs_nodes | map(attribute='name') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_ai
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_ai|bool
     - ai_enable_multifs_testing|default(false)|bool
     - guestfs_nodes is defined
 
@@ -197,7 +197,7 @@
     file: "{{ topdir_path }}/{{ kdevops_nodes }}"
     name: build_linux_nodes
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_build_linux|default(false)|bool
     - build_linux_enable_multifs_testing|default(false)|bool
     - ansible_hosts_template.stat.exists
@@ -206,7 +206,7 @@
   set_fact:
     build_linux_enabled_section_types: "{{ build_linux_nodes.guestfs_nodes | map(attribute='name') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_build_linux|default(false)|bool
     - build_linux_enable_multifs_testing|default(false)|bool
     - build_linux_nodes is defined
@@ -244,8 +244,8 @@
   include_vars:
     file: "{{ topdir_path }}/{{ kdevops_nodes }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - fio_tests_multi_filesystem|default(false)|bool
     - ansible_hosts_template.stat.exists
 
@@ -253,8 +253,8 @@
   set_fact:
     fio_tests_node_names: "{{ guestfs_nodes | map(attribute='name') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - fio_tests_multi_filesystem|default(false)|bool
     - guestfs_nodes is defined
     - ansible_hosts_template.stat.exists
@@ -263,8 +263,8 @@
   debug:
     var: fio_tests_node_names
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - ansible_hosts_template.stat.exists
 
 - name: Generate the Ansible hosts file for a dedicated fio-tests setup (single filesystem)
@@ -278,8 +278,8 @@
     trim_blocks: True
     lstrip_blocks: True
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - ansible_hosts_template.stat.exists
     - not fio_tests_multi_filesystem|default(false)|bool
 
@@ -294,8 +294,8 @@
     trim_blocks: True
     lstrip_blocks: True
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - ansible_hosts_template.stat.exists
     - fio_tests_multi_filesystem|default(false)|bool
     - fio_tests_node_names is defined
@@ -310,7 +310,7 @@
     lstrip_blocks: True
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_minio|default(false)|bool
     - ansible_hosts_template.stat.exists
     - not kdevops_use_declared_hosts|default(false)|bool
@@ -325,7 +325,7 @@
     lstrip_blocks: True
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_build_linux|default(false)|bool
     - ansible_hosts_template.stat.exists
     - not kdevops_use_declared_hosts|default(false)|bool
@@ -340,7 +340,7 @@
     lstrip_blocks: True
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_vllm|default(false)|bool
     - ansible_hosts_template.stat.exists
     - not kdevops_use_declared_hosts|default(false)|bool
@@ -355,6 +355,6 @@
   ansible.builtin.fail:
     msg: "Your dedicated workflow lacks rules for what nodes to use, go work on allowed topologies to parallelize testing one per node"
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - ansible_hosts_template.stat.exists
     - not final_hosts_file.stat.exists
diff --git a/playbooks/roles/gen_nodes/tasks/main.yml b/playbooks/roles/gen_nodes/tasks/main.yml
index 5eb75f888b37..d09cb923ca9a 100644
--- a/playbooks/roles/gen_nodes/tasks/main.yml
+++ b/playbooks/roles/gen_nodes/tasks/main.yml
@@ -43,14 +43,14 @@
   ansible.builtin.set_fact:
     generic_nodes: "{{ [kdevops_host_prefix] }}"
   when:
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
 
 - name: Set generic nodes array on dual baseline and dev systems
   tags: vars
   ansible.builtin.set_fact:
     generic_nodes: "{{ [kdevops_host_prefix] + [kdevops_host_prefix + '-dev'] }}"
   when:
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
 
 - name: Set builder nodes array
   tags: vars
@@ -58,7 +58,7 @@
     builder_nodes:
       - "{{ kdevops_host_prefix + '-builder' }}"
   when:
-    - bootlinux_builder
+    - bootlinux_builder|bool
 
 - name: Set iscsi_nodes list
   ansible.builtin.set_fact:
@@ -113,8 +113,8 @@
     is_fstests: true
     fs_config_path: "{{ kdevops_playbooks_dir_full_path }}/{{ fs_config_role_path }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fstests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fstests|bool
     - ansible_nodes_template.stat.exists
   tags: vars
 
@@ -153,7 +153,7 @@
     force: true
     mode: "0644"
   when:
-    - not kdevops_workflows_dedicated_workflow
+    - not kdevops_workflows_dedicated_workflow|bool
     - ansible_nodes_template.stat.exists
     - not kdevops_enable_nixos|default(false)|bool
 
@@ -168,7 +168,7 @@
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
     force: true
   when:
-    - not kdevops_workflows_dedicated_workflow
+    - not kdevops_workflows_dedicated_workflow|bool
     - ansible_nodes_template.stat.exists
     - kdevops_enable_nixos|default(false)|bool
 
@@ -184,7 +184,7 @@
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
     force: true
   when:
-    - bootlinux_builder
+    - bootlinux_builder|bool
     - ansible_nodes_template.stat.exists
 
 
@@ -200,8 +200,8 @@
     force: true
     mode: "0644"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_pynfs
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_pynfs|bool
 
 
 - name: Generate the cxl kdevops nodes file using nodes file using template as jinja2 source template
@@ -216,8 +216,8 @@
     force: true
     mode: "0644"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_cxl
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_cxl|bool
 
 
 - name: Generate a kdevops nodes file for the gitr workflow
@@ -226,8 +226,8 @@
     name: gen_nodes
     tasks_from: gitr
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_gitr
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_gitr|bool
     - ansible_nodes_template.stat.exists
 
 - name: Generate a kdevops nodes file for the ltp workflow
@@ -236,8 +236,8 @@
     name: gen_nodes
     tasks_from: ltp
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_ltp
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_ltp|bool
     - ansible_nodes_template.stat.exists
 
 - name: Generate a kdevops nodes file for the nfstest workflow
@@ -246,8 +246,8 @@
     name: gen_nodes
     tasks_from: nfstest
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_nfstest
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_nfstest|bool
     - ansible_nodes_template.stat.exists
 
 - name: Set empty enabled test types list for fstests
@@ -296,7 +296,7 @@
     - is_fstests|bool
     - ansible_nodes_template.stat.exists
     - item.changed
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
 
 - name: Now expand the list of enabled fstests for valid configuration sections with dev hosts
   tags: ["nodes"]
@@ -312,7 +312,7 @@
     - is_fstests|bool
     - ansible_nodes_template.stat.exists
     - item.changed
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
 
 - name: Add the nfs server if one was selected
   ansible.builtin.set_fact:
@@ -373,10 +373,10 @@
       }}
 
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_blktests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_blktests|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
 
 - name: Infer enabled blktests test section types with dev hosts
   vars:
@@ -388,18 +388,18 @@
   ansible.builtin.set_fact:
     blktests_enabled_test_types: "{{ all_nodes | product(['', '-dev']) | map('join') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_blktests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_blktests|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
 
 - name: Debug inferring block test types
   ansible.builtin.debug:
     var: blktests_enabled_test_types
   when:
     - false
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_blktests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_blktests|bool
     - ansible_nodes_template.stat.exists
 
 - name: Generate the blktests kdevops nodes file using nodes file using template as jinja2 source template
@@ -414,8 +414,8 @@
     force: true
     mode: "0644"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_blktests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_blktests|bool
 
 
 - name: Infer enabled selftests test section types
@@ -433,10 +433,10 @@
         | list
       }}
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_selftests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_selftests|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
 
 - name: Infer enabled selftests test section types with dev hosts
   vars:
@@ -448,10 +448,10 @@
   ansible.builtin.set_fact:
     selftests_enabled_test_types: "{{ all_nodes | product(['', '-dev']) | map('join') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_selftests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_selftests|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
 
 - name: Generate the selftests kdevops nodes file using nodes file using template as jinja2 source template
   tags: ["hosts"]
@@ -465,8 +465,8 @@
     force: true
     mode: "0644"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_selftests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_selftests|bool
 
 
 - name: Collect dynamically supported filesystems
@@ -482,8 +482,8 @@
     sysbench_enabled_filesystems: "{{ local_supported_filesystems }}"
     enabled_sysbench_tests: "{{ [] }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_sysbench
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_sysbench|bool
 
 - name: Collect enabled sysbench target sections for dynamically supported filesystems
   loop: "{{ sysbench_enabled_filesystems }}"
@@ -500,8 +500,8 @@
   ansible.builtin.set_fact:
     enabled_sysbench_tests: "{{ enabled_sysbench_tests + enabled_fs_node }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_sysbench
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_sysbench|bool
 
 - name: Augment sysbench targets with dev nodes
   loop: "{{ sysbench_enabled_filesystems }}"
@@ -518,16 +518,16 @@
   ansible.builtin.set_fact:
     enabled_sysbench_tests: "{{ enabled_sysbench_tests + enabled_fs_node }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_sysbench
-    - kdevops_baseline_and_dev
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_sysbench|bool
+    - kdevops_baseline_and_dev|bool
 
 - name: Fail if no sysbench tests are enabled
   ansible.builtin.fail:
     msg: "No sysbench tests are enabled. You should enable at least one."
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_sysbench
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_sysbench|bool
     - ansible_nodes_template.stat.exists
     - enabled_sysbench_tests | length == 0
 
@@ -543,8 +543,8 @@
     force: true
     mode: "0644"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_sysbench
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_sysbench|bool
 
 
 - name: Generate the fio-tests kdevops nodes file using {{ kdevops_nodes_template }} as jinja2 source template
@@ -558,10 +558,10 @@
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
     force: yes
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
     - not fio_tests_multi_filesystem|default(false)|bool
 
 - name: Generate the fio-tests kdevops nodes file with dev hosts using {{ kdevops_nodes_template }} as jinja2 source template
@@ -575,10 +575,10 @@
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
     force: yes
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
     - not fio_tests_multi_filesystem|default(false)|bool
 
 - name: Infer enabled fio-tests multi-filesystem configurations (no dev)
@@ -598,11 +598,11 @@
   set_fact:
     fio_tests_enabled_section_types: "{{ [kdevops_host_prefix + '-fio-tests-'] | product(all_fs_configs) | map('join') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - fio_tests_multi_filesystem|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
 
 - name: Infer enabled fio-tests multi-filesystem configurations with dev
   vars:
@@ -621,11 +621,11 @@
   set_fact:
     fio_tests_expanded_configs: "{{ all_fs_configs }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - fio_tests_multi_filesystem|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
 
 - name: Create fio-tests nodes for each filesystem configuration with dev hosts
   vars:
@@ -633,11 +633,11 @@
   set_fact:
     fio_tests_enabled_section_types: "{{ filesystem_nodes | product(['', '-dev']) | map('join') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - fio_tests_multi_filesystem|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
     - fio_tests_expanded_configs is defined
     - fio_tests_expanded_configs | length > 0
 
@@ -652,8 +652,8 @@
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
     force: yes
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_fio_tests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_fio_tests|bool
     - fio_tests_multi_filesystem|default(false)|bool
     - ansible_nodes_template.stat.exists
     - fio_tests_enabled_section_types is defined
@@ -674,10 +674,10 @@
         | list
       }}
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_mmtests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_mmtests|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
 
 - name: Infer enabled mmtests test section types with dev hosts
   vars:
@@ -689,10 +689,10 @@
   ansible.builtin.set_fact:
     mmtests_enabled_test_types: "{{ all_nodes | product(['', '-dev']) | map('join') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_mmtests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_mmtests|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
 
 - name: Generate the mmtests kdevops nodes file using nodes file using template as jinja2 source template
   tags: ["hosts"]
@@ -706,8 +706,8 @@
     force: true
     mode: "0644"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_mmtests
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_mmtests|bool
 
 
 - name: Generate the reboot-limit kdevops nodes file using nodes file using template as jinja2 source template
@@ -722,8 +722,8 @@
     force: true
     mode: "0644"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - workflows_reboot_limit
+    - kdevops_workflows_dedicated_workflow|bool
+    - workflows_reboot_limit|bool
     - ansible_nodes_template.stat.exists
 
 
@@ -739,8 +739,8 @@
     force: true
     mode: "0644"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - workflows_reboot_limit
+    - kdevops_workflows_dedicated_workflow|bool
+    - workflows_reboot_limit|bool
     - ansible_nodes_template.stat.exists
 
 
@@ -756,10 +756,10 @@
     force: true
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_ai
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_ai|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
     - not ai_enable_multifs_testing|default(false)|bool
 
 - name: Generate the AI kdevops nodes file with dev hosts using {{ kdevops_nodes_template }} as jinja2 source template
@@ -774,10 +774,10 @@
     force: true
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_ai
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_ai|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
     - not ai_enable_multifs_testing|default(false)|bool
 
 - name: Infer enabled AI multi-filesystem configurations
@@ -817,8 +817,8 @@
   set_fact:
     ai_multifs_enabled_configs: "{{ (xfs_configs + ext4_configs + btrfs_configs) | unique }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_ai
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_ai|bool
     - ai_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
 
@@ -828,11 +828,11 @@
   set_fact:
     ai_enabled_section_types: "{{ filesystem_nodes }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_ai
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_ai|bool
     - ai_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
     - ai_multifs_enabled_configs is defined
     - ai_multifs_enabled_configs | length > 0
 
@@ -842,11 +842,11 @@
   set_fact:
     ai_enabled_section_types: "{{ filesystem_nodes | product(['', '-dev']) | map('join') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_ai
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_ai|bool
     - ai_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
     - ai_multifs_enabled_configs is defined
     - ai_multifs_enabled_configs | length > 0
 
@@ -861,8 +861,8 @@
     dest: "{{ topdir_path }}/{{ kdevops_nodes }}"
     force: yes
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_ai
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_ai|bool
     - ai_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
     - ai_enabled_section_types is defined
@@ -882,10 +882,10 @@
     force: true
     mode: "0644"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_vllm
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_vllm|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
 
 - name: Generate the vLLM kdevops nodes file with dev hosts using {{ kdevops_nodes_template }} as jinja2 source template
   tags: ['hosts']
@@ -899,10 +899,10 @@
     force: true
     mode: "0644"
   when:
-    - kdevops_workflows_dedicated_workflow
-    - kdevops_workflow_enable_vllm
+    - kdevops_workflows_dedicated_workflow|bool
+    - kdevops_workflow_enable_vllm|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
 
 # MinIO S3 Storage Testing workflow nodes
 
@@ -931,7 +931,7 @@
   set_fact:
     minio_multifs_enabled_configs: "{{ (xfs_configs + ext4_configs + btrfs_configs) | unique }}"
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_minio|default(false)|bool
     - minio_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
@@ -942,11 +942,11 @@
   set_fact:
     minio_enabled_section_types: "{{ filesystem_nodes }}"
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_minio|default(false)|bool
     - minio_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
     - minio_multifs_enabled_configs is defined
     - minio_multifs_enabled_configs | length > 0
 
@@ -956,11 +956,11 @@
   set_fact:
     minio_enabled_section_types: "{{ filesystem_nodes | product(['', '-dev']) | map('join') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_minio|default(false)|bool
     - minio_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
     - minio_multifs_enabled_configs is defined
     - minio_multifs_enabled_configs | length > 0
 
@@ -976,7 +976,7 @@
     force: true
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_minio|default(false)|bool
     - minio_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
@@ -996,10 +996,10 @@
     force: true
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_minio|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
     - not minio_enable_multifs_testing|default(false)|bool
 
 - name: Generate the MinIO kdevops nodes file with dev hosts using {{ kdevops_nodes_template }} as jinja2 source template
@@ -1014,10 +1014,10 @@
     force: true
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_minio|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
     - not minio_enable_multifs_testing|default(false)|bool
 
 # Build-linux workflow nodes
@@ -1053,7 +1053,7 @@
   set_fact:
     build_linux_multifs_enabled_configs: "{{ (xfs_configs + ext4_configs + btrfs_configs + tmpfs_configs) | unique }}"
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_build_linux|default(false)|bool
     - build_linux_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
@@ -1064,11 +1064,11 @@
   set_fact:
     build_linux_enabled_section_types: "{{ filesystem_nodes }}"
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_build_linux|default(false)|bool
     - build_linux_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
     - build_linux_multifs_enabled_configs is defined
     - build_linux_multifs_enabled_configs | length > 0
 
@@ -1078,11 +1078,11 @@
   set_fact:
     build_linux_enabled_section_types: "{{ filesystem_nodes | product(['', '-dev']) | map('join') | list }}"
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_build_linux|default(false)|bool
     - build_linux_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
     - build_linux_multifs_enabled_configs is defined
     - build_linux_multifs_enabled_configs | length > 0
 
@@ -1098,7 +1098,7 @@
     force: true
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_build_linux|default(false)|bool
     - build_linux_enable_multifs_testing|default(false)|bool
     - ansible_nodes_template.stat.exists
@@ -1118,10 +1118,10 @@
     force: true
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_build_linux|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - not kdevops_baseline_and_dev
+    - not kdevops_baseline_and_dev|bool
     - not build_linux_enable_multifs_testing|default(false)|bool
 
 - name: Generate the Build-linux kdevops nodes file with dev hosts using {{ kdevops_nodes_template }} as jinja2 source template
@@ -1136,10 +1136,10 @@
     force: true
     mode: '0644'
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - kdevops_workflow_enable_build_linux|default(false)|bool
     - ansible_nodes_template.stat.exists
-    - kdevops_baseline_and_dev
+    - kdevops_baseline_and_dev|bool
     - not build_linux_enable_multifs_testing|default(false)|bool
 
 - name: Get the control host's timezone
@@ -1157,7 +1157,7 @@
   ansible.builtin.fail:
     msg: "Your dedicated workflow lacks rules for what nodes to use, go work on allowed topologies to parallelize testing one per node"
   when:
-    - kdevops_workflows_dedicated_workflow
+    - kdevops_workflows_dedicated_workflow|bool
     - ansible_nodes_template.stat.exists
     - not dedicated_nodes_template.stat.exists
 
diff --git a/playbooks/roles/gen_pci_kconfig/tasks/main.yml b/playbooks/roles/gen_pci_kconfig/tasks/main.yml
index 50c4098340cf..3627c27d75f1 100644
--- a/playbooks/roles/gen_pci_kconfig/tasks/main.yml
+++ b/playbooks/roles/gen_pci_kconfig/tasks/main.yml
@@ -2,9 +2,9 @@
 - name: Dump pci output in machine-readible form
   ansible.builtin.shell: "lspci -Dvmmm > {{ topdir_path }}/.dynamic-kconfig.pci.txt"
   when:
-    - kdevops_pcie_dynamic_kconfig
+    - kdevops_pcie_dynamic_kconfig|bool
 
 - name: Generate libvirt PCI-E kcofig files
   ansible.builtin.shell: "./python/workflows/dynamic-kconfig/gen-dynamic-pci.py {{ topdir_path }}/.dynamic-kconfig.pci.txt > {{ topdir_path }}/Kconfig.passthrough_libvirt.generated"
   when:
-    - kdevops_pcie_dynamic_kconfig
+    - kdevops_pcie_dynamic_kconfig|bool
diff --git a/playbooks/roles/gen_tfvars/tasks/main.yml b/playbooks/roles/gen_tfvars/tasks/main.yml
index 7972de94c27f..6b88992cb4f5 100644
--- a/playbooks/roles/gen_tfvars/tasks/main.yml
+++ b/playbooks/roles/gen_tfvars/tasks/main.yml
@@ -34,7 +34,7 @@
     patterns: "Kconfig*.generated"
   register: provider_kconfig_files
   when:
-    - kdevops_enable_terraform
+    - kdevops_enable_terraform|bool
 
 - name: Check if any dynamic Kconfig files are empty
   ansible.builtin.fail:
@@ -52,7 +52,7 @@
       For more information, run 'make help' and see the cloud-config
       targets section.
   when:
-    - kdevops_enable_terraform
+    - kdevops_enable_terraform|bool
     - provider_kconfig_files.matched > 0
     - item.size == 0
   loop: "{{ provider_kconfig_files.files }}"
@@ -79,5 +79,5 @@
     dest: "{{ topdir_path }}/{{ kdevops_terraform_tfvars }}"
     force: true
   when:
-    - kdevops_enable_terraform
+    - kdevops_enable_terraform|bool
     - terraform_tfvars_template.stat.exists
diff --git a/playbooks/roles/kdevops_archive/tasks/main.yml b/playbooks/roles/kdevops_archive/tasks/main.yml
index ce88c7f3887e..811e2f15ee41 100644
--- a/playbooks/roles/kdevops_archive/tasks/main.yml
+++ b/playbooks/roles/kdevops_archive/tasks/main.yml
@@ -228,7 +228,7 @@
   environment:
     GIT_LFS_SKIP_SMUDGE: "1"
   when:
-    - kdevops_archive_mirror_present
+    - kdevops_archive_mirror_present|bool
   register: git_clone_result
 
 - name: Remind user this is a demo
diff --git a/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml b/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml
index 9143c55ee066..0fb171abcc5c 100644
--- a/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml
+++ b/playbooks/roles/nfsd/tasks/install-deps/redhat/main.yml
@@ -19,7 +19,7 @@
     nfsd_packages: "{{ nfsd_packages + [fsprogs] }}"
   when:
     - fsprogs is defined
-    - fsprogs
+    - fsprogs | default('', true) | length > 0
 
 - name: Install nfsd dependencies
   become: true
diff --git a/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml b/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml
index be7fbd50e07a..30be390d292f 100644
--- a/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml
+++ b/playbooks/roles/nfsd/tasks/install-deps/suse/main.yml
@@ -19,7 +19,7 @@
     nfsd_packages: "{{ nfsd_packages + [fsprogs] }}"
   when:
     - fsprogs is defined
-    - fsprogs
+    - fsprogs | default('', true) | length > 0
 
 - name: Add additional packages needed for krb5 to the nfsd packages list
   ansible.builtin.set_fact:
diff --git a/playbooks/roles/reboot-limit/tasks/do-reboot.yml b/playbooks/roles/reboot-limit/tasks/do-reboot.yml
index 4da0d0b500d8..00d8032c5b09 100644
--- a/playbooks/roles/reboot-limit/tasks/do-reboot.yml
+++ b/playbooks/roles/reboot-limit/tasks/do-reboot.yml
@@ -171,7 +171,7 @@
   ansible.builtin.shell: echo 1 > /proc/sys/kernel/sysrq
   tags: ["run_tests", "read_count", "vars", "crash-check"]
   when:
-    - reboot_limit_boot_count_crash_enable
+    - reboot_limit_boot_count_crash_enable|bool
     - ((reboot_limit_count | int % reboot_limit_boot_crash_count | int) == 0)
 
 - name: Force a crash if we were asked to
@@ -181,7 +181,7 @@
   ignore_errors: true
   tags: ["run_tests", "read_count", "vars", "crash-check"]
   when:
-    - reboot_limit_boot_count_crash_enable
+    - reboot_limit_boot_count_crash_enable|bool
     - ((reboot_limit_count | int % reboot_limit_boot_crash_count | int) == 0)
 
 - name: Write current updated boot count variable file to be {{ reboot_limit_count }}
diff --git a/playbooks/roles/update_etc_hosts/tasks/main.yml b/playbooks/roles/update_etc_hosts/tasks/main.yml
index 17c85dc539b5..4bd01df2875d 100644
--- a/playbooks/roles/update_etc_hosts/tasks/main.yml
+++ b/playbooks/roles/update_etc_hosts/tasks/main.yml
@@ -22,7 +22,7 @@
   ansible.builtin.set_fact:
     private_network: "{{ terraform_private_net_prefix }}/{{ terraform_private_net_mask }}"
   when:
-    - terraform_private_net_enabled
+    - terraform_private_net_enabled|bool
 
 - name: Build list of hosts
   ansible.builtin.set_fact:
@@ -56,7 +56,7 @@
     state: present
   with_items: "{{ ueh_hosts }}"
   when:
-    - terraform_private_net_enabled
+    - terraform_private_net_enabled|bool
     - not (kdevops_enable_nixos | default(false))
 
 - name: Add IP address of all hosts to all hosts
@@ -69,7 +69,7 @@
     state: present
   with_items: "{{ ueh_hosts }}"
   when:
-    - not terraform_private_net_enabled
+    - not terraform_private_net_enabled|bool
     - not (kdevops_enable_nixos | default(false))
 
 - name: Fix up hostname on Debian guestfs hosts

-- 
2.54.0