2014-10-03 1 views
0

Я использую chef-client (11.12.8) с узлами Windows (Win Server 2012).Opscode CHEF (11.12.8) - chef-клиент не может добавить env. вар. to PATH

Я устанавливаю клиента perforce. Для этого я запускаю в Chef-клиенте CMD для выполнения моей кулинарной книги.

Установка Perforce в PATH соответствует пути к p4.exe. Но в cmd, где я запускаю команду chef-client, PATH не обновляется. Итак, в моей поваренной книге, когда я пытаюсь выполнить команду «p4 sync» в ресурсе windows_batch, она терпит неудачу.

решения я стараюсь,

1/
набор PATH =% PATH%; C: \ Program Files \ неволей
в windows_batch ресурс перед запуском команды p4 синхронизации.
НЕ РАБОТАЕТ.

2/
Поместите предыдущую команду в пакет.
НЕ РАБОТАЕТ.

3/
$ ENV: Path = $ ENV: Путь + "; C: \ Program Files \ неволей"
в powershell_script ресурс перед запуском команды p4 синхронизации.
НЕ РАБОТАЕТ.

Есть ли способ сделать это?
Вместо использования:
C: \ Program Files \ неволей \ 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 неизвестна из cmd, где я запускаю команду chef-client. Я посмотрю на ресурс партии. Благодаря

+0

Пожалуйста, покажите свой код рецепта и результаты работы шеф-повара. Тем не менее, начиная с 11.6, вместо windows_batch рекомендуется [пакетный ресурс] (http://docs.getchef.com/resource_batch.html). Без журнала выполнения (с '-l debug' для полноты) никто вам не поможет. выполнить (возможно?) использовать атрибут accept и environment, где вы должны дать обновленный env, но без вашего кода я не могу дать реальный ответ. – Tensibai

ответ

0
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 документация ресурс HERE

Side Примечание: Вы должны рассмотреть вопрос о добавлении охранник любой выполнить или пакетным ресурс, если он не управляется другим ресурсом, см This в качестве отправной точки.

+0

Yep, Спасибо, что вам нужно делать. Я не знал о ресурсе выполнения;) Я новичок в поваре. Я помню, чтобы использовать охрану в рецепте. –

+0

@yosserbf А вы видите, давая код помогает :) – Tensibai

Смежные вопросы