[英]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_batch
或batch
资源以转置现有批处理。 我确定您不会编写.bat或.cmd文件来运行单个命令。
execute
此处 execute
资源文档
旁注:如果不受任何其他资源驱动,则应考虑将防护添加到任何执行或批处理资源,请参阅此作为起点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.