我尝试用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
1条答案
按热度按时间idv4meu81#
您可以使用检查主机数量的条件:
我在本地测试过,清单中有多台主机:
这产生:
清单中只有一台主机时:
这产生: