我们有一组在应用程序的不同实例之间共享的服务器,并希望它们的列表是一个单独的文件,以及其他特定于实例的清单包括 it.
(我知道,这可以通过dynamic库存,但这些是代码,我们希望保留我们的服务器列表data, 可以这么说。)
对于 INI 库存,这是不可能的,但对于 YAML 来说,这是非常接近的。例如,这个答案 /a/55475735/1747834显示了如何通过添加处理程序来完成此操作!include
Python 的 YAML 解析器。然后我们可以这样写:
all:
group1:
host1:
host2:
sharedservers: !include shared-servers.yaml
如何将此功能添加到自己的 Ansible 存储库中——最好不要实现全新的库存插件(尽管从 Ansible 的现有插件继承也可以)?
首先,您问题中的示例清单不遵守 yaml ansible inventory 的架构,并且将被拒绝解析。
现在要回答您的问题,您只需一次使用多个库存即可。这是一个简单的例子:
我创建了 3 个 yaml 库存文件:
-
inventories/hosts.yml
---
group1:
hosts:
host1:
host2:
-
inventories/otherhosts.yml
---
group2:
hosts:
hostA:
hostB:
- 最后
inventories/shared.yml
---
sharedservers:
hosts:
host3:
host4:
从那里,很容易找到所有需要的主机。下面的例子使用ansible-inventory
为了获得更好的输出,但是-i
选项和目标选择与ansible
and ansible-playbook
- 对清单目录内的所有清单文件中的所有主机进行寻址:
$ ansible-inventory -i inventories/ all --graph
@all:
|--@group1:
| |--host1
| |--host2
|--@group2:
| |--hostA
| |--hostB
|--@sharedservers:
| |--host3
| |--host4
|--@ungrouped:
这相当于在单独的目录中调用每个 yaml 文件-i
在这种情况下的选项ansible-inventory -i inventories/hosts.yml \
-i inventories/otherhosts.yml -i inventories/shared.yml \
all --graph
- 仅处理特定库存
$ ansible-inventory -i inventories/hosts.yml \
-i inventories/shared.yml all --graph
@all:
|--@group1:
| |--host1
| |--host2
|--@sharedservers:
| |--host3
| |--host4
|--@ungrouped:
$ ansible-inventory -i inventories/otherhosts.yml \
-i inventories/shared.yml all --graph
@all:
|--@group2:
| |--hostA
| |--hostB
|--@sharedservers:
| |--host3
| |--host4
|--@ungrouped:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)