gpt4 book ai didi

Ansible - 将 group_vars 和 host_vars 中的变量一起放到一个列表中

转载 作者:行者123 更新时间:2023-12-04 14:38:07 25 4
gpt4 key购买 nike

我试图从 list 组中获取 IP 地址列表而不是主机名。这些 IP 地址已经在我的主机变量中,但我无法让它们匹配来自其组名的列表。

这是我的原始剧本:

- name: Install Kafka
hosts: kafka
roles:
- role: kafka
kafka_hosts: "{{ groups['kafka'] | list }}"
kafka_zookeeper_hosts: "{{ groups['zookeeper'] | list }}"

如您所见,kafka_hosts 和 kafka_zookeeper_hosts 是列表。
这个剧本对我的服务器配置的结果是正确的:
/etc/kafka/consumer.properties:zookeeper.connect=opo-4:2181,opo-5:2181,opo-6:2181
/etc/kafka/producer.properties:metadata.broker.list=opo-1:9092,opo-2:9092,opo-3:9092

不幸的是,由于 DNS 问题,此配置不适用于我的所有服务器。我需要一个 IP 地址列表而不是主机名。

如果我在我的剧本中手动设置 IP 地址,我的配置工作,不幸的是不是动态的:
  kafka_hosts: 
- 192.168.48.1
- 192.168.48.2
- 192.168.48.3
kafka_zookeeper_hosts:
- 192.168.48.4
- 192.168.48.5
- 192.168.48.6

我的服务器上的结果使它工作:
/etc/kafka/consumer.properties:zookeeper.connect=192.168.48.4:2181,192.168.48.5:2181,192.168.48.6:2181
/etc/kafka/producer.properties:metadata.broker.list=192.168.48.1:9092,192.168.48.2:9092,192.168.48.3:9092

在此配置中,我必须手动维护我的组 我的剧本具有相同的信息。所以我想从 kafka 和 zookeeper 组中获取主机变量。

以下是在主 list 文件中定义的主机变量和组:
[opo]
opo-1 ansible_host=192.168.48.1
opo-2 ansible_host=192.168.48.2
...
opo-6 ansible_host=192.168.48.6

[zookeeper]
opo-1
opo-2
opo-3

[kafka]
opo-4
opo-5
opo-6

我尝试过的 - 基于在类似问题的 stackoverflow 上找到的答案:
  • kafka_hosts:“{{ 组[['kafka']['ansible_host']] | 列表}}”
  • kafka_hosts: "{{ [hostvars[groups['kafka'][0]]['ansible_host']] | list }}"# 列表只包含第一个ip地址
  • kafka_hosts:“{{ [hostvars[groups['kafka']]['ansible_host']] | 列表}}”
  • kafka_hosts: "{{ hostvars[groups['kafka']].ansible_host | list }}"
  • kafka_hosts:“{{ [hostvars.[groups['kafka']].ansible_host] | 列表}}”
  • kafka_hosts:“{{ 组['kafka'].ansible_host | 列表}}”

  • 他们都没有给出预期的 IP 地址列表。

    最佳答案

    您需要使用 extract and map combination :

    kafka_hosts: "{{ groups['kafka'] | map('extract',hostvars,'ansible_host') | list }}"

    关于Ansible - 将 group_vars 和 host_vars 中的变量一起放到一个列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44415338/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com