2015-09-28 64 views
0

主机ansible Jinja2的模板定义循环

[mesosSandbox] 
mesos1-01d.chalybs.net zoo_id=1 
mesos1-02d.chalybs.net zoo_id=2 
mesos1-03d.chalybs.net zoo_id=3 
mesos1-04d.chalybs.net 
mesos1-05d.chalybs.net 

我有一个生成一个模板的动物园管理员zoo.cfg

{% for server in groups[cluster] %} 
    server.{{loop.index}}={{server}}:2888:3888 
{% endfor %} 

有没有办法到if zoo_id is defined添加到这个循环或者我可以通过剧本中的任务生成一个列表?

回答

1

Ansible的if var is defined语法衍生自jinja。你应该能够检查动物园ID就在循环:

{% for server in groups[cluster] %} 
    {% if zoo_id is defined %} 
     server.{{loop.index}}={{server}}:2888:3888 
    {% endif %} 
{% endfor %} 

我不能说这是否会编译/运行,没有看到您更多的剧本,但假设你的问题是是利国利民的循环,这将允许您筛选是否定义了zoo_id