Ansible从vars_file中读取多个具有相同名称的变量

时间:2017-04-27 11:31:28

标签: ansible ansible-2.x ansible-inventory ansible-facts

在我的ip : 10.20.30 ip : 10.20.31 ip : 10.20.32 中,我有

lineinfile: line="ip{{':'}} {{item.public_ip}}"
              dest="{{ansible_env.HOME}}/ip_vars_file}}"
with_items: servers.tagged_instances #servers is registered in previous task

这是使用lineinfile

创建的
---
- hosts: localhost
  tasks:
  - name: print ips
    debug:
      var: item 
    with_items: "{{ ip }}"

  vars_files:
  - ~/ip_vars_file

我无法将所有三个ips都读为with_items。我只获得了剧本中的最后一个IP。

TASK [print ips] ***************************************************************
ok: [localhost] => (item=10.20.32) => {
    "item": "10.20.32"
}

我得到的输出是,

TASK [print ips] ***************************************************************
ok: [localhost] => (item=10.20.32) => {
    "item": "10.20.30"
    "item": "10.20.31"
    "item": "10.20.32"
}

我想要的输出是这样的

{{1}}

我想逐个遍历ips。我如何实现这一目标?

基本上,我想在启动时存储实例的ips,稍后在部署期间使用它们。但是当我启动多个具有相同名称的实例时,我陷入困境

1 个答案:

答案 0 :(得分:3)

您想要定义一个列表:

---
ip:
  - 10.20.30
  - 10.20.31
  - 10.20.32