我当前的设置如下:
[defaults]
retry_files_enabled = false
hash_behaviour = merge
[sample]
sampleserver
group_vars / 1.yml的内容:
tenants:
1:
name: name1
ip: ip1
group_vars / 2.yml的内容:
tenants:
2:
name: name2
ip: ip2
group_vars / 3.yml的内容:
tenants:
3:
name: name3
ip: ip3
- hosts: sample
tasks:
- set_fact:
mytenants: "{{ {customtenants: tenants[customtenants]} }}"
when: customtenants is defined
- name: Output tenantname
debug:
msg: "mytenant: {{ mytenant }} name: {{ mytenant.name }}"
with_dict: "{{ mytenants|default(tenants) }}"
loop_control:
loop_var: mytenant
为所有租户运行(工作正常)
ansible-playbook playbook.yml -i inventory/hosts
仅对一名已定义的租户运行(正常)
ansible-playbook tenants.yml -i inventory/hosts -e "customtenants=1"
为多个定义的租户运行
ansible-playbook playbook.yml -i inventory/hosts -e '{"customtenants": ["1", "3"]}'
谁能帮助我,以便它适用于多个租户(最后一个命令示例)?
还是有更好的方法来实现这种动态解决方案?
答案 0 :(得分:0)
我过去所做的事情是将该变量放在主机行中,例如:
- hosts: "{{ customtenants | default( 'all' ) }}"
然后,您可以删除when
和with_dict
行。