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