问题标签 [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.
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 使规范在没有密码提示的情况下运行。
我无法弄清楚。请帮忙。
谢谢!
ruby - Serverspec:检查目录是否为空
我想检查现有目录是否为空(不包含任何文件或子目录)。
我尝试了以下方法:
但这不起作用。(当然,因为文档中没有提到它。)
重要提示:如果目录存在,我不想测试 - 它确实存在并且我无法更改它。
我的解决方案现在如下所示:
但这不是使用 Serverspec 资源类型“文件”。有没有更好的方法来测试文件夹是否为空?
ruby - 如何向 RSpec 发出对自定义 Serverspec 资源类型的期望失败的信号
我在下面编写了 serverspec 资源类型,用于检查键是否具有我拥有的某些 YAML 配置文件的正确值。对于哈希表中的每个键,我在资源类型实例上分配一个属性。如果密钥不存在,我希望失败并显示相应的消息。
在挖掘 rspec 的代码后,我发现如果我混合RSpec::Expectations
模块,我可以调用fail_with()
它应该报告测试失败。但是,我SystemStackError
从调用fail_with()
“堆栈级别太深”的行中得到了一个。我猜我做错了。有没有办法通过一条有意义的消息使测试失败?
test-kitchen - 无法覆盖 test-kitchen/busser-serverspec 中的 rspec_opts
似乎有办法覆盖 rspec_opts。默认情况下,它使用“--color --format 文档”运行,如下所示:
有没有办法禁用颜色并以 json 格式和文档执行?
我尝试在 test 目录中添加一个 .rspec 文件,但 Test Kitchen 没有选择它。我还尝试将 .rspec 文件移动到 suite/serverspec 目录中,但 busser 仍然使用 --color 和 --format 文档运行。
任何想法如何在 json 和文档中禁用颜色并将其格式化?
谢谢!
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
有人可以帮忙吗?有没有其他人有这个问题?谢谢。
更新:这是我为模拟这一点而创建的虚拟食谱中的所有属性。
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 不是这个的好选择?
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”命令将不起作用。
ruby - 如何对字符串进行数字比较
我编写了一个 serverspec 测试,旨在检查服务器上的 ram 数量是否大于或等于属性文件中列出的挂载
在我正在测试的机器上,命令给出“7539944”
如果属性 ram 设置为“888”,则测试错误地失败,因为字符串比较“888”大于“7539944”
有没有办法可以对 serverspec 中的字符串类型进行数字比较?
这个 irb 会议展示了我认为 ruby 的行为方式以及我希望它的行为方式
如果我将描述更改为此
我收到这个错误
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
谁能帮我指出正确的方向?
puppet - serverspec 如果条件错误
我在木偶中有以下代码
我为此编写了 serverspec
1)为什么我收到以下消息
我的操作系统版本是 6,所以它应该编译我的 serverspec 代码,但为什么它无法执行所有示例。
如果我将服务器规范更改为if os[:release] < '7'
2)如果我给} 4 个数字八位字节匹配it { should be_mode 440 }
,也不支持。it { should be_mode 0440
低于错误