如何在ansible剧本的主机规范中使用变量?
我想让一个剧本从如下变量中查找主机:如何在ansible剧本的主机规范中使用变量?,ansible,ansible-playbook,Ansible,Ansible Playbook,我想让一个剧本从如下变量中查找主机: --- - hosts: "{{ project_prefix }}_web" sudo: yes roles: - common - ansible-role 不幸的是,我得到的结果如下: ___________________________________ < PLAY [{{ project_prefix }}_web] > -----------------------------------
---
- hosts: "{{ project_prefix }}_web"
sudo: yes
roles:
- common
- ansible-role
不幸的是,我得到的结果如下:
___________________________________
< PLAY [{{ project_prefix }}_web] >
-----------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
skipping: no hosts matched
___________________________________
-----------------------------------
\ ^__^
\(oo)\_______
(__)\ )\/\
||----w|
|| ||
跳过:没有匹配的主机
如果我硬编码一个hosts值,它就会找到它们
我不想有一个任务叫做ansible_剧本
好吧,你的代码应该已经运行了。变量展开应用于 主机标记值。是否可以在调试打印值之前添加播放
project\u前缀
在使用它之前?确认变量已设置
我想问题已经解决了,但这里有一些解释
- ansible variable expansion在未定义变量时将变量的名称(我认为像Jinja2)作为值返回
- 有时(我认为当表达式只有变量时,比如
),它会给出一个更清晰的消息,比如{{var}}
(而不是返回变量的名称作为它的值)var:undefined variable
总而言之,当您在/中看到变量名作为其值时,很可能是因为它没有定义。AFAIK您的代码应该可以工作。变量扩展应用于主机标记值。能否在使用项目前缀之前添加一个play before以调试其打印值?来确认它已经设置好了。现场。重要的是要包括设置这些变量的文件。谢谢