我正在构建几个角色,我需要将指定组中所有主机的 IP 地址作为逗号分隔的字符串提供给配置。
是否有过滤器的 jinja2 组合(如映射、匹配、选择、连接等)产生与此相同的结果:
{% set comma = joiner(",") %}
{% for hostname in groups['mongodb'] %}
{{ comma() }}{{ hostvars[hostname].ansible_default_ipv4.address }}
{%- endfor %}
我正在构建几个角色,我需要将指定组中所有主机的 IP 地址作为逗号分隔的字符串提供给配置。
是否有过滤器的 jinja2 组合(如映射、匹配、选择、连接等)产生与此相同的结果:
{% set comma = joiner(",") %}
{% for hostname in groups['mongodb'] %}
{{ comma() }}{{ hostvars[hostname].ansible_default_ipv4.address }}
{%- endfor %}
文档中几乎有确切的答案...
稍作修改,就可以了:
- debug:
msg: "{{ groups['mongodb'] | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | join(',') }}"