2015-09-28 98 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