Chef: создать процесс от имени другого пользователя

Итак, у меня есть код для запуска командного файла от имени конкретного пользователя. Это была моя попытка автоматизировать следующий синтаксис

runas /user:thisguy "C:\ThisGuysScript.bat"

так это выглядит в Ruby

Process.create(:command_line => "C:\\ThisGuysScript.bat ", :domain => "MYServer", :with_logon => "thisguy", :password => "thisguyspassword", :cwd =>"C:\\")

Поэтому я пытаюсь добавить это в рецепт в шеф-поваре и стихийных бедствиях.

require 'win32/process'

::Process.create(:command_line => "C:\\ThisGuysScript.bat ", :domain => "MYServer", :with_logon => "thisguy", :password => "thisguyspassword", :cwd =>"C:\\")

Сбой со следующей ошибкой

[Tue, 30 Oct 2012 15:57:03 +0000] FATAL: ArgumentError: You must supply a name when declaring a user resource

Так что, похоже, я не понимаю, что хочу использовать процесс вкуса win32. Chef, кажется, переопределяет модуль win32 (я знаю, что рецепты - это DSL кода операции, а не действительно ruby, верно?)

Кто-нибудь смог заставить это работать? Или та же функция с другой реализацией. Просмотрел кулинарную книгу Windows, но не нашел многого


person PatrickWalker    schedule 30.10.2012    source источник


Ответы (1)


Похоже, вы хотите создать LWRP для создания процесса на компьютере с Windows.

Ошибка, которую вы получаете, означает, что у вас есть что-то вроде

user do # Missing name
  gid 500
  home "..."
end

правильный синтаксис

user "apache" do # or whatever the user name should be
   # ...
end

Если в вашей поваренной книге нет вышеуказанного, возможно, во включенном файле есть переменная с именем пользователя, которая также может вызвать эту проблему.

Чтобы ответить на ваш подвопрос, Chef — это настоящий рубин с некоторыми доступными функциями и фреймворком для запуска вещей. Обратите внимание, что в забеге шеф-повара есть несколько этапов. Я думаю, что у вас проблемы на этапе компиляции.

Создание LWRP похоже на путь. Если вы не хотите заходить так далеко, вы можете сделать что-то вроде.

ruby_block "Firing process lazers" do
   require 'win32/process'
   ::Process.create(:command_line => "C:\\ThisGuysScript.bat ", :domain => "MYServer", :with_logon => "thisguy", :password => "thisguyspassword", :cwd =>"C:\\")
end
person EnabrenTane    schedule 12.11.2012
comment
довольно смущающе, ошибка пользователя заключалась в том, что я использовал массив с именем user_details, но в моем фактическом вызове только что ввел пользователя. Тем не менее, ruby_block прояснил ситуацию (в основном мое понимание, хе-хе), поэтому принимая приведенный выше ответ. Определенно поиграю с аспектом LWRP, он использовал их раньше - person PatrickWalker; 12.11.2012