我正在尝试制作一个动态调用的Ansible剧本。现在,Ansible不支持本机,所以我认为我可以用一些Jinja2模板来规避这个...但我甚至不确定如何实际做到这一点。所以,假设我有一个变量
中的角色列表role_vars:
- role1
- role2
- role3
我的模板:
- hosts: localhost
roles: >
{%- for name in role_vars %}
{{- '- ' + name + '\n ' -}}
{%- endfor %}
我认为它应该产生这样的东西:
- hosts: localhost
roles:
- role1
- role2
- role3
但我无法让它发挥作用。那我该怎么办?它甚至可能吗?
答案 0 :(得分:0)
你放置了太多的修剪修饰符。试试这个:
模板:
- hosts: localhost
roles:
{% for name in role_vars -%}
- {{ name }}
{% endfor %}
答案 1 :(得分:0)
---
- hosts: localhost
gather_facts: no
tasks:
- name: test
set_fact: var=[{% for i in groups['server'] %}{% if hostvars[i].clusterName is defined %}"{{ hostvars[i].clusterName }}"{% if not loop.last %},{% endif %}{% endif %}{% endfor %}]
- name: debug
debug: msg={{ var }},{{ var | length }}