使用ansible循环通过主机

时间:2017-03-31 11:56:36

标签: ansible

我有一个问题是找到一个有效的循环我的库存的解决方案。 我通过链接一个故意文件开始我的剧本:

  

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']" }

1 个答案:

答案 0 :(得分:19)

如果唯一的问题是with_items循环,请将其替换为:

with_items: "{{ groups['local_vm'] }}"

你很高兴。 with_不再支持裸变量。