--- - name: Get all nodes in cluster kubernetes.core.k8s_info: kind: node kubeconfig: "{{ kubecfg_path }}" register: cluster_nodes - name: Assert that the cluster contains exactly the expected nodes ansible.builtin.assert: that: found_nodes == expected_nodes success_msg: "Found nodes as expected: {{ found_nodes }}" fail_msg: Expected nodes {{ expected_nodes }}, but found nodes {{ found_nodes }} vars: found_nodes: >- {{ cluster_nodes | json_query('resources[*].metadata.name') | unique | sort }} expected_nodes: |- {{ ( ( groups['master'] | default([]) ) + ( groups['node'] | default([]) ) ) | unique | sort }} # Deactivated linter rules: # - jinja[invalid]: As of version 6.6.0, ansible-lint complains that the input to ipwrap # would be undefined. This will not be the case during playbook execution. # noqa jinja[invalid]