elasticsearch 金加2号抗虫寄主群

hpxqektj  于 2023-01-29  发布在  ElasticSearch
关注(0)|答案(1)|浏览(77)

我尝试用Ansible建立ElasticSearch集群,但我在jinja2上遇到了问题。
如何设置其他主机的jinja2 IP地址?
我的inventory.ini中有:

[elasticsearch]
192.168.0.1
192.168.0.2
192.168.0.3

我希望在jinja2模板中,当主机数超过1时,传递两个地址192.168.0.2,192.168.0.3,如下所示:

- discovery.seeds_hosts=192.168.0.2,192.168.0.3

inventory.ini中何时有一台主机
它应该如下所示:

- discovery.seeds_hosts=192.168.0.1

我尝试了类似这样的内容(主机名):

{% for host in groups['elasticsearch'] %}{% if host == ansible_host %}{% else %}{%if loop.index0 > 0 %}{% endif %}elasticsearch-{{ loop.index }}{% if not loop.last %},{% endif %}{% endif %}{% endfor %}

并且只对elasticsearch组中的一台以上主机有效,如果inventory.ini组中只有一台主机,变量discovery.seeds_hosts为空。
Ansible版本:

ansible [core 2.14.1]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.10/site-packages/ansible
  ansible collection location = /home/ansible/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.10.9 (main, Dec  8 2022, 01:46:27) [GCC 10.2.1 20210110] (/usr/local/bin/python)
  jinja version = 3.1.2
  libyaml = True
idv4meu8

idv4meu81#

您可以使用检查主机数量的条件:

{% if groups.elasticsearch|length > 1 %}
- discovery.seeds_hosts={{ groups.elasticsearch[1:]|join(',') }}
{% else %}
- discovery.seeds_hosts={{ groups.elasticsearch.0 }}
{% endif %}

我在本地测试过,清单中有多台主机:

[elasticsearch]
192.168.0.1
192.168.0.2
192.168.0.3

这产生:

- discovery.seeds_hosts=192.168.0.2,192.168.0.3

清单中只有一台主机时:

[elasticsearch]
192.168.0.1

这产生:

- discovery.seeds_hosts=192.168.0.1

相关问题