首页 » 运维 » 正文

molecule 进阶 编写完整的测试代码

molecule 需要我们额外编写对应ansible role的测试代码,通过一个例子来说明具体的使用方法

创建一个空的role

我们来编写具体的role的逻辑处理部分

这个playbook book主要有4个task,分别是

  • 确保安装包已经安装
  • 从模版文件生成默认页面(确保最新,如果已经最新,不做任何修改)
  • 确保服务是开启状态
  • 确保防火墙打开了指定端口

因为上边task中需要模版文件index.html.j2,我们来创建这个文件

然后我们在vars文件夹下将我们task中需要的变量统一定义一下

接下来就是要编写测试脚本了,首先,默认的镜像文件可能会不包含必须的包,所以我们要稍微做一下修改,melecule 专用的镜像

然后我们编写真正的测试代码

如上脚本包含3个方法,共覆盖了4个task(最后一个task防火墙哪个也通过检测文件中是否存在指定字符串来判断了)

  • test_pkg 确认软件是否正确安装
  • test_svc  确认服务是否是正常运行并开机启动
  • test_files 确认文件存在并包含指定内容

执行命令

Note: 测试了一下,role中增加firewalld的部分有问题,应该是docker 镜像的原因, 也就是说,使用docker 来测试还是不如有一套真正的环境来测试来的方便,而且很多东西操作云相关的,例如创建一个vpc,我们是不可能通过docker这种镜像的方式来测试的

 

参考资料:

https://www.digitalocean.com/community/tutorials/how-to-test-ansible-roles-with-molecule-on-ubuntu-16-04

Zhiming Zhang

Senior devops at Appannie
一个奔跑在运维路上的胖子
Zhiming Zhang

Latest posts by Zhiming Zhang (see all)