如何自动化测试配置管理脚本?

4
我使用类似Puppet/Chef/Ansible这样的工具来设置和配置开发环境和生产服务器。
每当我更新配置时,我会对我的开发环境运行该工具,并手动登录以检查是否按预期工作。
但这是一件繁琐的事情,而且我不能每次都测试所有内容,那么有没有办法可以自动化测试呢?

这听起来太笼统了,我想你可以创建一个Ansible Playbook来自动运行测试。 - Wtower
@Wtower 但是你如何测试playbook本身呢? - satoru
我明白你的问题,我建议你编辑详细信息。 - Wtower
如果您仅使用幂等的Ansible模块,那么每个任务都在自我测试。大多数您可以编写的测试都是冗余的。您应该编写评估不受Ansible直接管理的事物的测试,例如针对正在部署的应用程序运行单元测试或集成测试,并查看故障以确定它们是应用程序问题还是基础架构问题。 - MillerGeek
此外,您可以通过在相同的堆栈上再次运行playbook来测试它们是否具有幂等性。如果有任何更改,则表示存在幂等性问题。 - MillerGeek
2个回答

5

这方面有基础设施测试框架:

  • ServerSpec / InSpec - 基于 Ruby。著名,社区庞大,外观漂亮,是同类中最好的。
  • BATS - Bash 自动化测试系统,稍微简单一些。
  • TestInfra - 基于 Python 的基础设施测试框架。仍然很年轻,社区非常小。Intro
  • Goss - 快速(用 Go 编写),验证服务器/基础设施配置的小工具。测试场景以 yaml 写成。

自动化:

  • 有一个有趣的分子项目 - 由思科设计的一些自动化测试Ansible角色。我还没有尝试过。
  • 更进一步的步骤是使用TestKitchen,它处理自动化以启动Vagrant或Docker甚至AWS实例,并使用Rspec/BATS针对刚刚旋转的机器测试Puppet/Chef/Ansible。

所以你需要做的是选择框架,编写测试并针对模拟虚拟机运行您的playbooks/recipes和测试。

理想情况下,您应该将“基础设施即代码”保留在中,并像TravisCI一样配置,以便在您将新更改带入存储库时为每个PR运行测试。 您甚至可以在这里遵循:首先编写测试,使其失败,然后在您喜欢的配置管理工具中编写实际实现,并查看该更改是否使测试变为绿色/通过。
更多基础设施测试和自动化!

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接