如何在ansible playbook的主机规范中使用变量?

时间:2015-04-15 11:11:17

标签: ansible ansible-playbook

我想让一个剧本从一个变量中查找主机:

---
- hosts: "{{ project_prefix }}_web"
  sudo: yes
  roles:
    - common
    - ansible-role

不幸的是,我得到的输出如下:

___________________________________
< PLAY [{{ project_prefix }}_web] >
 -----------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||


skipping: no hosts matched

如果我对主机值进行硬编码,则会找到它们。

我不想要任务调用ansible_playbook。

1 个答案:

答案 0 :(得分:0)

  

AFAIK您的代码应该有效。变量扩展适用于   托管标签值。你可以在调试打印值之前添加一个播放   使用之前project_prefix?确认变量已设置。

问题已经解决了,我想,但这里有一些解释。

  • ansible变量扩展在未定义变量时将变量的名称(如我认为的Jinja2)作为值返回。
  • 有时(我认为当表达式只有{{var}}这样的变量时)它会给出更清晰的消息,如var: undefined variable(而不是返回变量的名称,因为它的值)。 / LI>

总而言之,当您在/中看到变量的名称时,可能是因为它没有被定义。