Templates ansible';的模板包含上下文
我现在在ansible上玩了将近两个星期,但我没有弄清楚如何将模板包含在上下文中 说: 默认情况下,包含的模板传递给当前上下文[…] 从这句话中,我尝试了以下几点:Templates ansible';的模板包含上下文,templates,jinja2,ansible,Templates,Jinja2,Ansible,我现在在ansible上玩了将近两个星期,但我没有弄清楚如何将模板包含在上下文中 说: 默认情况下,包含的模板传递给当前上下文[…] 从这句话中,我尝试了以下几点: 在我在服务器上应用的角色中,我导出了一个事实,该事实描述了每个主机上要实例化的检查(我正在尝试创建一个智能nagios_服务器角色) 在nagios角色中,我呈现一个主模板,它将所有检查实例化到一个文件中。检查本身在包含的模板中定义 在roles/nagios_server/tasks/main.yml中: - name: c
- 在我在服务器上应用的角色中,我导出了一个事实,该事实描述了每个主机上要实例化的检查(我正在尝试创建一个智能nagios_服务器角色)
- 在nagios角色中,我呈现一个主模板,它将所有检查实例化到一个文件中。检查本身在包含的模板中定义
- name: configure Nagios checks
template: src="{{ item }}.cfg.j2" dest="/etc/nagios3/conf.d/{{ item }}.cfg"
with_items:
- hosts
- commands
- checks
- defaults
notify:
- restart nagios
在roles/nagios_server/templates/checks.cfg.j2中:
{% for host in groups['all'] %}
{% set checks = hostvars[host]['nagios_monitor'].strip().split(" ") %}
# Checks for {{ host }}
{% for elmt in checks %}
{% if elmt != "" %}
{% include "checks/"+elmt+".cfg.j2" with context %}
{% endif %}
{% endfor %}
{% endfor %}
define service {
host_name {{ host }}
service_description DNS lookup
check_command check_dns_lookup
use generic-service
}
在roles/nagios_server/templates/checks/dns.cfg.j2中:
{% for host in groups['all'] %}
{% set checks = hostvars[host]['nagios_monitor'].strip().split(" ") %}
# Checks for {{ host }}
{% for elmt in checks %}
{% if elmt != "" %}
{% include "checks/"+elmt+".cfg.j2" with context %}
{% endif %}
{% endfor %}
{% endfor %}
define service {
host_name {{ host }}
service_description DNS lookup
check_command check_dns_lookup
use generic-service
}
当我运行playbook时,我得到以下错误:
fatal: [vagrant] => {'msg': "AnsibleUndefinedVariable: One or more undefined variables: 'host' is undefined", 'failed': True}
我错过什么了吗?我应该如何使它工作?如果您使用的是Jinja 2.0,这是意料之中的。如报告中所述: 注: 在Jinja2.0中,传递给 模板未包含模板中定义的变量。 事实上,这是行不通的:
{% for box in boxes %}
{% include "render_box.html" %}
{% endfor %}
包含的模板render_box.html
无法访问Jinja>2.0中的框。从Jinja2.1开始,render_box.html
就可以这样做
如果您需要更多信息,可以在找到完整的代码。我将github repo移动到,因此我可以自己使用github.com/billietl/servconfig