首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ansible中直接使用变量和hostvars时,输出之间有什么区别

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

Stack Overflow用户
提问于 2019-01-05 07:57:37
回答 1查看 24关注 0票数 0

我有ansible库存,里面有下面的条目。

代码语言:javascript
复制
[local]
localhost port=80

[apacheweb]
kputtegowda2c.mylabserver.com

[appserver]
kputtegowda3c.mylabserver.com

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

代码语言:javascript
复制
- hosts: local 
  gather_facts: yes
  tasks:
  - debug: var={{ port }}

上面的示例产生了输出。

代码语言:javascript
复制
TASK [debug] *************
ok: [localhost] => {
"80": "VARIABLE IS NOT DEFINED!"
}

如果我使用hostvarsinventory_hostname.port,我将得到如下输出,而不是直接访问端口变量。

代码语言:javascript
复制
TASK [debug] ****************
ok: [localhost] => {
"hostvars[inventory_hostname].port": "80"
}
EN

回答 1

Stack Overflow用户

发布于 2019-01-05 12:18:39

这是因为您在不应该使用的时候使用了八字胡;如果您将var=切换为msg=,它将按预期工作,但您编写的内容相当于:

代码语言:javascript
复制
  tasks:
  - debug: var=80

这正是ansible运行的,它解释了"80": "VARIABLE IS NOT DEFINED"文本

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

https://stackoverflow.com/questions/54047670

复制
相关文章

相似问题

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