ansible doesent指定jinja2变量值

时间:2016-06-02 13:50:12

标签: ansible jinja2

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

Ansible Task:

- 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会这样做,但是适用于其他任务/模板?

1 个答案:

答案 0 :(得分:2)

建议使用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来验证,例如。

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