以下任务按预期进行工作。它应该在远程主机上创建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会这样做,但是适用于其他任务/模板?
答案 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 }}"