jinja2 - ansible jinja2 连接 IP 地址

标签 jinja2 ansible ansible-playbook

我想将一组 ip 连接成一个字符串。

例如 ip1:2181、ip2:2181、ip3:2181 等

{% for host in groups['zookeeper'] %}
   {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}

我有上面的代码,但似乎无法弄清楚如何连接成一个字符串。

搜索 “Jinja2 连接” 没有给我我需要的信息。

最佳答案

更新了这个答案,因为我想我误解了你的问题。

如果你想用一些字符串连接每个主机的 IP,你可以使用 loop controls , 检查您是否在最后一次迭代中:

{% for host in groups['zookeeper'] -%}
   {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
   {%- if not loop.last %}, {% endif -%}
{%- endfor %}

旧答案:

您要查找的字词是 join :
{{ hostvars[host]['ansible_eth0']['ipv4']['address'] | join(", ") }}

关于jinja2 - ansible jinja2 连接 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28231875/

相关文章:

python - 如何在 Python 中将列表作为变量返回并在 Jinja2 中使用?

python flask 模板返回前 150 个字符

jinja2 - 如何使用与 Salt State 文件中的grain 匹配的机器的 IP 地址

Ansible:提供的主机列表为空

ansible - 角色和任务可以存在于同一个剧本中吗?

ansible - 在 lineinfile 模块中使用文件名和文件内容的变量

flask - Flask-SQLAlchemy 中的一对一关系仅以一种方式工作

ansible - 如何解决 "could not locate file in lookup"读取 id_rsa.pub?

ansible - 使用 ansible_facts.packages ["zabbix-agent"时如何获取软件版本]

ansible - 如何区分暂存/生产与动态库存?