问题标签 [serverspec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
255 浏览

rspec - Serverspec 测试运行的问题

关于 serverspec 运行,我有以下场景:

我使用用户证书登录到 VM,然后执行 sudo su -。现在作为根用户,我切换到不需要密码的虚拟用户。

然后使用虚拟用户,我使用 /opt/chefdk/embedded/bin/serverspec-init 初始化 serverspec,并将其配置为在同一 VM 中进行示例测试。

现在,当我使用虚拟 /opt/chefdk/embedded/bin/rspec spec/XXXX/sample_spec.rb 尝试此操作时

它不断询问用户密码,这只是一个证书。

我想避免这种情况,并希望 serverspec 使规范在没有密码提示的情况下运行。

我无法弄清楚。请帮忙。

谢谢!

0 投票
1 回答
2046 浏览

ruby - Serverspec:检查目录是否为空

我想检查现有目录是否为空(不包含任何文件或子目录)。

我尝试了以下方法:

但这不起作用。(当然,因为文档中没有提到它。)

重要提示:如果目录存在,我不想测试 - 它确实存在并且我无法更改它。

我的解决方案现在如下所示:

但这不是使用 Serverspec 资源类型“文件”。有没有更好的方法来测试文件夹是否为空?

0 投票
1 回答
139 浏览

ruby - 如何向 RSpec 发出对自定义 Serverspec 资源类型的期望失败的信号

我在下面编写了 serverspec 资源类型,用于检查键是否具有我拥有的某些 YAML 配置文件的正确值。对于哈希表中的每个键,我在资源类型实例上分配一个属性。如果密钥不存在,我希望失败并显示相应的消息。
在挖掘 rspec 的代码后,我发现如果我混合RSpec::Expectations模块,我可以调用fail_with()它应该报告测试失败。但是,我SystemStackError从调用fail_with()“堆栈级别太深”的行中得到了一个。我猜我做错了。有没有办法通过一条有意义的消息使测试失败?

0 投票
0 回答
109 浏览

test-kitchen - 无法覆盖 test-kitchen/busser-serverspec 中的 rspec_opts

似乎有办法覆盖 rspec_opts。默认情况下,它使用“--color --format 文档”运行,如下所示:

有没有办法禁用颜色并以 json 格式和文档执行?

我尝试在 test 目录中添加一个 .rspec 文件,但 Test Kitchen 没有选择它。我还尝试将 .rspec 文件移动到 suite/serverspec 目录中,但 busser 仍然使用 --color 和 --format 文档运行。

任何想法如何在 json 和文档中禁用颜色并将其格式化?

谢谢!

0 投票
1 回答
1319 浏览

chef-infra - Chef - ServerSpec - 访问节点属性

我正在为我写的一本食谱编写 ServerSpec 测试。测试需要节点属性来通过厨房断言各种事物。

幸运的是,这里有一个指南解释了如何实现这一点:http: //jakshi.com/blog/2014/05/12/accessing-chef-attributes-in-serverspec-tests/

我遇到的问题是,这不起作用:

但这有效:

我的设置与博客中描述的完全相同。由于缺少 ruby​​-fu,浏览代码没有帮助。chef-client 版本为 11.14.6,Test-Kitchen 版本为 1.3.1

有人可以帮忙吗?有没有其他人有这个问题?谢谢。

更新:这是我为模拟这一点而创建的虚拟食谱中的所有属性。

0 投票
1 回答
238 浏览

rspec - 如何在亚马逊 ec2 实例上使用 serverspec docker 资源

我有以下结构 -

堡垒(具有公共 DNS 的 EC2 实例)-> 运行 docker 容器的私有 EC2 实例。

现在,我可以看到通过 ssh 运行到 Bastion的docker 容器,使用ssh -i key.pem ec2-user@ec2.us-west-amazon.com后跟ssh -i key.pem <private EC2 instance IP>docker ps -a

我有 15 个不同的私有 EC2 实例和不同的 docker 容器。我想 ssh 到每个私有 EC2 实例并检查每个 docker 容器的属性。

使用 serverspec 我正在尝试这样的事情 -

我们如何使用 serverspec 来实现这一点?或者 serverspec 不是这个的好选择?

0 投票
1 回答
519 浏览

chef-infra - 测试命令资源时如何控制使用哪个用户“厨房验证”?

我有一本安装“git version 2.5.2”的厨师食谱。我正在使用 CentOS 6.4 vm 来应用这本食谱并编写了一个测试来检查 git 版本。

片段如下所示:

当我运行 kitchen verify 时,测试已执行,但返回的 git 版本与我预期的不同,这会导致测试失败。

这是错误:

VM 恰好在 /usr/bin 目录中安装了 git 版本 1.7.1。该配方将 git 版本 2.5.2 安装在 /usr/local/bin 目录中。当我使用“厨房登录”命令登录到 VM 时,我以 vagrant 用户身份连接。/usr/local/bin 目录在 PATH 中比 /usr/bin 高,所以当我运行“git --version”时,我会得到“git version 2.5.2”作为我的输出。但是,当我运行 kitchen verify 时,它将使用 root 用户执行我的测试。root 用户的 PATH 不包括 /usr/local/bin,但确实有 /usr/bin,因此它返回“git version 1.7.1”。

在执行测试时,如何控制厨房验证将使用的 VM 上的哪个用户?


我尝试在这样的测试中使用“su -c”命令:

结果如预期:

使用 git 命令进行更改:

结果:

检查 vagrant 用户的路径:

在这种情况下测试成功。没有为 vagrant 用户设置路径,因此普通的“git --version”命令将不起作用。


0 投票
1 回答
926 浏览

ruby - 如何对字符串进行数字比较

我编写了一个 serverspec 测试,旨在检查服务器上的 ram 数量是否大于或等于属性文件中列出的挂载

在我正在测试的机器上,命令给出“7539944”

如果属性 ram 设置为“888”,则测试错误地失败,因为字符串比较“888”大于“7539944”

有没有办法可以对 serverspec 中的字符串类型进行数字比较?

这个 irb 会议展示了我认为 ruby​​ 的行为方式以及我希望它的行为方式

如果我将描述更改为此

我收到这个错误

0 投票
2 回答
836 浏览

ruby - rspec/serverspec 服务测试总是失败

我相信这个问题可能是serverspec service test 返回不正确的失败的副本,但我包含了我的执行环境的更多信息。

我在 AWS 上针对 RHEL6 VM 执行了一系列成功的 serverspec 测试。

然而,匹配器 be_enabled 和 be_running 的任何“服务”测试似乎都失败了。

我的 spec_helper.rb 中有以下内容:

我为测试尝试了 serverspec 和 rspec 语法,但都失败了,因为它们运行相同的命令:

但是,在服务器上本地运行它们会成功:

我尝试使用 pry-byebug 设置一些调试,但这看起来并不那么简单,所以我现在有点放弃了。

我正在运行 ruby​​ 2.0、serverspec 2.24、rspec 3.3

谁能帮我指出正确的方向?

0 投票
1 回答
703 浏览

puppet - serverspec 如果条件错误

我在木偶中有以下代码

我为此编写了 serverspec

1)为什么我收到以下消息

我的操作系统版本是 6,所以它应该编译我的 serverspec 代码,但为什么它无法执行所有示例。

如果我将服务器规范更改为if os[:release] < '7'

2)如果我给} 4 个数字八位字节匹配it { should be_mode 440 },也不支持。it { should be_mode 0440

低于错误