我有一个这样的文件hosts
,内容如下:
192.168.77.101 ansible_user=vagrant ansible_ssh_pass=vagrant zookeeperId=1 kafkaBrokerId=1
192.168.77.102 ansible_user=vagrant ansible_ssh_pass=vagrant zookeeperId=2 kafkaBrokerId=2
192.168.77.103 ansible_user=vagrant ansible_ssh_pass=vagrant zookeeperId=3 kafkaBrokerId=3
我不喜欢一台服务器的所有变量都必须在一行上。有没有办法让它更漂亮?在文档中,我只找到了一组服务器变量列表的描述。
无需在清单文件中指定所有变量。实际上,根据最佳实践,清单中根本没有变量,只有组和主机的名称。
Ansible 期望使用目录树:
group_vars 包含以
имя группы.yml
yml 格式命名的文件,host_vars 包含名为 hostname 的文件。组和主机的名称是清单中指定的名称。在这些文件中,您可以为组或主机定义或覆盖变量。变量可以在很多地方声明,变量的优先顺序在文档中定义。
所以你可以制作一个文件
group_vars/vagrant.yml
然后
host_vars/192.168.77.101.yml
包含内容的文件:其他两位主持人也是如此。
之后,您只能留在库存中
之后,可以提高可读性 - 以某种方式命名此主机,并在变量中指定主机以
ansible_ssh_host: 192.168.77.101
进行连接。这两个变量本身显然看起来像枚举。也许你也可以让 ansible来处理这个问题?将主机组合成一个组,并在组列表中获取该主机的位置,而不是变量: