问题标签 [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 回答
425 浏览

macos - Serverspec 无法验证 pip 在 OS X 目标上安装的任何软件包

使用serverspec-2.36.0我无法验证pipOS X El Capitan 虚拟机上安装的任何软件包。

测试由 Serverspec 执行的命令会给出正确的结果。

以下示例适用于在用户上ansible安装。pip install ansible --uservagrant

  • 我的ansible_spec.rb

    /li>
  • 结果:

    第二个任务的详细信息:

    /li>
  • 我登录机器并运行:

    /li>

我对这两个方面一无所知:故障排除的原因和下一步可能的步骤。


故障排除

  • 我添加了一个要检查的任务which python(从 Serverspec 内部),但它失败了:

    /li>
0 投票
1 回答
1210 浏览

ssh - 集成 Terraform 和 Serverspec

我正在使用 Terraform 自动构建基于 AWS EC2 的 docker 主机,然后使用其远程 exec 选项下载 docker 文件,构建并运行它。

我希望将其与 Serverspec 集成,但我正在努力解决两件事:

  1. 将新创建的 AWS EC2 实例的外部 dns 传递给 Serverspec 的最佳方式。

  2. 如何为 Serverspec 配置 SSH 选项,以便它使用 ec2-user 账户在 Amazon Linux AMI 上正确执行。

我通常会使用预定义的密钥对连接到 EC2 实例,并且从不使用密码,但是 ServerSpec 似乎使用 sudo -p 格式在服务器上运行命令。

非常感谢任何建议。

spec_helper.rb 的内容

还使用如下编辑的 rakefile 来强制纠正 EC2 外部 dns(屏蔽):

0 投票
1 回答
271 浏览

ruby - Chef Kitchen (kitchen-ec2) serverspec 规范失败并导致错误

我正在使用带有 ec2 驱动程序的 Kitchen 来学习 Chef 和测试过程,并拥有以下 serverspec 文件:

当我运行kitchen verify amazon-linux第一个测试通过但第二个测试失败并导致错误时:

我手动登录服务器并运行相同的命令/bin/sh -c rbenv\ versions,它工作正常。

谁能告诉我这里是否做错了什么?

编辑 1

我刚刚发现,当 serverspec 运行命令时,$PATH变量与我手动登录时的变量不同。我添加puts ENV['PATH']到测试中,输出是这样的:

/sbin:/bin:/usr/sbin:/usr/bin

但是,当我手动登录时,我得到了这个:

/home/ec2-user/.rbenv/shims:/home/ec2-user/.rbenv/bin:/home/ec2-user/.rbenv/shims:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin

我将测试中的命令更改为/home/ec2-user/.rbenv/rbenv versions并通过了。知道我需要做什么才能使路径在这里正常工作吗?

编辑 2

所以我发现 serverspec 正在运行命令 as root,这意味着在ec2-user's path 期间发生的更改kitchen converge不可用。

我不知道是否有更惯用的方法来使用 serverspec 执行此操作,但我将命令更改为此并且测试现在通过了:

runuser -l ec2-user -c 'rbenv versions'

这允许root以另一个用户身份运行命令。除非有人知道进行此类测试的更好方法,否则我会将其添加为问题的答案。

0 投票
1 回答
923 浏览

ruby - Serverspec:“应该安装包”默认为 RPM。不能指定百胜?

我有这个 serverspec 测试:

它失败了,我在输出中注意到 serverspec 正在检查rpm默认安装的软件包。然后我在 serverspec 文档中注意到您可以by()用来指定包管理器,所以我尝试了这个:

但是,这也失败了,出现以下错误:

check_is_installed_by_yum is not implemented in Specinfra::Command::Redhat::Base::Package

我在这里查看了该课程的文档,并注意到了这个列表,其中不包括yum

check_is_installed_by_cpan, check_is_installed_by_gem, check_is_installed_by_npm, check_is_installed_by_pear, check_is_installed_by_pecl, check_is_installed_by_pip, check_is_installed_by_rvm

所以现在我不得不退回到describe command而不是describe package

这感觉很奇怪,因为 serverspec 似乎已经具有我正在寻找的功能。有什么我想念的吗?

编辑

马特的回答帮助我更好地理解了一些事情,比如如何rpm -qyum list installed工作以及如何使用 serverspec by()(我认为rpm -q只显示了安装的包rpm和相同的包,yum list但似乎它们都列出了所有已安装的包)。知道了这一点,我通过将其更改为以下方式通过了测试:

python27-pip-6.1.1-1.21.amzn1.noarchrpm -qa是我使用or时打印出来的包名yum list installed。但是,必须知道整个名称并在这里使用它似乎有点麻烦。我希望有一种方法可以做到这一点,类似于我在上面尝试使用该with_version()方法的方式。

编辑 2

所以现在我知道我可以这样写测试:

所以有一些我不明白的 Linux 问题,我认为是导致需要问这个问题的原因。在这种情况下,当 Matt 指出搜索系统包 with 与 withrpm相同时yum,它几乎解释了我真正需要知道的内容。

所以我意识到这不是一个好问题,但我不确定我是否应该删除它,因为也许它可以帮助其他人,但也因为我感谢我得到的帮助并希望用积分来奖励它。

0 投票
2 回答
395 浏览

ruby - 远程运行 Serverspec 测试时出现“nil:NilClass 的未定义方法 `[]'”错误

我有一个使用inifile gem 的 Serverspec 测试:

如果在机器上本地执行测试通过(在安装 gem 的rakeUbuntu 客户机或 OS X 主机上)。inifile

但是,当我在rakeVagrant 机器上运行时(即在通过 SSH 连接到 Vagrant 上的 Ubuntu 的主机上),它会失败并显示以下消息:

我使用 Serverspec 的默认值Rakefilespec_helper.rb.

/tmp/testfile1.ini如下,尽管无论内容如何测试都失败:

在我看来,字符未转义似乎存在某种问题,但我不太确定。

有什么问题?

0 投票
2 回答
376 浏览

ruby - Chef/Vagrant/Serverspec:确保软件包安装失败的规范,但它们已安装

从文档看来,使用 Serverspec 来验证是否安装了软件包应该非常简单,但是我遇到了一些有趣的问题vimag( the_silver_searcher)。

我正在使用带有kitchen-vagrant插件的 Test Kitchen,并且有两个平台:ubuntu-1404centos-72. 我的所有规格都通过了 Ubuntu,其中两个不适合 Centos:vimag.

vim

处理此安装的 Chef 代码非常简单:

package "vim"

这是规格:

再次,非常直截了当。但是,它在我的 Centos 构建中失败并出现以下错误:

然而,如果我登录到服务器,它肯定是安装的:

ag更复杂的是安装需要在 Centos 上从源代码构建,而在 Ubuntu 上它可以使用apt-get. 这是配方的相关部分:

这是规格:

Centos 失败:

同样,如果我登录到 Centos VM,我可以使用ag

如果我切换到root用户,这些命令也可以工作。

我试图通过以不同方式为 Centos 平台编写规范来欺骗系统:

即使ag在登录时输入(退出状态1)确实会产生该使用内容,上述内容也不起作用。我的最后一次尝试是:

这行得通,但感觉超级hacky,好像没有必要。

有人在这里推荐吗?这些包有什么我遗漏/做错的吗?我最初认为ag问题只是因为它是从源安装而不是包管理器,但是使用包管理vim 安装并且仍然存在与ag.

0 投票
0 回答
315 浏览

amazon-web-services - serverspec 测试无法检查 Docker 服务是否在 AWS 上运行

我正在使用 Packer 在 AWS 中创建一个基于 Amazon Linux AMI 的 AMI,并使用 Ansible 进行预置。

我的一些 serverspec 测试失败了,我不明白为什么。第一个总是失败的方法是尝试确保 Docker 已安装并正在运行。尝试测试服务是否已启用并正在运行时总是失败。这是我的规格

谷歌搜索了一下后,我尝试了相同的结果

在使用 Ansible 进行配置时,我尝试执行 serverspec 用于规范的相同命令,我得到了我理解的正确答案,但规范仍然失败。

这些是 serverspec 正在使用的命令

这是安装 Docker 的剧本,打印与 serverspec 使用的相同命令的输出

两个命令的输出都是

我做错了什么?

0 投票
1 回答
435 浏览

rspec - 如何检查是否使用 serverspec 安装了特定版本的 msi?

我们正在尝试在 Windows 中使用 ServerSpec 验证应用程序安装。我在 ruby​​ 文件中写了以下几行(使用 Test.rb)

我像这样运行脚本。

它正在正确地检查。但我想检查特定版本的 msi(windows 安装程序包)。如何在 serverspec 中做到这一点?

0 投票
0 回答
182 浏览

rspec - 如何从 Serverspec 的输出中省略 powershell 行?

我在 Windows 机器上运行 serverspec,并以 html 格式创建输出。

但是如果有失败的测试用例,输出的 html 会包含大量的 powershell 函数。如何省略该powershell函数并仅获取摘要?

脚本如下。

结果是具有如下图所示的 Powershell 功能。如何从结果 html 中省略此 Powershell 函数。 在此处输入图像描述

0 投票
1 回答
444 浏览

chef-infra - Windows 中的 InSpec 命令太慢。我错过了任何步骤吗?

我正在检查 Serverspec 和 InSpec 以验证我的基础架构。当我在我的 Windows 2012 R2 服务器中执行 Serverspec 时,它运行时没有任何明显的性能问题。但是我在执行 InSpec 的时候,很长一段时间都没有看到结果,我以为我做错了,所以取消了它。然后我再次运行它需要很长时间才能运行(脚本只有一个描述)。这是 InSpec 中的预期行为还是我需要做一些特别的事情?

我的 InSpec 脚本是: