首页 文章

循环通过主机与ansible [重复]

提问于
浏览
7

这个问题在这里已有答案:

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

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”:“groups ['local_vm']”,“msg”:“host is groups ['local_vm']”}

1 回答

  • 14

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

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

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

相关问题