InSpec + TestKitchen:如何代表特定用户执行命令?

时间:2017-10-26 21:04:20

标签: test-kitchen inspec switch-user

我的Chef cookbook在本地为特定用户安装Ruby。我想编写一个InSpec测试,检查Ruby的特定版本是否可用,以及是否安装了没有文档的gem。

所以显然我需要代表具有rbenv安装的用户运行命令。我决定坚持使用sudo su -c。版本测试工作正常:

describe command('su - rbenv_user -c "ruby -v"') do
  its('stdout') {should match ('ruby 2.3.1')}
end

但是当我尝试安装gem:

describe command('su - rbenv_user -c "gem install bundler"') do
  its('stderr') {should match ('Successfully installed')}
  its('stderr') {should_not match ('Parsing documentation for')}
end

我收到错误:

  

错误:执行gem时...(Errno :: EACCES)       权限被拒绝@ rb_sysopen - /apps/rbenv_user/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.15.4/.codeclimate.yml

我还尝试用su - user -c ...替换runuser -l user -c ...,这会导致相同的结果。

我不知道为什么会发生这种情况以及我必须测试其他用户的其他选项。

1 个答案:

答案 0 :(得分:0)

您可以在运行inspec测试时指定用户。请参阅https://github.com/chef/inspec/issues/362