2

我正在使用 Chef 在 Amazon EC2 上启动 Windows 服务器(2008r2 数据中心版)。在这种情况下,我运行一个脚本。

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

我知道 Windows 密码存在于 Chef 工作站端的名为 Chef::Config[:knife][:winrm_password] 的刀变量中。但是,当我使用此资源转储 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(){} 提供程序使用厨师食谱?

4

1 回答 1

0

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

于 2014-06-12T05:18:36.867 回答