Ansible Galaxy的包装器,允许您在Requirements.yml中定义角色依赖关系。
molecule-galaxy-wrapper的Python项目详细描述
分子星系包裹器
Ansible Galaxy包装器,用作具有内部依赖支持的分子依赖插件。
动机
想象一下这个场景,您有一个名为child
的角色,它依赖于一个名为parent
的角色,而parent
依赖于grandparent
。
要安装child
,您的roles_path
中需要有parent
和grandparent
:
child -> parent -> grandparent
Ansible Galaxy足够聪明地发现,您所要做的就是将grandparent
定义为parent
角色在meta/main.yml
内的依赖关系,然后将parent
定义为child
角色meta/main.yml
文件内的依赖关系。
问题是molecule强制跟踪requirements.yml
文件中的角色依赖关系,在这种情况下,您有两个选项:
- 在
requirements.yml
中同时包含parent
和child
,然后忽略meta/main.yml
- 在
requirements.yml
内包含parent
,并在meta/main.yml
内复制相同的内容
第一种方法在这样的场景中看起来可能是合理的,但您可能有一个更复杂的依赖关系,在这种情况下,您很快就会遇到大问题。
后者看起来很难看,但至少你可以将找出依赖树的责任委托给ansible galaxy。
输入脏黑客
在某些时候,我们会忘记将依赖项附加到requirements.yml
和meta/main.yml
。为了避免这个问题,我创建了这个小小的包装器,它基本上可以做两件事:
- 将
requirements.yml
的内容复制到meta/main.yml
需求列表中 - 运行
ansible-galaxy install
用法
安装molecule-galaxy wrapper
:
pip install molecule-galaxy-wrapper
配置molecule.yml
以使用翘曲器:
dependency:
name: shell
command: galaxywrapper
driver:
name: docker
...
通过运行进行测试:
molecule dependency
现在您可以在requirements.yml
文件中维护角色依赖关系。