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

How can I set a variable in a playbook's `name` parameter?

我有以下剧本,正在努力理解如何将 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 参数 - 只有在剧本的 tasks 部分中找到的 {{ application_name }}

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

我不确定您是否可以按照您想要的方式使用剧本名称。 group_vars 直到显示剧本名称后才会加载。要在剧本名称中填写 application_name,您必须在剧本变量部分

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

或在命令行上使用额外变量

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

纯属胡乱猜测,你试过引用变量吗?

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