Я действительно надеюсь, что мне здесь чего-то не хватает - потому что я начинаю любить Chef, но некоторые вещи кажутся чрезвычайно глупыми.
У меня есть процесс (служба), который работает под определенными учетными данными. Эти учетные данные (пользователь / пароль) были введены один раз при установке службы и больше не видны людям. я хочу который процесс, чтобы иметь возможность запустить следующую команду ножа:
# Go kick the nodes and tell them to update now.
knife winrm "role:Xyz" "chef-client"
Я не хочу, чтобы записывали пароль или имя пользователя. Я хочу, чтобы это работало в моем текущем контексте, как если бы я перешел к пути UNC в проводнике \\ABC\DEF
<- Windows «достаточно умна», чтобы знать, кто я, и согласовывать мои учетные данные.
Другой пример - когда моя служба подключается к SQL Server. Я могу выбрать не включать имя пользователя / пароль, а просто передать учетные данные приложения.
Разумеется, Chef не требует повсеместного жесткого кодирования паролей администратора. Пожалуйста помоги.
Я знаю, что этот вопрос довольно старый, но на самом деле с knife-windows
установлен драгоценный камень, вы действительно можете использовать knife winrm
для выполнения команд.
Чтобы установить knife-windows
драгоценный камень запустить:
gem install knife-windows
Затем для запуска Chef-Client на всех машинах с ролью xyz
вы бы просто запустили:
knife winrm 'role:xyz' 'chef-client' --winrm-user $AdminUser --winrm-password $AdminPassword
При условии, что $AdminUser
и $AdminPassword
переменные содержат значения, у которых есть достаточные разрешения для WinRM на целевой машине.
ПРИМЕЧАНИЕ (при использовании ChefDK):
В зависимости от вашей настройки вам может потребоваться:
chef gem install knife-windows
и
chef exec knife winrm 'role:xyz' 'chef-client' --winrm-user $AdminUser --winrm-password $AdminPassword
В зависимости от того, используете ли вы встроенную среду Ruby или свою собственную.
Я нашел свой ответ. Короткий ответ - «Нет», knife
Утилита не поддерживает это. Тем не мение, WinRM
делает изначально поддерживает возможность передачи ваших учетных данных по сети без необходимости повторно вводить имя пользователя / пароль!
Итак, мне придется использовать knife
команда для запроса Chef, чтобы найти все узлы в конкретной роли, но оттуда я перехожу к powershell
и выполните эту команду:
Invoke-Command -ComputerName TheComputerName -ScriptBlock { chef-client }
knife
делает что-то вроде этого параллельно, так что мне просто придется сделать это сам в powershell
.