如何在剧本的“name”参数中设置变量?

时间:2017-07-13 15:22:22

标签: ansible ansible-2.x

我有以下的剧本,并努力了解如何将application_name变量传递给它:

---

- name: Initial configuration for a {{ application_name }} server
  hosts: all
  vars:
    - update_apt_cache: yes
  vars_files:
    - roles/base/defaults/main.yml

  tasks:
    - debug: msg="reading from group {{ groups }} and application name {{ application_name }}"

问题是第一个application_name(在name参数中)永远不会起作用,尽管第二个实例(在任务中定义)工作正常。我怎样才能让第一个实例工作?我已经尝试过在库存中定义变量......

[mygroup:vars]
application_name=my_application_name

...并在group_vars./group_vars/mygroup/vars.yml)...

application_name: my_application_name

...但这两个都没有填充name参数 - 只有在剧本{{ application_name }}部分找到的tasks

有没有办法填写第一个application_name变量?

2 个答案:

答案 0 :(得分:2)

我不确定您是否可以按照您想要的方式使用剧本名称。在显示播放簿名称之前,不会加载group_vars。要填写剧本名称中的application_name,您必须在剧本变量部分中定义它

- name: Initial configuration for a {{ application_name }} server
  hosts: all
  vars:
    - update_apt_cache: yes
    - application_name: foo

或在命令行上使用extra-vars

ansible-playbook -e "application_name=foo" your_playbook.yml

答案 1 :(得分:0)

只是一个疯狂的猜测,你试图引用变量吗?

- name: 'Initial configuration for a {{ application_name }} server'