Я запускаю серверы Windows (выпуск 2008r2 Datacenter Edition) на Amazon EC2 с помощью Chef. В этом сценарии я запускаю скрипт.
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
Я получил большой жирный "{}" в plchef_config_knife_jgodse.txt на узле Chef. то есть данные Chef::Config[:knife] не попали с рабочей станции Chef на узел Chef.
Как я могу получить пароль администратора Windows, который хранится в Chef::Config[:knife][:winrm_password] на сервере, чтобы он был доступен поставщику windows_batch(){}, который работает на узле Chef внутри одного из моих Рецепты от шеф-повара?