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

How to automatically test configuration managing scripts?

我正在使用 Puppet/Chef/Ansible 等工具来设置和配置开发环境和生产服务器。

每当我更新配置时,我都会 运行 针对我的开发环境的工具并登录以手动检查是否一切正常。

但是这样做很繁琐,我不能每次都测试所有的东西,所以有什么办法可以自动化测试吗?

如果你能告诉我们你想测试什么。我们可以提供更好的帮助。

但是, 你检查过dry-运行模式了吗?我认为,Puppet 和 Ansible 支持它,你可以有一个 cron 或一些自动化脚本,它 运行s 所有 puppet/ansible 模块针对单个(测试)节点。

更多信息:
1. http://docs.ansible.com/ansible/playbooks_checkmode.html
2.检查https://docs.puppet.com/puppet/latest/reference/man/agent.html

中的noop模式

有用于此的基础设施测试框架:

  • ServerSpec / InSpec-ruby为主。著名的大社区,帅气且在他的 class.
  • 中是最好的
  • BATS - Bash自动化测试系统,比较简单
  • TestInfra - Python-based infra testing framework. Still pretty young, very small community. Intro.
  • Goss - 快速(用 Go 编写),用于验证 server/infra 配置的小工具。测试场景写在yaml.

自动化:

  • 有一个有趣的 Molecule 项目 - 一些用于测试 Ansible 角色的自动化,由 Cisco 设计。还没试过。
  • 进一步将使用 TestKitchen 来处理自动化以启动 Vagrant 或 Docker 甚至 AWS 实例,并使用 Rspec/BATS 测试 Puppet/Chef/Ansible 来对抗刚刚启动的机器.

那么您需要什么 - 选择框架、编写测试和 运行 您的 playbooks/recipes 以及针对模拟 VM 的测试。

理想情况下是让你的 "infra as code" 保持在 and configure 中,就像 TravisCI 一样 运行 一旦你在你的存储库中进行了新的更改,你就会对每个 PR 进行测试。 您甚至可以在此处遵循 :首先编写测试,使它们失败,然后在您最喜欢的配置管理工具中编写实际实现,并查看该更改是否使测试 green/passed.


MOAR 基础设施测试和自动化!