ansible 不分配 jinja2 变量值

ansible doesent assign jinja2 variable values

以下任务没有按预期工作。它应该在远程主机上创建一个 icinga2 配置文件。它创建文件,但不转换为定义的变量。

Ansible 任务:

- name: create check for cq6-server
  template:
    src=icinga-cq6-template.j2
    dest=/etc/icinga2/zones.d/icinga.dus3/{{ ansible_hostname }}-cq6-{{ project_name }}-{{ cq_role_1 }}.conf
    mode=0644
  when: "'cq6-servers' in group_names or 'cq6-dispatcher' in group_names"
  delegate_to: "{{ monitoring_server }}"
  notify: restart icinga2

它在 Icinga2 服务器上创建以下文件:

{{ ansible_hostname }}-cq6-{{ project_name }}-{{ cq_role_1 }}.conf

这个文件还有所有的括号,甚至{{ ansible_managed }}

有谁知道为什么 ansible 这样做,但在其他 tasks/templates 上工作?

推荐使用yaml dict表示法,即

- name: create check for cq6-server
  template:
    src: icinga-cq6-template.j2
    dest: "/etc/icinga2/zones.d/icinga.dus3/{{ ansible_hostname }}-cq6-{{ project_name }}-{{ cq_role_1 }}.conf"
    mode: 0644
  when: "'cq6-servers' in group_names or 'cq6-dispatcher' in group_names"
  delegate_to: "{{ monitoring_server }}"
  notify: restart icinga2

但是你的变量很可能是空的,所以我建议使用调试来验证,例如

- debug:
    var: "{{ ansible_hostname }}"