我为每个主机定义了几个变量。比如..。
hosts:
- hostA:
vars:
self_ip: "192.168.1.10"
self_port: "8001"
- hostB:
vars:
self_ip: "192.168.1.11"
self_port: "8002"在其中一个角色中,我想定义一个变量,它是几个主机变量的组合。例如..。
all_endpoints: 192.168.1.10:8001,192.168.1.11:8002我该怎么做呢?
我尝试使用Jinja2 for循环,如下所示:
rs_members:
"{% for host in groups['all_hosts'] %}
- {{hostvars[host]['self_ip']}}:{{hostvars[host]['self_port']}}
{% endfor %}"这似乎是在创建一个字符串。不是一个列表。有人能告诉我出了什么问题吗?有没有办法使用ansible filters来实现这一点呢?
发布于 2019-03-08 18:41:26
- set_fact:
all_endpoints: "{{ hosts|json_query('[].vars.[self_ip, self_port]') }}"
- set_fact:
touples: "{{ touples|default([]) + [ item.0 + ':' + item.1 ] }}"
loop: "{{ all_endpoints }}"
- debug:
var: touples给出
"touples": [
"192.168.1.10:8001",
"192.168.1.11:8002"
]https://stackoverflow.com/questions/55060004
复制相似问题