在Test Kitchen中以特定用户身份运行命令

时间:2018-03-28 19:53:52

标签: chef test-kitchen

我知道您可以在Chef配方中运行'execute'模块,它包含一个cwd和user参数,允许您在当前工作目录中以该用户身份运行命令。这就是我在代码中所做的:

execute 'rpmdev-setuptree' do
   user 'rpmbuild'
   cwd '/home/rpmbuild'
   live_stream true
   action :run
end

我一直在以root身份执行此命令的不同变体或显式更改目录(即执行'cd / home / rpmbuild&& rpmdev-setuptree),但这不起作用。无论我做什么,Chef似乎都决定在/ root目录中运行此命令。为什么会这样?请注意,我一直在做:

execute 'cd /home/rpmbuild  && rpmdev-setuptree' do
   user 'rpmbuild'
   cwd '/home/rpmbuild'
   live_stream true
   action :run
end

execute 'sudo su - rpmbuild  && rpmdev-setuptree' do
   user 'root'
   cwd '/home/rpmbuild'
   live_stream true
   action :run
end 

有人能告诉我为什么会这样吗?我正在尝试在/ home / rpmbuild目录中运行rpmdev-setuptree,以便它构建路径,但它始终在/ root目录中运行此命令。

输出在我运行的代码段之间有所不同,有些代码在没有输出的情况下完成。但是当我尝试单独使用rpmdev-setuptree时我没注意到它会:

   [execute] touch: cannot touch ‘/root/.rpmmacros’: Permission denied
      grep: /root/.rpmmacros: No such file or directory
      /bin/rpmdev-setuptree: line 43: [: -lt: unary operator expected
      grep: /root/.rpmmacros: No such file or directory
      /bin/rpmdev-setuptree: line 57: [: -lt: unary operator expected
      grep: /root/.rpmmacros: No such file or directory
      /bin/rpmdev-setuptree: line 75: [: -lt: unary operator expected
      mkdir: cannot create directory ‘/root/rpmbuild’: Permission denied
      mkdir: cannot create directory ‘/root/rpmbuild’: Permission denied
      mkdir: cannot create directory ‘/root/rpmbuild’: Permission denied
      mkdir: cannot create directory ‘/root/rpmbuild’: Permission denied
      mkdir: cannot create directory ‘/root/rpmbuild’: Permission denied

1 个答案:

答案 0 :(得分:1)

您确定问题是工作目录而不是rpmdev-setuptree正在尝试使用$HOME吗?出于各种不太好的原因,我们在以其他用户身份运行时不会自动设置$HOME,因此您可能还需要添加environment 'HOME' => '/home/rpmbuild'