Chef infra 在测试厨房中以特定用户身份运行命令

Chef infra 在测试厨房中以特定用户身份运行命令,chef-infra,test-kitchen,Chef Infra,Test Kitchen,我知道您可以在Chef recipes中运行“execute”模块,它包含一个cwd和用户参数,允许您作为当前工作目录中的用户运行命令。这就是我在代码中所做的: execute 'rpmdev-setuptree' do user 'rpmbuild' cwd '/home/rpmbuild' live_stream true action :run end 我一直在以root用户身份执行此命令或显式更改目录(即执行'cd/home/rpmbuild&&rpmdev s

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

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

有人能告诉我为什么会这样吗?我试图在/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

您确定问题是工作目录,而不是
rpmdev setuptree
试图使用
$HOME
进行某些操作吗?出于各种不太好的原因,当以不同的用户身份运行时,我们不会自动设置
$HOME
,因此您可能还必须添加
环境'HOME'=>'/HOME/rpmbuild'

我将给出一个示例,显示命令的错误输出可能有助于诊断问题。它在我们的列表中,需要修复,其中一个小时:)哈,不用担心。。只是星期三:-)
   [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