Stuck trying to bootstrap Windows server using Che

2020-06-17 04:46发布

问题:

I am a mac girl, working on connecting with knife-windows trough Opscode's managed Chef to my Rackspace Windows servers. (I know, it sounds exotic, but these Windows servers are a customer requirment).

I tried to Chef for a spin but I am stuck in trying to bootstrap the Windows 2008 Server on Rackspace with the knife-windows command.

I am working on OSX, using rvm, ruby 2.1.0 and a local gemset with chef + knife-windows.

I was trying to follow the steps from: https://github.com/opscode/knife-windows

I have configured the winrm service. I have set up a rule to allow inbound connections in my firewall on port 5985,and I verified that I can connect with telnet.

In addition to the Learn Chef screen casts, I have tried to follow the guide: http://developer.rackspace.com/blog/step-by-step-walkthrough-to-using-chef-to-bootstrap-windows-nodes-on-the-rackspace-cloud.html

I configured winrm like this:

winrm quickconfig -q
winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="300"}'
winrm set winrm/config '@{MaxTimeoutms="1800000"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'
netsh advfirewall firewall add rule name="WinRM 5985" protocol=TCP dir=in localport=5985 action=allow
netsh advfirewall firewall add rule name="WinRM 5986" protocol=TCP dir=in localport=5986 action=allow
net stop winrm
sc config winrm start=auto
net start winrm

I am using knife like this: knife bootstrap windows winrm 168.**** -x Administrator -P '****'

I get back this strange log, no success report, no instance appearing in the chef management console .... I see that its trying to insert the character '#39' many times ?

WARNING: Could not load IOV methods. Check your GSSAPI C library for an update
WARNING: Could not load AEAD methods. Check your GSSAPI C library for an update
Bootstrapping Chef on 162.13.15.241
162.13.15.241 "Rendering "C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-47130-1392751156.bat" chunk 1" 
162.13.15.241 "Rendering "C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-47130-1392751156.bat" chunk 2" 
162.13.15.241 '#39' is not recognized as an internal or external command,
162.13.15.241 operable program or batch file.
162.13.15.241 "Rendering "C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-47130-1392751156.bat" chunk 3" 
162.13.15.241 '#39' is not recognized as an internal or external command,
162.13.15.241 operable program or batch file.
162.13.15.241 "Rendering "C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-47130-1392751156.bat" chunk 4" 
162.13.15.241 '#39' is not recognized as an internal or external command,
162.13.15.241 operable program or batch file.
162.13.15.241 '#39' is not recognized as an internal or external command,
....
162.13.15.241  echo. 
162.13.15.241  echo.$webClient = new-object System.Net.WebClient;  
162.13.15.241  echo. 
162.13.15.241  echo.$webClient.DownloadFile($remoteUrl, $localPath); 
162.13.15.241 ) 1>C:\chef\wget.ps1 
162.13.15.241 C:\Users\Administrator>)

I tried to follow the advice from knife bootstrap windows winrm from Mac OS X workstation fails, and downgraded knife-windows to version 0.5.10, but the result is the same.

My gemset is as follows:

akami (1.2.1)
bigdecimal (1.2.3)
builder (3.2.2)
bundler (1.5.3)
bundler-unload (1.0.2)
chef (11.10.0)
chef-zero (1.7.3)
coderay (1.1.0)
diff-lcs (1.2.5)
em-winrm (0.5.4)
erubis (2.7.0)
eventmachine (1.0.0.beta.3)
excon (0.31.0)
executable-hooks (1.3.1)
ffi (1.9.3)
fog (1.20.0)
formatador (0.2.4)
gem-wrappers (1.2.4)
gssapi (1.0.3)
gyoku (1.1.1)
hashie (2.0.5)
highline (1.6.20)
httpclient (2.3.4.1)
httpi (0.9.7)
io-console (0.4.2)
ipaddress (0.8.0)
json (1.8.1)
knife-rackspace (0.9.0)
knife-windows (0.5.10)
little-plugger (1.1.3)
logging (1.8.2)
method_source (0.8.2)
mime-types (1.25.1)
mini_portile (0.5.2)
minitest (4.7.5)
mixlib-authentication (1.3.0)
mixlib-cli (1.4.0)
mixlib-config (2.1.0)
mixlib-log (1.6.0)
mixlib-shellout (1.3.0)
moneta (0.6.0)
multi_json (1.8.4)
net-scp (1.1.2)
net-ssh (2.8.0)
net-ssh-gateway (1.2.0)
net-ssh-multi (1.2.0)
nokogiri (1.6.1)
nori (1.1.5)
ohai (6.20.0)
pry (0.9.12.6)
psych (2.0.2)
puma (1.6.3)
rack (1.5.2)
rake (10.1.0)
rdoc (4.1.0)
rest-client (1.6.7)
rubygems-bundler (1.4.2)
rubyntlm (0.1.1)
rvm (1.11.3.9)
savon (0.9.5)
slop (3.4.7)
systemu (2.5.2)
test-unit (2.1.0.0)
uuidtools (2.1.4)
wasabi (1.0.0)
winrm (1.1.3)
yajl-ruby (1.2.0)

Any advice? Is this an OS X thing? Windows Server thing? Chef thing???

With last shreds of hope, Agata

回答1:

Purge & Install it with:

gem uninstall knife-windows  
gem install knife-windows -v 0.5.10   

check your gems with:

gem list | grep knife-windows  

And it should show knife-windows (0.5.10).

Configure the window remote management

  1. winrm quickconfig -q   
  2. winrm set winrm/config/winrs @{MaxMemoryPerShellMB="300"}  
  3. winrm set winrm/config @{MaxTimeoutms="1800000"}  
  4. winrm set winrm/config/service @{AllowUnencrypted="true"}
  5. winrm set winrm/config/service/auth @{Basic="true"}

and then bootstrapped:

knife bootstrap windows winrm ec2-xx-xxx-xx.compute-1.amazonaws.com -r 'recipe[cookbook]' -x Administrator -P xxxxxxxx


回答2:

In my case, RVM was the responsible culprit. I managed to resolve this issue by following steps:

1) downloading and installing Chef the omnibus installer from Opscode

curl -L https://www.opscode.com/chef/install.sh | sudo bash

2) Installing knife-windows directly in chefs library:

Navigate to /opt/chef/embedded/bin/gem

Disable rvm by using system ruby:

rvm use system

3) Install knife windows plugin :

/opt/chef/embedded/bin/gem install knife-windows

Now I can bootstrap my Windows Server node using the command

knife bootstrap windows winrm <IP Address> -p 5985  -x Administrator -P '<password>'