我在ansible中有以下数据结构
hosts:
host-1:
roles: [ 'master' ]
index_ip: 2
outline: false
host-2:
roles: [ 'backend' ]
index_ip: 3
outline: false
host-3:
roles: [ 'frontend' ]
index_ip: 4
outline: false
host-4:
roles: [ 'frontend' ]
index_ip: 5
outline: false我需要一个主机列表,这取决于主机的角色。
示例:获取具有角色“master”的主机,这将导致“host-1”。
示例:获取角色“前端”的主机,这将导致“主机-3”、“主机-4”。
我是新来的ansible,发现这很难做到。有什么简单的过滤方法吗?
数据用于生成starturp文件,这些文件将在多个主机上生成进程。示例:
central_supervisor:
- hostlist: [ host-1 ]
corelist: [ 0 ]
subsystem:
- hostlist: [ host-2 ]
sa_corelist: [0]
app_corelist: [[1,2,3,4,5,6,7,8,9,10,17,18,19,20,21,22,23,24,25,26], [1,2,3,4,5,6,7,8,9,10,17,18,19,20,21,22,23,24,25,26]]
data_router:
- hostlist: [ host-3, host-4 ]
corelist_e: [16]
corelist_c: [15,31]
data_processor:
- hostlist: [ host-3, host-4 ]
capabilities: all
corelist_e: [16]
corelist_c: [15,31]发布于 2022-09-22 06:06:41
我用我的jinja2代码代替了它
{% set frontends = [] %}
{% for hostname in item.hosts.keys() if 'frontend' in item.hosts[hostname].roles %}
{{ frontends.append(hostname) }}
{% endfor %}https://stackoverflow.com/questions/73792011
复制相似问题