2
我試圖安裝Git和在同一個傀儡腳本中使用它如何在當前Puppet會話中設置Windows環境路徑?
package { 'git':
ensure => latest,
provider => 'chocolatey',
}
vcsrepo { 'C:/':
provider => git,
source => 'github etc...',
}
但是,我越來越:
提供Git是不是該主機上的功能
正確的路徑包含在環境變量中,這導致我相信錯誤僅僅是因爲環境變量未被更新。
錯誤消失,如果我在命令行上,或者如果我重新啓動命令提示符下使用refreshenv
或set "PATH=%PATH%;C:\Program Files\Git\cmd"
,但有沒有辦法在無需人工干預相同傀儡腳本來更新他們?
我試着加入(當然是一次一個)以下的.PP文件:
#1
windows_env { 'PATH=C:\Program Files\Git\cmd': }
#2 (I've also tried different variations of quotes)
exec { 'temporary env var':
path => 'C:/Windows/System32',
command => 'cmd.exe /c "set \"PATH=$PATH%;C:\\Program Files\\Git\\cmd\""',
}
#3
exec { 'C:/ProgramData/chocolatey/bin/refreshEnv.cmd': }
我想你可以說我的問題是的Puppet agent: provider git is not functional on this host的延伸。
正如您所看到的,這在任何Windows進程中都有所限制,因爲它不會自動查看環境更新(如PATH)並自行更新。子進程無法更新父進程(這就是爲什麼你的不同選項全部失敗)。我認爲你已經確定了唯一的方法來做到這一點,直到Puppet支持自動查看和刷新環境。 https://tickets.puppetlabs.com/browse/PUP-4708 – ferventcoder
@ferventcoder謝謝,我不知道它實際上不可能! –
這是可能的,你已經看過'refreshenv'。除非你可以覆蓋路徑(你可以在'exec'中),否則這不是'vcsrepo'所能做的。所以讓Puppet自動做到這一點會有所幫助。這就是票的內容。 – ferventcoder