问题标签 [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.
macos - Serverspec 无法验证 pip 在 OS X 目标上安装的任何软件包
使用serverspec-2.36.0
我无法验证pip
OS X El Capitan 虚拟机上安装的任何软件包。
测试由 Serverspec 执行的命令会给出正确的结果。
以下示例适用于在用户上ansible
安装。pip install ansible --user
vagrant
我的
/li>ansible_spec.rb
:结果:
第二个任务的详细信息:
/li>我登录机器并运行:
/li>
我对这两个方面一无所知:故障排除的原因和下一步可能的步骤。
故障排除
我添加了一个要检查的任务
/li>which python
(从 Serverspec 内部),但它失败了:
ssh - 集成 Terraform 和 Serverspec
我正在使用 Terraform 自动构建基于 AWS EC2 的 docker 主机,然后使用其远程 exec 选项下载 docker 文件,构建并运行它。
我希望将其与 Serverspec 集成,但我正在努力解决两件事:
将新创建的 AWS EC2 实例的外部 dns 传递给 Serverspec 的最佳方式。
如何为 Serverspec 配置 SSH 选项,以便它使用 ec2-user 账户在 Amazon Linux AMI 上正确执行。
我通常会使用预定义的密钥对连接到 EC2 实例,并且从不使用密码,但是 ServerSpec 似乎使用 sudo -p 格式在服务器上运行命令。
非常感谢任何建议。
spec_helper.rb 的内容
还使用如下编辑的 rakefile 来强制纠正 EC2 外部 dns(屏蔽):
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
以另一个用户身份运行命令。除非有人知道进行此类测试的更好方法,否则我会将其添加为问题的答案。
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 -q
和yum list installed
工作以及如何使用 serverspec by()
(我认为rpm -q
只显示了安装的包rpm
和相同的包,yum list
但似乎它们都列出了所有已安装的包)。知道了这一点,我通过将其更改为以下方式通过了测试:
python27-pip-6.1.1-1.21.amzn1.noarch
rpm -qa
是我使用or时打印出来的包名yum list installed
。但是,必须知道整个名称并在这里使用它似乎有点麻烦。我希望有一种方法可以做到这一点,类似于我在上面尝试使用该with_version()
方法的方式。
编辑 2
所以现在我知道我可以这样写测试:
所以有一些我不明白的 Linux 问题,我认为是导致需要问这个问题的原因。在这种情况下,当 Matt 指出搜索系统包 with 与 withrpm
相同时yum
,它几乎解释了我真正需要知道的内容。
所以我意识到这不是一个好问题,但我不确定我是否应该删除它,因为也许它可以帮助其他人,但也因为我感谢我得到的帮助并希望用积分来奖励它。
ruby - 远程运行 Serverspec 测试时出现“nil:NilClass 的未定义方法 `[]'”错误
我有一个使用inifile gem 的 Serverspec 测试:
如果在机器上本地执行测试通过(在安装 gem 的rake
Ubuntu 客户机或 OS X 主机上)。inifile
但是,当我在rake
Vagrant 机器上运行时(即在通过 SSH 连接到 Vagrant 上的 Ubuntu 的主机上),它会失败并显示以下消息:
我使用 Serverspec 的默认值Rakefile
和spec_helper.rb
.
/tmp/testfile1.ini
如下,尽管无论内容如何测试都失败:
在我看来,字符未转义似乎存在某种问题,但我不太确定。
有什么问题?
ruby - Chef/Vagrant/Serverspec:确保软件包安装失败的规范,但它们已安装
从文档看来,使用 Serverspec 来验证是否安装了软件包应该非常简单,但是我遇到了一些有趣的问题vim
和ag
( the_silver_searcher
)。
我正在使用带有kitchen-vagrant
插件的 Test Kitchen,并且有两个平台:ubuntu-1404
和centos-72
. 我的所有规格都通过了 Ubuntu,其中两个不适合 Centos:vim
和ag
.
vim
处理此安装的 Chef 代码非常简单:
package "vim"
这是规格:
再次,非常直截了当。但是,它在我的 Centos 构建中失败并出现以下错误:
然而,如果我登录到服务器,它肯定是安装的:
银
ag
更复杂的是安装需要在 Centos 上从源代码构建,而在 Ubuntu 上它可以使用apt-get
. 这是配方的相关部分:
这是规格:
Centos 失败:
同样,如果我登录到 Centos VM,我可以使用ag
:
如果我切换到root
用户,这些命令也可以工作。
我试图通过以不同方式为 Centos 平台编写规范来欺骗系统:
即使ag
在登录时输入(退出状态1
)确实会产生该使用内容,上述内容也不起作用。我的最后一次尝试是:
这行得通,但感觉超级hacky,好像没有必要。
有人在这里推荐吗?这些包有什么我遗漏/做错的吗?我最初认为ag
问题只是因为它是从源安装而不是包管理器,但是使用包管理vim
器安装并且仍然存在与ag
.
amazon-web-services - serverspec 测试无法检查 Docker 服务是否在 AWS 上运行
我正在使用 Packer 在 AWS 中创建一个基于 Amazon Linux AMI 的 AMI,并使用 Ansible 进行预置。
我的一些 serverspec 测试失败了,我不明白为什么。第一个总是失败的方法是尝试确保 Docker 已安装并正在运行。尝试测试服务是否已启用并正在运行时总是失败。这是我的规格
谷歌搜索了一下后,我尝试了相同的结果
在使用 Ansible 进行配置时,我尝试执行 serverspec 用于规范的相同命令,我得到了我理解的正确答案,但规范仍然失败。
这些是 serverspec 正在使用的命令
这是安装 Docker 的剧本,打印与 serverspec 使用的相同命令的输出
两个命令的输出都是
我做错了什么?
rspec - 如何检查是否使用 serverspec 安装了特定版本的 msi?
我们正在尝试在 Windows 中使用 ServerSpec 验证应用程序安装。我在 ruby 文件中写了以下几行(使用 Test.rb)
我像这样运行脚本。
它正在正确地检查。但我想检查特定版本的 msi(windows 安装程序包)。如何在 serverspec 中做到这一点?
chef-infra - Windows 中的 InSpec 命令太慢。我错过了任何步骤吗?
我正在检查 Serverspec 和 InSpec 以验证我的基础架构。当我在我的 Windows 2012 R2 服务器中执行 Serverspec 时,它运行时没有任何明显的性能问题。但是我在执行 InSpec 的时候,很长一段时间都没有看到结果,我以为我做错了,所以取消了它。然后我再次运行它需要很长时间才能运行(脚本只有一个描述)。这是 InSpec 中的预期行为还是我需要做一些特别的事情?
我的 InSpec 脚本是: