当前位置:  开发笔记 > 运维 > 正文

Ansible - 将变量从group_vars和host_vars一起放入列表中

如何解决《Ansible-将变量从group_vars和host_vars一起放入列表中》经验,为你挑选了1个好方法。

我试图从库存组中获取IP地址列表而不是主机名.这些IP地址已经在我的hostvars中,但我不能使它们与组名称中的列表匹配.

这是我原来的剧本:

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

如您所见,kafka_hostskafka_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地址列表而不是主机名.

如果我手动设置我的Playbook中的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

在这种配置中,我必须使用相同的信息手动维护我的组我的剧本.所以我想从组kafkazookeeper获得hostvars.

以下是主库存文件中定义的主机和组:

[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:"{{groups [['kafka'] ['ansible_host']] | list}}"

kafka_hosts:"{{[hostvars [groups ['kafka'] [0]] ['ansible_host']] | list}}"#该列表仅包含第一个ip地址

kafka_hosts:"{{[hostvars [groups ['kafka']] ['ansible_host']] | list}}"

kafka_hosts:"{{hostvars [groups ['kafka']].ansible_host | list}}"

kafka_hosts:"{{[hostvars.[groups ['kafka']].ansible_host] | list}}"

kafka_hosts:"{{groups ['kafka'].ansible_host | list}}"

它们都没有给出预期的IP地址列表.



1> Konstantin S..:

你需要使用extractmap组合:

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

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有