2

したがって、特定のユーザーとしてバッチファイルを実行するためのコードがいくつかあります。これは、次の構文を自動化するための私の試みでした

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モジュールをオーバーライドしているようです(レシピは実際にはルビーではなく、opscode DSLであることがわかっていますか?)

誰でもこれを機能させることができましたか?または、実装が異なる同じ関数。Windowsクックブックをチェックしましたが、あまり見つかりませんでした

4

1 に答える 1

3

Windowsマシンでプロセスを作成するためのLWRPを作成したいようです。

あなたが得ているエラーはあなたが次のようなものを持っていることを意味します

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

正しい構文は

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

クックブックに上記が含まれていない場合は、含まれているファイルにuserという名前の変数が含まれている可能性があり、これもこの問題の原因になります。

あなたのサブ質問に答えるために、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
于 2012-11-12T11:12:12.510 に答える