Opscode CHEF(11.12.8) - 厨师 - 客户无法添加环境。变种。对PATH

时间:2014-10-03 10:06:29

标签: windows path environment-variables chef

我正在使用带有Windows节点的Chef-client(11.12.8)(Win Server 2012)。

我安装了perforce客户端。为此,我在CMD Chef-client中启动以执行我的食谱。

Perforce安装在PATH中设置p4.exe的相应路径。 但是在我启动chef-client命令的cmd中,PATH没有更新。 所以之后,在我的食谱中,当我尝试在windows_batch资源中执行命令'p4 sync'时,它失败了。

我尝试的解决方案,

1 /
设置PATH =%PATH%; C:\ Program Files \ Perforce
在启动p4 sync命令之前在windows_batch资源中 没有工作。

2 /
将上一个命令分批放入。
没有工作。

3 /
$ env:Path = $ env:Path +“; C:\ Program Files \ Perforce”
在启动p4 sync命令之前在powershell_script资源中 没有工作。

有办法吗?
而不是使用:
C:\ Program Files \ Perforce \ p4.exe

感谢


UPDATE_01

代码,但我认为它不会那么有用......

安装perforceClient

windows_package 'Perforce Client' do
  source 'PerforceClient_2014.1\\p4vinst64.exe'
  options '/s /v"/qn"'
  installer_type :custom
  action :install
end

...

windows_batch 'Perforce sync' do
  code <<-EOH
  p4 sync //APP/
  EOH
end

这里p4命令是我从启动chef-client命令的cmd中未知的。 我将看一下批处理资源。 感谢

1 个答案:

答案 0 :(得分:0)

windows_package 'Perforce Client' do
  source 'PerforceClient_2014.1\\p4vinst64.exe'
  options '/s /v"/qn"'
  installer_type :custom
  action :install
  notifies :run, "execute[PerforceSync]", :immediately
end

execute 'PerforceSync' do
 action :nothing
 command 'p4 sync //APP/'
 environment { "PATH": "#{ENV['PATH']};C:\Program Files\Perforce" }
end

无需使用windows_batch资源来执行单个命令。

我在执行资源中没有使用任何操作,以避免在每次运行时执行它,并且只在安装软件包时通知它运行。

存在

windows_batchbatch资源来转置现有批次。 我确定你不会写一个.bat或.cmd文件来运行一个命令。

execute资源文档为HERE

附注:如果不是由其他资源驱动,您应该考虑为任何执行或批处理资源添加一个防护,请参阅This作为起点。