Playbook中ansible主机的默认值是什么?

4

我的样本playbook(适用于ansible 2.1)如下:

---
# This is sample playbook.

- name: add sample_role
  hosts: '{{ target }}'
  become: true
  become_user: root
  roles:
    - sample role

当我运行它时,一切都很好:
ansible-playbook -i staging test_playbook.yml --extra-vars "target=192.168.15.29"

如何省略目标?

我尝试了以下方法:

  hosts: '{{ target | default(all) }}'

或者
  hosts: '{{ target | default(hostvars) }}'

然后运行:

ansible-playbook -i staging test_playbook.yml

但是不幸的是:

错误!'all'未定义

或者:

错误!'hostvars'未定义

1个回答

5

如果您只是添加 all ,那么它会将其视为变量,因此您可以像这样固定它:

hosts:'{{target | default(“all”)}}'

hostvars 而言,它在ansible中是一个保留字,不能将其用于此目的。它的值将类似于:

<code>ok: [localhost] => {
    "msg": {
        "localhost": {
            "ansible_check_mode": false,
            "ansible_version": {
                "full": "2.1.0.0",
                "major": 2,
                "minor": 1,
                "revision": 0,
                "string": "2.1.0.0"
            },
            "group_names": [],
            "groups": {
                "all": [
                    "localhost"
                ],
                "ungrouped": []
            },
            "inventory_dir": null,
            "inventory_file": null,
            "inventory_hostname": "localhost",
            "inventory_hostname_short": "localhost",
            "omit": "__omit_place_holder__41c600ef78930ed8b38e6eed4e5b5ab51199729e",
            "playbook_dir": "/Users/xyz/test-ansible"
        }
    }
}
</code>

希望能帮到你。

双引号包围 all 对我有效:hosts: '{{ target | default("all") }}' - A K
为什么'{{ target | default("all") }}'有效?特别是,为什么|符号有效?这在哪里有记录?我有一个用例,我想将多个默认组设置为目标。 - alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接