Mik*_* T. 7 yaml include ansible ansible-inventory
我们有一组在应用程序的不同实例之间共享的服务器,并且希望它们的列表成为一个单独的文件,以及其他特定于实例的清单(包括它)。
(我知道,这可以通过动态库存来完成,但可以这么说,这些都是代码,我们希望我们的服务器列表保留数据。)
对于 INI 库存,这是不可能的,但对于 YAML 来说,这是非常接近的。例如,这个答案显示了如何通过!include
向 Python 的 YAML 解析器添加处理程序来完成此操作。然后我们可以这样写:
all:
group1:
host1:
host2:
sharedservers: !include shared-servers.yaml
Run Code Online (Sandbox Code Playgroud)
如何将此功能添加到自己的 Ansible 存储库中——最好不要实现全新的库存插件(尽管从 Ansible 的现有插件继承也可以)?
Zei*_*tor 10
首先,您问题中的示例清单不遵守 yaml ansible inventory 的架构,并且将被拒绝解析。
现在要回答您的问题,您只需一次使用多个库存即可。这是一个简单的例子:
我创建了 3 个 yaml 库存文件:
inventories/hosts.yml
---
group1:
hosts:
host1:
host2:
Run Code Online (Sandbox Code Playgroud)
inventories/otherhosts.yml
---
group2:
hosts:
hostA:
hostB:
Run Code Online (Sandbox Code Playgroud)
inventories/shared.yml
---
sharedservers:
hosts:
host3:
host4:
Run Code Online (Sandbox Code Playgroud)
从那里,很容易找到所有需要的主机。下面的示例用于ansible-inventory
更好的输出,但-i
选项和目标选择与ansible
和ansible-playbook
$ ansible-inventory -i inventories/ all --graph
@all:
|--@group1:
| |--host1
| |--host2
|--@group2:
| |--hostA
| |--hostB
|--@sharedservers:
| |--host3
| |--host4
|--@ungrouped:
Run Code Online (Sandbox Code Playgroud)-i
在这种情况下,
这相当于在单独的选项中调用每个 yaml 文件ansible-inventory -i inventories/hosts.yml \
-i inventories/otherhosts.yml -i inventories/shared.yml \
all --graph
Run Code Online (Sandbox Code Playgroud)
$ 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:
Run Code Online (Sandbox Code Playgroud)
您可以利用 Ansible 中已有的功能:
使用清单目录,您可以指定所有清单文件所在的文件夹,它们将按字母顺序一一包含在内。
您可以通过以下任一方式使用多个库存来源:
-i
命令行中的多个选项ANSIBLE_INVENTORY
变量并提供以逗号分隔的清单路径列表(目录或文件)inventory
中的选项执行ansible.cfg
与上面相同的操作。请参阅文档。
我怀疑以上内容无法满足您的需求。稍微修改一下包装器脚本和项目的文件结构比侵入 pyyaml 和 ansible 更好。/intro_inventory.html?highlight=inventory directory#using-multiple-inventory-sources)了解更多信息。
归档时间: |
|
查看次数: |
10030 次 |
最近记录: |