Ansible ansible 如何定义多个主机?

fsckzy · 2019年11月08日 · 最后由 lework 回复于 2019年11月08日 · 229 次阅读

比如使用 ansible 部署 pxc 的时候,my.cnf 里面有一条

wsrep_cluster_address=gcomm://172.18.201.66:5020,172.18.201.67:5020,172.18.201.68:5020

如何让 ansible 自动将 ip 填进去呢?

  1. 可以自己定义一个变量,指定这些配置
  2. 使用hostvars这个内置变量存放着所有主机信息,通过这个变量获取到你说要的主机 ip
  3. 使用ansible_play_hosts这个内置变量存放在当前运行的主机列表,通过这个变量获取到你说要的主机 ip
lework 回复

我感觉这不是我想要的。比如 zookeeper 集群。zoo.cfg 里面

server.1=172.18.11.137:2888:3888
server.2=172.18.11.138:2888:3888
server.3=172.18.11.139:2888:3888

我看您的 ansible 的 zookeeper roles 里面是这么写的:

{% for i in zookeeper_hosts %}
server.{{ i.id|d(loop.index) }}={{i.host|d(i)}}:{{i.leader_port|default('2888:3888')}}
{% endfor %}

我想问这个原理是啥?为啥这样填就能实现

这个是我在default.yaml中定义了zookeeper_hosts,简而言之,就是这个变量的值是人为定义的,不是通过预设程序自己生成的。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册