如何在 ansible 剧本的主机规范中使用变量?
How can I use a variable in a hosts spec of an ansible playbook?
我想让剧本从这样的变量中查找主机:
---
- hosts: "{{ project_prefix }}_web"
sudo: yes
roles:
- common
- ansible-role
不幸的是,我得到的输出如下:
___________________________________
< PLAY [{{ project_prefix }}_web] >
-----------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
skipping: no hosts matched
如果我硬编码主机值,它会找到它们。
我不想有任务调用ansible_playbook。
AFAIK your code should have worked. Variable expansion is applied to
hosts tag value. Can you add a play before to debug print value of
project_prefix
before using it? To confirm the variable is set.
我想问题已经解决了,但这里有一些解释。
- ansible 变量扩展 returns 变量的名称(我认为像 Jinja2)作为未定义变量时的值。
- 有时(我认为当表达式只有像
{{var}}
这样的变量时)它会给出像 var: undefined variable
这样更清晰的消息(而不是返回变量的名称作为它的值)。
总而言之,当您看到变量的名称 in/as 是值时,很可能是因为它未定义。
我想让剧本从这样的变量中查找主机:
---
- hosts: "{{ project_prefix }}_web"
sudo: yes
roles:
- common
- ansible-role
不幸的是,我得到的输出如下:
___________________________________
< PLAY [{{ project_prefix }}_web] >
-----------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
skipping: no hosts matched
如果我硬编码主机值,它会找到它们。
我不想有任务调用ansible_playbook。
AFAIK your code should have worked. Variable expansion is applied to hosts tag value. Can you add a play before to debug print value of
project_prefix
before using it? To confirm the variable is set.
我想问题已经解决了,但这里有一些解释。
- ansible 变量扩展 returns 变量的名称(我认为像 Jinja2)作为未定义变量时的值。
- 有时(我认为当表达式只有像
{{var}}
这样的变量时)它会给出像var: undefined variable
这样更清晰的消息(而不是返回变量的名称作为它的值)。
总而言之,当您看到变量的名称 in/as 是值时,很可能是因为它未定义。