ansible - Ansible 清单可以包含另一个清单吗?
问题描述
我们有一组在应用程序的不同实例之间共享的服务器,并且希望它们的列表是一个单独的文件,以及其他 - 特定于实例的清单 -包括它。
(我知道,这可以通过动态库存来完成,但这些是代码,我们希望我们的服务器列表保留数据,可以这么说。)
对于 INI 库存,这是不可能的,但对于 YAML 库存,它非常接近。例如,此答案显示,如何通过!include
向 Python 的 YAML 解析器添加处理程序来完成此操作。然后可以写:
all:
group1:
host1:
host2:
sharedservers: !include shared-servers.yaml
如何将此功能添加到自己的 Ansible 存储库中 - 最好不实施全新的清单插件(尽管从 Ansible 的现有插件继承就可以了)?
解决方案
首先,您问题中的示例清单不尊重 yaml ansible 清单的架构,并且将被拒绝解析。
现在回答您的问题,您可以简单地一次使用多个库存。这是一个简单的例子:
我创建了 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
,并且ansible-playbook
- 寻址清单目录内所有清单文件中的所有主机:
在这种情况下,这相当于在单独的$ ansible-inventory -i inventories/ all --graph @all: |--@group1: | |--host1 | |--host2 |--@group2: | |--hostA | |--hostB |--@sharedservers: | |--host3 | |--host4 |--@ungrouped:
-i
选项中 调用每个 yaml 文件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:
推荐阅读
- javascript - D3 v4 饼图默认文本
- synchronization - Angular 5 和 Ionic 3 中的数据同步问题
- python - 如何在 Errbot 中正确设置插件的配置?
- r - 包括 R 中 Cox 回归中的时间相关协变量
- powershell - 捕获点源文件中异常的行号
- linux - 如何分析 perf sched 脚本和 perf sched 延迟?
- python - 如果我使用像 tf.layers.dense 这样的高级 API 并且没有明确定义我的权重,如何截断我的权重矩阵?
- html - css动画中的反变换
- java - 删除视图可见性上的调整大小动画 GONE
- java - RESTful Web 服务的集成测试