Я пытаюсь установить мерзавец и использовать его в том же кукольного сценарииКак установить пути среды Windows в текущей сессии Puppet?
package { 'git':
ensure => latest,
provider => 'chocolatey',
}
vcsrepo { 'C:/':
provider => git,
source => 'github etc...',
}
Однако, я получаю:
Поставщика мерзавца не работает на этом хосте
Правильный путь включен в переменные среды, что заставляет меня думать, что ошибка заключается только в том, что переменные среды не обновляются.
ошибка исчезает, если я использую 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'. Это просто не то, что вы можете сделать с помощью 'vcsrepo', если вы не можете переопределить путь (вы можете в' exec'). Таким образом, с помощью Puppet это автоматически поможет. Вот что такое билет. – ferventcoder