4

Windows で Chef リソース Execute を使用しています。リソースのユーザー属性を設定すると、次のエラーが発生します。

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 ) を見ると、パスワードのオプションが期待されているようです。

代わりに Batch リソースを使用してみました。ユーザー属性を設定するまで、コマンドは正常に実行されます。次のエラーが表示されます。

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

これらが機能するはずで、何か間違ったことをしているのか、それとも機能せず、可能な回避策が必要なのかはわかりません。どんな助けでも大歓迎です!ありがとう!

4

1 に答える 1

1

そのように見えます。Windows+Chef に関する質問に最適なリソースは、一般に、Windows を使用している主要な人々が何人か参加しているため、Chef メーリング リストです。回避策として、リソースとプロバイダーの両方を簡単にサブクラス化して、パスワードを渡すことができます。

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を持つリソースにドロップして使用することを試すことができます。このパスワードを保存および管理する方法の詳細については、https://coderanger.net/chef-secrets/windows_executeを読むことをお勧めします。

于 2014-09-29T06:24:05.293 に答える