Ansible简化yaml库存
ansible-roster的Python项目详细描述
Ansible花名册插件
此存储库包含一个Ansible Inventory插件,用于从主观上更简单的库存描述文件生成库存,这里称为roster
,同时有更多的可能性。在
它支持主机范围eg:“[0:9]”,也支持regex主机名,eg:”(dev|prd)-srv“。它通过附加值(而不是替换)来处理声明为列表的变量。在
编写这个清单插件时考虑了debops。在
安装
安装最新版本:
python3 -mpip install -U ansible-roster
使用
花名册是一个yaml格式的文件,文件扩展名为“yml”或“yaml”。在
为了让Ansible使用插件并解析您的花名册文件,必须满足以下几个条件:
- 在
您的yaml文件必须包含一行,指示该文件采用排班格式。在
在 - 在
您必须激活插件并在您的
在ansible.cfg
中启用花名册清单插件,如果使用debops
Sample ansible.cfg
Sample .debops.cfg
[ansible inventory]enabled=rosterenable_plugins=roster
更简单的语法
花名册清单的语法主观上比Ansible yaml清单文件简单。不是指定必须预先知道的children,而是指定主机的parents。在
名册清单至少是一个单独的yaml文件,其中声明了要使用的插件,并用yaml语法声明了组和主机。在
一个名为'花名册.yml.tpl'位于git存储库的根目录下。在
示例:
---# Tell ansible that this yaml file is a roster file:plugin:rosterhosts:# We have a single host in this inventory:debian.example.com:
文件包含
排班清单将只包含显式指定的文件,而不包括清单文件夹中找到的每个文件。支持全局定位。在
plugin:rosterinclude:# include an exact file match-distrib/debian.yml# include with wildcard:-hosts/*.yml
范围和正则表达式支持
主机可以用范围声明,也可以用要扩展的regex声明。在
范围是由方括号中的整数下界和上界指定的,例如[0:9]
以扩展为10个不同的主机名。在
正则表达式必须括在括号中:(front|back)end
例如:
plugin:rosterhosts:# Generate 10 hostnames: sql-0.example.com to sql-9.example.comsql-[0:9].example.com:# Generate 2 hostnames: frontend.example.com and backend.example.com(front|back)end.example.com:
标签
托多,洛勒姆·伊普苏姆
可变优先级
托多,洛勒姆·伊普苏姆
变量合并
托多,洛勒姆·伊普苏姆
排班清单文件是典型的yaml文件。在
发展
要运行单元测试,只需运行make目标:
# run all tests:
make check
还可以快速检查输出库存:
exportPYTHONPATH="$PYTHONPATH:$(pwd)"ANSIBLE_INVENTORY_ENABLED=roster ansible-inventory --list -i roster.yml
许可证
这个项目是在MIT许可下授权的-请参阅LICENSE文件了解详细信息
位置
- 文档:https://ansible-kheops.gitlab.io/plugins/roster/index.html
- GitLab:https://gitlab.com/ansible-kheops/plugins/roster
- PyPi:https://pypi.org/project/ansible-roster
- 项目
标签: