Chef:windows_batch:如何将Windows管理员密码从Chef工作站传递到Chef节点

时间:2013-07-18 22:24:53

标签: chef chef-recipe chef-windows

我正在使用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食谱使用了一个windows_batch资源,如下所示:

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

'start_me.rb'启动以用户“本地系统帐户”运行的Windows服务。但是我需要以管理员身份运行服务,因此我需要将脚本传递给管理员密码。

我设想新的windows_batch看起来像这样:

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

我知道名为Chef :: Config [:knife] [:winrm_password]的刀变量中的Chef工作站侧存在Windows密码。但是,当我使用此资源转储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管理员密码,以供在内部Chef节点上运行的windows_batch(){}提供程序使用我的厨师食谱之一?

1 个答案:

答案 0 :(得分:0)

你无法完全按照自己的要求去做。管理员工具刀的配置设置不会以任何方式发送到服务器。