在Ansible中直接使用变量和hostvars时输出之间有什么区别

时间:2019-01-04 23:57:37

标签: ansible ansible-inventory

我的库存很可观,里面有下面的条目。

a

现在,如果要访问本地组的主机变量“端口”。我有一个简单的剧本来显示变量值。

[local]
localhost port=80

[apacheweb]
kputtegowda2c.mylabserver.com

[appserver]
kputtegowda3c.mylabserver.com

上面的示例产生输出。

- hosts: local 
  gather_facts: yes
  tasks:
  - debug: var={{ port }}

如果我使用hostvars [inventory_hostname] .port,而不是直接访问port变量,则会得到如下输出。

TASK [debug] *************
ok: [localhost] => {
"80": "VARIABLE IS NOT DEFINED!"
}

1 个答案:

答案 0 :(得分:1)

这是因为您在不应该使用胡须的情况下使用了胡须;如果将var=切换为msg=,它将按预期运行,但是您写的内容等同于:

  tasks:
  - debug: var=80

这正是ansible运行的内容,解释了"80": "VARIABLE IS NOT DEFINED"文字