首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ansible循环通过主机

用ansible循环通过主机
EN

Stack Overflow用户
提问于 2017-03-31 11:56:36
回答 1查看 67.3K关注 0票数 29

我有一个问题,要找到一个可行的解决方案来循环我的库存。我从链接一个意图文件开始我的剧本:

-i库存/dev.yml playbook.yml

我的剧本是这样的:

代码语言:javascript
复制
---
- hosts: localhost
  tasks:
    - name: Create VM if enviro == true
      include_role:
        name: local_vm_creator
      when: enviro == 'dev' 

因此,当加载剧本时,变量enviro将从host_vars读取,并将when条件设置为dev。库存文件dev.yml如下所示:

代码语言:javascript
复制
[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

我在角色main.yml中的local_vm_creator如下所示:

代码语言:javascript
复制
---
- 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=group‘’local_vm‘) => { "item":“group’‘local_vm’”,"msg":"host is group‘’local_vm‘“}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-31 12:04:25

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

代码语言:javascript
复制
with_items: "{{ groups['local_vm'] }}"

你可以走了。在with_中不再支持裸变量。

票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43140086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档