Ansible Docker角色测试
adroit的Python项目详细描述
adroit
-Ansible Docker角色测试
使用Docker容器测试Ansible角色的高度自以为是的工具。
假设和限制
这些是目前关于您的可负责的代码库的假设,可能会阻止您使用adroit。它们随时可能改变或改进。
- 您只需在现代系统上部署(或只想测试)systemd作为其init系统。
- 您有一个
base
角色,其他角色可以在此基础上构建。(如果你不需要这个,你可以有一个空的roles/base
目录)。 - 除了依赖于基本角色之外,可负责的角色是原子的、独立的,并且可以单独应用。
include_role
和meta
中定义的依赖项仍然可以工作。
请随意打开一个github问题,讨论任何阻止您使用adroit的限制。
工作原理
- adroit根据您选择的发行版构建一个core映像。
- 基于核心图像创建容器。
base
角色将应用于容器,并将其保存为base image。 - 对于要测试的每个角色,将启动基于基本映像的容器,并将应用正在测试的角色。
adroit将检查角色剧本是否失败,并且还将再次运行剧本以测试幂等性-如果第二次运行时有任何更改,我们将其视为失败。
预防措施
要使用Docker容器正确测试Ansible,Systemd需要在容器中运行。这要求容器以特权模式运行。这里涉及到安全风险,请相应地检查您的基本图像和行动手册。
用法
在virtualenv或任何你喜欢的东西中:pip install adroit
在ansibe树结构的根目录中(至少应该包含一个roles
目录),运行以下命令:
adroit -d debian:stretch myrole
其中debian:stretch
是要基于其进行测试的图像。目前支持的是debian、ubuntu和centos。
为测试定制角色
某些任务不能在Docker容器中运行,例如,使用hidepid=2
装入/proc
。您应该在这些任务中添加一个when
子句。示例:
-when:ansible_virtualization_type != 'docker'import_tasks:configure_network.yml
如果需要设置某些不在defaults
或vars
中但应在测试期间设置的变量,则可以创建类似roles/myrole/testing/test_vars.yml
的文件,并在测试该特定角色时应用该文件。
许可证
此存储库的内容在MIT license下发布。有关详细信息,请参阅包含的许可证文件。