Ansible Docker角色测试

adroit的Python项目详细描述


adroit-Ansible Docker角色测试

使用Docker容器测试Ansible角色的高度自以为是的工具。

假设和限制

这些是目前关于您的可负责的代码库的假设,可能会阻止您使用adroit。它们随时可能改变或改进。

  • 您只需在现代系统上部署(或只想测试)systemd作为其init系统。
  • 您有一个base角色,其他角色可以在此基础上构建。(如果你不需要这个,你可以有一个空的roles/base目录)。
  • 除了依赖于基本角色之外,可负责的角色是原子的、独立的,并且可以单独应用。include_rolemeta中定义的依赖项仍然可以工作。

请随意打开一个github问题,讨论任何阻止您使用adroit的限制。

工作原理

  1. adroit根据您选择的发行版构建一个core映像。
  2. 基于核心图像创建容器。base角色将应用于容器,并将其保存为base image
  3. 对于要测试的每个角色,将启动基于基本映像的容器,并将应用正在测试的角色。

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

如果需要设置某些不在defaultsvars中但应在测试期间设置的变量,则可以创建类似roles/myrole/testing/test_vars.yml的文件,并在测试该特定角色时应用该文件。

许可证

此存储库的内容在MIT license下发布。有关详细信息,请参阅包含的许可证文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何让用户决定按钮的特定颜色   java Tomcat jdbc连接池,使用后不释放连接   Java泛型类可分配性   javaactivemq&如何在路由路径中创建依赖关系   java为什么没有接收到操作用户?   windows如何启动使用cmd中预编译DLL的java swing应用程序?   java JFreechart实时组合图,在未收到数据点的情况下呈现step子图表的上一个值   java排序自定义数组列表   java如何从HSLFSlideShow获取文本格式信息   java不能将片段和活动登录结合起来   java是下载位于远程存储服务中的文件的有效方法   java AS:将点数交给GameOverActivity   java如何在textView中将焦点放在新生成文本的顶部?   HashMap中特定于Java存储的类类型   java使用不同的变量类型进行计算   if语句中的Java poll()   检查匹配括号的java字符堆栈没有错误,但也没有任何作用   java Netbeans不断将应用程序部署到错误的服务器