如何加快我的木偶模块开发测试周期?

时间:2014-02-07 01:17:50

标签: vagrant puppet

我正在寻找一些关于如何在编写新的木偶模块时提高工作效率的最佳实践。我的工作流程现在看起来像这样:

  1. vagrant up
  2. 进行更改/修复
  3. 流浪汉条款
  4. 发现错误/错误,GOTO 2
  5. 在我完成所有错误/错误之后:

    1. vagrant destroy
    2. vagrant up
    3. 确保一切正常
    4. 提交我的更改
    5. 这太慢了......我怎样才能让这个工作流程更快? 我否认为傀儡编写测试。我有什么其他选择?

2 个答案:

答案 0 :(得分:14)

  • 缓存您的主机上的apt / yum存储库使用vagrant-cachier插件
  • 使用个人资料 -evaltrace查找您在provisioning
  • 上花费时间的地方
  • 使用包基分发
    • 例如:rvm install ruby-2.0.0与使用fpm
    • 创建的pre-compiled ruby package
    • 避免“wget the internet and compile”方法
    • 这可能会使您的配置更加reproducible并且速度更快。
  • 不编码模块
    • 尝试重用forge / github / ...
    • 中的一些
    • 请注意,这可能违反我之前的建议
  • 如果这是一个选项,升级你的puppet / ruby​​ 版本
  • 迭代并阻止完全配置
    • vagrant up
    • 流浪汉条款
    • 修改清单/模块
    • 流浪汉条款
    • 修改清单/模块
    • 流浪汉条款
    • vagrant destroy
    • vagrant up
    • 启动server-spec
  • 最小化键入的命令
    • 修改文件时启动命令
    • 您可以设置guard以在保存时启动lint / test / spec / provision
    • 您还可以使用vagrant-notify
    • 从来宾向主机发送通知
  • 在vagrant中测试而不实际配置
  • 测试您的配置而不是手动检查
    • 停止vagrant ssh - 检查服务是否正在运行或配置是否具有给定值
    • 启动server-spec
    • 查看Beaker
  • 委托将测试运行到您首选的 ci服务器(jenkins,travis-ci,...)
  • 如果你有点傀儡......请看看ansible
    • 易于设置(无需安装/编译ruby)
    • 您可以选择要使用标记运行的部分内容
    • 你可以通过同步文件夹分享剧本,并在当地的流浪盒中运行ansible(没有librairian-puppet可以启动)

更新:在与@garethr讨论后,请查看他关于警卫的最新presentation

答案 1 :(得分:2)

我建议使用language-puppet。它附带了一个命令行工具(puppetresources),可以在您的计算机上计算目录并让您检查它们。它有一些在Puppet中找不到的有用功能:

  • 它非常快(单个目录上快6倍,许多目录上的50倍)
  • 它跟踪每个资源的定义位置,以及那时的“类堆栈”,当你有重复的资源时非常方便
  • 它会自动检查您引用的文件是否存在
  • 它比Puppet更严格(例如,在未定义的变量上打破)
  • 它允许您将任何文件的内容打印到标准输出,这对于开发复杂模板很有用

唯一需要注意的是,它只适用于“现代”木偶实践。例如,require未实现。它也只适用于Linux。