У вас недоразумение;vars:
объявляет только "локальные" переменные для текущей задачи. Поскольку вы только что объявили переменную с именем query
, а эта переменная не является dict
, у нее нет такого дочернего свойства .results
Скорее всего, вы захотите использовать set_fact:
, чтобы утвердить новый ансибальный факт в структуре hostvars
, чтобы вы могли затем использовать его так, как пытались сделать:
- set_fact:
nodes_with_node_type: '{{ node_list | json_query(query) }}'
vars:
query: 'resources[].{node_name: metadata.name, nodeType: metadata.labels.nodeType}'
- fail:
msg: Expected to find at least one GPU node type
vars:
node_types: '{{ nodes_with_node_type | map(attribute="nodeType") | list }}'
when: '"gpu" not in node_types'
Отдельно от вашего конкретного вопроса, фактической задачи, которой вы являетесьпытаться выполнить это - полная чушь, учитывая, что ваш селектор на k8s_facts:
явно запрашивает nodeType=gpu
- не будет никаких других типов возвращаемых узлов, и, таким образом, when:
никогда не будет истинным