AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 807316
Accepted
Hellstorm
Hellstorm
Asked: 2016-10-06 09:56:35 +0800 CST2016-10-06 09:56:35 +0800 CST 2016-10-06 09:56:35 +0800 CST

Puppet,使用 beaker-rspec 在 control-repo 中测试角色

  • 772

我想用 rspec-puppet 和 beaker-rspec 测试我的控制存储库(其中包含配置文件和角色)。我仍然在使用烧杯-rspec 时遇到一些问题:

  • 我想单独测试配置文件,例如profile::postgresql查看是否已安装数据库。
  • 然后我还想单独测试我的角色,例如role::fileserver或role::webserver。

我已经设置了 beaker-rspec 并且它可以工作,但这需要相当长的时间,因为它会一个接一个地应用所有配置文件。我在其中看到以下问题:

  • 如果有太多的配置文件被应用到 Vagrant VM,它会被污染(来自另一个运行的剩余包、文件等,因此测试不再具有代表性)
  • 一些配置文件没有任何共同点,甚至可能与它们相矛盾(例如 nginx 与 apache;它们永远不会扮演一个角色,但都在 control-repo 中定义)。

我宁愿做的是:

  • beaker-rspec 应该检查已经定义了哪些角色,然后为每个角色启动一个单独的虚拟机。
  • 这些应该串行或(更好)并行完成。
  • 我怎样才能减少每次运行的时间,特别是如果有一个相当大的具有多个角色和不同操作系统版本等的 Puppet 设置。也许选择测试类型(“仅角色测试”或“仅配置文件测试”)。

如果 beaker-rspec 测试新 VM 中的每个配置文件也可以(但我想将测试切换为其他用途)。

我怎样才能做到这一点?谢谢 :)

puppet automated-testing
  • 1 1 个回答
  • 793 Views

1 个回答

  • Voted
  1. Best Answer
    Peter Souter
    2016-10-07T03:07:13+08:002016-10-07T03:07:13+08:00

    这里有一些不同的回应:

    beaker-rspec 应该检查已经定义了哪些角色,然后为每个角色启动一个单独的虚拟机。这些应该串行或(更好)并行完成。

    Beaker-rspec 没有能力为每个测试套件使用全新的 SUT(被测系统)。现在唯一的方法是为每个测试创建一个新的 _spec.rb 文件,然后在新进程中运行每个测试,例如。bundle exec rspec spec/acceptance/profile_test_one.rb && bundle exec rspec spec/acceptance/profile_test_two.rb

    对于串行或并行运行,最好在 CI 平台中执行此操作。例如,对于 Travis(或带有 Matrix 插件的 Jenkins),您将创建一个测试矩阵,每个配置文件具有不同的测试,因此它们可以并行运行。这需要非常强大的测试机器,特别是如果您使用的是大块虚拟机。

    我怎样才能减少每次运行的时间,特别是如果有一个相当大的具有多个角色和不同操作系统版本等的 Puppet 设置。也许选择测试类型(“仅角色测试”或“仅配置文件测试”)。

    当你说减少时间时,你指的是哪一部分?Puppet 运行需要多长时间,或者让机器进入可测试状态需要多长时间?

    使用 Docker 实例可以显着加快机器配置状态。

    要加快 Puppet 的运行速度,这取决于什么是慢的。如果是计算,让 SUT 更大,给它更多的内核或 RAM。对于网络相关问题,您可以使用缓存。例如在 Mac 上,您可以使用 Squid 缓存所有需要的 RPM/APT 包

    我通常不对角色进行验收测试。角色基本上只是元配置文件:它们不应该有逻辑并且只是配置文件的集合。

    测试角色的唯一好处是在使用多个配置文件时检测冲突,但是使用 rspec-puppet 而不是验收测试可以更好地检测冲突和依赖性检查。

    例如,像这样的角色:

    class role::foo_blog {
      include profile::base
      include profile::nginx
      include profile::php
      include profile::mysql
    }
    

    使用验收测试来测试四个配置文件中的每一个会更容易,并编写一个 rspec-puppet 测试以确保不同的配置文件没有依赖问题或冲突。

    • 2

相关问题

  • 如何修复 Puppet 完全限定的参数路径错误?

  • puppet:修改配置文件后强制重启服务

  • 木偶模块资源

  • 傀儡主机名问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve