我在Ansible Tower中使用AWS EC2动态清单,并且为我的实例添加了环境标记。例如:
键:环境
值:NonProd
这会创建一个组tag_Environment_NonProd,其中包含已标记的主机。现在,我要使用此组“ set_fact”:
- name: Determine nodes to join in NonProd
hosts: tag_Group_Elasticsearch
become: true
tasks:
- name: Setting nodes IPs
set_fact:
NonProd_list: "{{ groups['tag_Environment_NonProd'] | map('extract', hostvars, ['ansible_host']) | list }}"
我仅不时启动非Prod标签的实例,因此tag_Environment_NonProd组并非始终可用,这就是我面临此问题的原因。
我尝试了以下条件,但没有帮助:
何时:定义了tag_Environment_NonProd
当:((组名称中的'tag_Environment_NonProd')]
我也尝试过忽略错误,但显然它也不适用于“未定义的变量”。
任何人都有解决此问题的想法?
非常感谢。
Dragan
全局方法是确保在未定义变量时始终有一个值。为此使用default
filter。
当组不存在(或为空)时,以下将default
设置为空列表。这样,您可以解决当前的错误,并且以后不必测试set var是否存在。
NonProd_list