如何使用 Serverspec 编写本地测试?

如何使用 Serverspec 编写本地测试?

到目前为止,Serverspec 运行良好。我正在测试我的服务器,一切看起来都很好。

假设我想通过从本地工作站运行几个 LDAP 命令来测试我的 LDAP 集群,比如说ldapsearch。我之所以在工作站而不是任何服务器上执行此操作,是为了确保一切都能远程运行,包括负载平衡。

惯例是什么?如何实现?我需要对我的 进行哪些更改Rakefile?我已经生成了一个Rakefilevia serverspec-init。有这方面的例子吗?

答案1

据我了解,serverspec这是一种检查工具服务器的配置状态检查正确性并确保它处于所需状态。这是通过登录服务器并执行检查给定配置项/值并返回输出的命令来实现的。因此,我怀疑 serverspec 是否是适合您要执行的操作的工具。

该网站的“关于”部分指出:

Serverspec 通过在本地、通过 SSH、通过 WinRM、通过 Docker API 等方式执行命令来测试服务器的实际状态。

在我看来,唯一接近您正在寻找的选项是使用command资源类型来运行并检查您想要的一些命令的输出。http://serverspec.org/resource_types.html#command

命令

命令资源类型。its(:stdout)、its(:stderr)、its(:exit_status)

您可以获取命令结果的 stdout、stderr 和退出状态,并且可以使用 RSpec 支持的任何匹配器。

describe command('ls -al /') do
  its(:stdout) { should match /bin/ }
end

describe command('ls /foo') do
  its(:stderr) { should match /No such file or directory/ }
end

describe command('ls /foo') do
  its(:exit_status) { should eq 0 }
end

答案2

您可以设置一个在 loopback(127.0.0.1) 而不是外部服务器上运行的命令。它仍然会在本地进行 ssh,但它会执行您需要的操作。

相关内容