2

Chef を使用して Amazon EC2 で Windows サーバー (2008r2 Datacenter Edition) を起動しています。このシナリオでは、スクリプトを実行します。

railsdev@deb7> knife ec2 server create -VV -I ami-xxxxxxx --flavor=m1.medium --groups=windows_target --region=us-east-1 --ssh-key=deployme --identity-file=/home/railsdev/Development/me-chef-repo/.chef/deployme.pem --bootstrap-protocol winrm --template-file=/home/railsdev/Development/me-chef-repo/windows-chef-client-msi.erb --user-data=/home/railsdev/Development/me-chef-repo/enable-winrm.ps1 --run-list 'role[me-win]' --node-name=jgodse-xx-65

このスクリプトは、EC2 ノードを正常に開始し、レシピを実行します。

実行したい Chef レシピの 1 つは、次のように windows_batch リソースを使用します。

windows_batch "start_me" do
   cwd "C:/me"
   code 'C:\Ruby193\ruby.exe C:\me\start_me.rb'    
end

「start_me.rb」は、ユーザー「Local System Account」として実行される Windows サービスを開始します。ただし、サービスを管理者として実行する必要があるため、スクリプトに管理者パスワードを渡す必要があります。

新しい windows_batch は次のようになると思います。

windows_batch "start_me" do
   cwd "C:/me"
   code 'C:\Ruby193\ruby.exe C:\me\start_me.rb pass=' + passwd    
end

Windows パスワードは、Chef::Config[:knife][:winrm_password] というナイフ変数の Chef ワークステーション側に存在することを知っています。ただし、このリソースを使用して Chef::Config をダンプすると、次のようになります。

windows_batch "Chef::Config[:knife]" do
  code <<-EOHH
  @ECHO OFF

  ECHO Chef::Config[:knife] = #{Chef::Config[:knife].inspect} >> %SystemDrive%\plchef_config_knife_jgodse.txt
  EOHH
end

Chef ノードの plchef_config_knife_jgodse.txt に大きな「{}」が含まれています。つまり、Chef::Config[:knife] データが Chef ワークステーションから Chef ノードに送信されませんでした。

サーバー上の Chef::Config[:knife][:winrm_password] に保存されている Windows 管理者パスワードを取得するにはどうすればよいですか?シェフのレシピ?

4

1 に答える 1