基于play的ansible主机循环

sulc1iza  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(365)

通过执行以下操作,我看到了循环遍历清单文件地址的能力:

{% for url in groups['kafka'] %}
  {%- if url == ansible_fqdn or url in ansible_all_ipv4_addresses
     or ( kafka_id is defined and loop.index0 == kafka_id | int ) -%}
        broker.id={{loop.index0}}
    {% endif %}
{% endfor %}

这个想法的问题是,我有几个不同的“kafa”类型的主机,每个都会做一些稍微不同的事情。我想知道是否有一种方法可以通过playbook传递组的变量['kafka'],而不是在模板中硬编码。这样,我只使用特定播放的主机,可以为所有不同的播放重用相同的模板。

qlzsbp2j

qlzsbp2j1#

这是我的错,因为我试图用引号将组['foo'] Package 起来。我可以在playbook中设置一个变量,并通过执行以下操作来传递它:

- name: Big Tree Stitch Kafka
  hosts: kafka-bts
  vars:
    kafka_hosts: "kafka-bts"
  remote_user: centos
  become_user: root
  become: yes
  roles:
    - { role: kafka }

然后把这个放在我的金贾模板里。

% for url in groups[kafka-bts] %}
  {%- if url == ansible_fqdn or url in ansible_all_ipv4_addresses
     or ( kafka_id is defined and loop.index0 == kafka_id | int ) -%}
        broker.id={{loop.index0}}
    {% endif %}
{% endfor %}

相关问题