2015-12-10 3 views
2

Я использую Jenkins на Windows Server 2012 R2. Я хотел бы запустить работу, которая строит, и при принудительной рекламе он должен сказать удаленному серверу шеф-повара, что рецепт был изменен или обновлен, а затем запустите chef-client на удаленных узлах.Как настроить Jenkins для использования Knife в сценарии Powershell

Я установил Chef подключаемого модуля идентификации, продвигаемых-строит плагин, плагин MSBuild, TFS-4.0.0 плагин и Deploy плагин

До сих пор строительные работы и повышений работы. Я настроил на принудительное продвижение, чтобы запустить два сценария Powershell. Первый работает отлично, это просто базовое управление данными и именование файлов.

Но второй говорит, что это был провал, но продвижение по-прежнему проходит, и нет никаких доказательств, которые будут работать вообще.

Я явно использовал путь к ножу, потому что, когда я не использую его, Дженкинс дает ошибку:

WARNING: No knife configuration file found 
ERROR: Could not find cookbook MyFirstCookingLesson in your cookbook path, skipping it 
ERROR: ArgumentError: Cannot sign the request without a client name, check that :node_name is assigned 

Если добавить флаг -V и запустить скрипт щелкнув правой кнопкой мыши его и запуская его с Powershell в Дженкинс рабочем пространстве Я получаю эту информацию:

enter image description here

ps1 файл содержит (назовём его 'Шеф-client.ps1'):

C:\opscode\chefdk\bin\knife cookbook upload MyFirstCookingLesson 
C:\opscode\chefdk\bin\knife job start 'chef-client' WIN-COMPNAME 

Шеф-client.ps1 вызывается с помощью Execute Batch для Windows Command:

cd C:\chef-source\cookbooks 
PowerShell.exe -File C:\chef-source\cookbooks\Chef-client.ps1 

Я также установить личность Chef в полномочиях Дженкинс следующим образом:

Identity name: geoff 
user.pem key : <a whole bunch of secret stuffs and gibberish> 

knife.rb : 

log_level :info 
log_location STDOUT 
node_name 'geoff' 
client_key 'C:/Users/user123/.chef/geoff.pem' 
validation_client_name 'geoff.pem' 
validation_key 'C:/Users/user123/.chef/secretName-validator.pem' 
chef_server_url 'https://secretLocation.268lab.local/organizations/secretName/' 
syntax_check_cache_path 'C:/Users/user123/.chef/syntax_check_cache' 
cookbook_path [ 'c:/chef-source/cookbooks/' ] 
http_proxy 'http://22.151.32.85:3128' 
https_proxy 'http://22.151.32.85:3128' 
no_proxy 'secretLocation.268lab.local' 
knife[:editor] = '"C:\Program Files (x86)\Notepad++\notepad++.exe"'; 

Так Я также обнаружил, что Дженкинс, похоже, работает в своем собственном Userprofile, который у меня есть чувство, может отбросить все.

Я прочитал так много настроенных блогов, но ничего, что действительно подсказывает мне, как установить это явно. В блогах либо просто предполагается, что это уже сделано, либо используется другой инструмент.

Я также разместил копии папки .chef как в рабочем пространстве Jenkins, так и в «надежном» пространстве пользовательского профайла в надежде, что он сработает.

Возможно, кто-нибудь поможет мне?

ответ

1

Слишком долго комментарий:

Так что я также узнал, что Дженкинс, кажется, работает в своем собственном Userprofile, который у меня есть ощущение, может быть бросать все прочь.

Если ваш пользователь jenkins не может прочитать user123 home, нет никаких шансов, что он сможет прочитать конфигурацию ножа, не прошедшей должную проверку подлинности, поскольку он не может прочитать файл geoff.pem.

Решение проблемы заключается в том, чтобы поместить конфигурацию, ключи и т. Д. В конкретный каталог и использовать опцию ножа -c, чтобы указать путь к файлу conf.Другой вариант - использовать переменную окружения KNIFE_HOME, но это менее легко и подвержено ошибкам в Jenkins.

+0

Извините. Я переместил сообщение об ошибке для лучшего чтения. Я полагаю, что -vv не является (double u) и его предполагается быть -V? если я использую -vv, это преуспевает, и если я использую -W, это говорит о том, что он не является допустимым параметром. –

+0

Удвоение V приводит к тому, что нож более подробный, я хочу сказать, что вы указали нам ошибку, которую, как вы говорите, исправили, что не поможет вам помочь – Tensibai

+0

Прошу прощения за путаницу. Это сообщение об ошибке является тем, которое я получаю от второго скрипта, который я запускаю. Он жалуется, что нет файла конфигурации ножей. –

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

  • Нет связанных вопросов^_^