我有一个问题是找到一个有效的循环我的库存的解决方案。 我通过链接一个故意文件开始我的剧本:
ansible-playbook -i inventory / dev.yml playbook.yml
我的剧本看起来像这样:
---
- hosts: localhost
tasks:
- name: Create VM if enviro == true
include_role:
name: local_vm_creator
when: enviro == 'dev'
因此,在加载playbook时,将从host_vars读取变量enviro,并将when条件设置为dev。库存文件dev.yml如下所示:
[local_vm]
192.168.99.100
192.168.99.101
192.168.99.102
[local_vm_manager_1]
192.168.99.103
[local_vm_manager_2]
192.168.99.104
[local-all:children]
local_vm
local_vm_manager_1
local_vm_manager_2
我的角色local_vm_creator中的main.yml如下所示:
---
- name: Create test host
local_action: shell docker-machine create -d virtualbox {{ item }}
with_items:
- node-1
- node-2
- node-3
- node-4
- node-5
- debug: msg="host is {{item}}"
with_items: groups['local_vm']
问题是我无法从dev.yml库存文件中获取列出的服务器。
它只会返回:
ok:[localhost] => (item = groups [' local_vm'])=> { " item":"群组[' local_vm']", " msg":"主持人是群组[' local_vm']" }
答案 0 :(得分:19)
如果唯一的问题是with_items
循环,请将其替换为:
with_items: "{{ groups['local_vm'] }}"
你很高兴。 with_
不再支持裸变量。