我在Ansible下有一个大项目。其中有许多组,其中大部分是为了清晰起见。例如,有组'dbaccess','java'等,它们有助于查找需要访问数据库的主机,安装java等等。其中一些是嵌套的(fe'collector'组是'java的子代'group,因为所有收藏家都需要java)。
使用'group:children'技术将所有内容保存在库存中。
但是当我想创建临时库存时,我遇到了一个问题:我不仅需要在库存中提供新主机,还需要重新创建整个组层次结构。
我想知道是否有办法以这样的方式分离库存,以便将组层次结构与主机列表分开?
或者,也许,在Ansible中还有其他一些组织这种层次结构的方法吗?
(我真实库存的例子):
[collectors]
(host list)
[publishers-http]
(host list)
[publishers-smtp]
(host list)
[central]
(host list)
[java:children]
collectors
publishers-http
central
[postgre_access:children]
collectors
publishers
central
[mongo_access:children]
collectors
publishers-smtp
central
[redis_access:children]
central
publishers
我想要一种方法来更改主机列表以进行暂存,但保持组之间的关系不变。
答案 0 :(得分:1)
将您的广告资源拆分为两个文件 - 一个名为01_hosts
的文件包含:
[collectors]
(host list)
[publishers-http]
(host list)
[publishers-smtp]
(host list)
[central]
(host list)
另一个名为02_groups
的内容包含:
[java:children]
collectors
publishers-http
central
[postgre_access:children]
collectors
publishers
central
[mongo_access:children]
collectors
publishers-smtp
central
[redis_access:children]
central
publishers
将它们保存到my_inventory
目录,使用my_inventory
的路径作为清单的参数(在CLI或ansible.cfg
中)。
使用符号链接为02_groups
提供单一来源。
我建议使用01_
和02_
前缀,因为Ansible按字母顺序从库存目录中读取文件,并且必须在组的组之前定义主机/组。