Попытка выполнить команду execute и batch от имени указанного пользователя в Windows с помощью Chef

Я использую ресурс Chef Execute в Windows. Когда я устанавливаю атрибут пользователя ресурса, я получаю эту ошибку:

Mixlib::ShellOut::InvalidCommandOption
--------------------------------------
You must supply both a username and password when supplying a user in windows

Это имеет смысл, но нет атрибута пароля. Я испробовал все виды выдуманных способов, но не понял, как его передать. Для этой ситуации пароль в виде открытого текста не является проблемой. Возможно, ввод пароля не является функцией? Глядя здесь ( https://github.com/opscode/mixlib-shellout/blob/master/lib/mixlib/shellout/windows.rb), кажется, что вариант пароля ожидается.

Я попытался использовать пакетный ресурс вместо этого. Команда работает нормально, пока я не установлю атрибут пользователя. Я получаю следующую ошибку:

NoMethodError
-------------
undefined method `uid' for nil:NilClass

Я не знаю, должны ли они работать, и я делаю что-то неправильно или они не работают, и мне нужен возможный обходной путь. Любая помощь приветствуется! Спасибо!

1 ответ

Это действительно так. Лучшим ресурсом для вопросов о Windows+Chef, как правило, является список рассылки Chef, так как там работают несколько основных пользователей Windows. В качестве обходного пути вы можете легко подклассировать и ресурс, и поставщика, чтобы разрешить передачу пароля:

class Chef
  class Resource::WindowsExecute < Resource::Execute
    def initialize(name, run_context=nil)
      super
      @resource_name = :windows_execute
    end

    def password(arg=nil)
      set_or_return(:password, arg, :kind_of => String)
    end
  end

  class Provider::WindowsExecute < Provider::Execute
    def shell_out!(cmd, opts)
      opts[:password] = new_resource.password if new_resource.password
      super
    end
  end
end

Приведенный выше код полностью не протестирован, но вы можете попробовать сбросить его в libraries/windows_execute.rb и используя windows_execute ресурс с атрибутом пароля. Я бы рекомендовал прочитать по https://coderanger.net/chef-secrets/ для получения дополнительной информации о том, как хранить и управлять этим паролем.

Другие вопросы по тегам