繁体   English   中英

Opscode CHEF(11.12.8)-Chef-Client无法添加环境。 变种 到路径

[英]Opscode CHEF(11.12.8) - chef-client can't add env. var. to PATH

我在Windows节点(Win Server 2012)中使用Chef-client(11.12.8)。

我安装了perforce客户端。 为此,我在CMD主客户中启动以执行我的菜谱。

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知道的。 我将查看批处理资源。 谢谢

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 此处 execute资源文档

旁注:如果不受任何其他资源驱动,则应考虑将防护添加到任何执行或批处理资源,请参阅作为起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM