简体   繁体   English

Mac OS X工作站上的刀引导Windows Winrm失败

[英]knife bootstrap windows winrm from Mac OS X workstation fails

Running the command knife bootstrap windows winrm ec2box.amazonaws.com -r 'role[web]' -x Administrator -P 'mypassword' from my Mac OS X workstation produces the output below. 从Mac OS X工作站运行命令“ knife bootstrap windows winrm ec2box.amazonaws.com -r 'role[web]' -x Administrator -P 'mypassword'产生以下输出。 Running it from a Windows workstation, the command successfully runs. 从Windows工作站运行它,该命令成功运行。 Is there an extra step I need to take to get my Mac OS X workstation to communicate via WinRM correctly? 我需要采取其他步骤才能使Mac OS X工作站通过WinRM正确通信吗?

I'm using this on Amazon's Windows Server 2012 AMI. 我在亚马逊的Windows Server 2012 AMI上使用它。 It printed #39 everywhere on my terminal, not an artifact of Stack Overflow. 它在我的终端上到处都打印#39 ,而不是Stack Overflow的工件。

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 ec2box.amazonaws.com
ec2box.amazonaws.com "Rendering 'C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-7738-1370535154.bat' chunk 1"
ec2box.amazonaws.com "Rendering 'C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-7738-1370535154.bat' chunk 2"
ec2box.amazonaws.com '#39' is not recognized as an internal or external command,
ec2box.amazonaws.com operable program or batch file.
ec2box.amazonaws.com "Rendering 'C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-7738-1370535154.bat' chunk 3"
ec2box.amazonaws.com "Rendering 'C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-7738-1370535154.bat' chunk 4"
ec2box.amazonaws.com '#39' is not recognized as an internal or external command,
ec2box.amazonaws.com operable program or batch file.
ec2box.amazonaws.com '#39' is not recognized as an internal or external command,
ec2box.amazonaws.com operable program or batch file.
ec2box.amazonaws.com "Rendering 'C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-7738-1370535154.bat' chunk 5"
ec2box.amazonaws.com "Rendering 'C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-7738-1370535154.bat' chunk 6"
ec2box.amazonaws.com "Rendering 'C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-7738-1370535154.bat' chunk 7"
ec2box.amazonaws.com "Rendering 'C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-7738-1370535154.bat' chunk 8"
ec2box.amazonaws.com "Rendering 'C:\Users\ADMINI~1\AppData\Local\Temp\bootstrap-7738-1370535154.bat' chunk 9"
ec2box.amazonaws.com
ec2box.amazonaws.com else was unexpected at this time.
ec2box.amazonaws.com C:\Users\Administrator>mkdir C:\chef
ec2box.amazonaws.com
ec2box.amazonaws.com C:\Users\Administrator>(
ec2box.amazonaws.com echo.url = WScript.Arguments.Named("url")
ec2box.amazonaws.com  echo.path = WScript.Arguments.Named("path")
ec2box.amazonaws.com  echo.proxy = null
ec2box.amazonaws.com  echo.Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
ec2box.amazonaws.com  echo.Set wshShell = CreateObject( "WScript.Shell" )
ec2box.amazonaws.com  echo.Set objUserVariables = wshShell.Environment("USER")
ec2box.amazonaws.com  echo.
ec2box.amazonaws.com  echo.
ec2box.amazonaws.com  echo.On Error Goto 0
ec2box.amazonaws.com  echo.
ec2box.amazonaws.com  echo.objXMLHTTP.open "GET", url, false
ec2box.amazonaws.com  echo.objXMLHTTP.send()
ec2box.amazonaws.com  echo.If objXMLHTTP.Status = 200 Then
ec2box.amazonaws.com  echo.Set objADOStream = CreateObject("ADODB.Stream")
ec2box.amazonaws.com  echo.objADOStream.Open
ec2box.amazonaws.com  echo.objADOStream.Type = 1
ec2box.amazonaws.com  echo.objADOStream.Write objXMLHTTP.ResponseBody
ec2box.amazonaws.com  echo.objADOStream.Position = 0
ec2box.amazonaws.com  echo.Set objFSO = Createobject("Scripting.FileSystemObject")
ec2box.amazonaws.com  echo.If objFSO.Fileexists(path) Then objFSO.DeleteFile path
ec2box.amazonaws.com  echo.Set objFSO = Nothing
ec2box.amazonaws.com  echo.objADOStream.SaveToFile path
ec2box.amazonaws.com  echo.objADOStream.Close
ec2box.amazonaws.com  echo.Set objADOStream = Nothing
ec2box.amazonaws.com  echo.End if
ec2box.amazonaws.com  echo.Set objXMLHTTP = Nothing
ec2box.amazonaws.com ) 1>C:\chef\wget.vbs
ec2box.amazonaws.com
ec2box.amazonaws.com C:\Users\Administrator>(
ec2box.amazonaws.com echo.param(
ec2box.amazonaws.com  echo.   [String] $remoteUrl,
ec2box.amazonaws.com  echo.   [String] $localPath
ec2box.amazonaws.com  echo.)
ec2box.amazonaws.com  echo.
ec2box.amazonaws.com  echo.$webClient = new-object System.Net.WebClient;
ec2box.amazonaws.com  echo.
ec2box.amazonaws.com  echo.$webClient.DownloadFile($remoteUrl, $localPath);
ec2box.amazonaws.com ) 1>C:\chef\wget.ps1
ec2box.amazonaws.com C:\Users\Administrator>) else (

I faced a similar issue. 我遇到了类似的问题。 What i did was: 我所做的是:

Uninstall gem and then did aptitude update, and then installed gem & knife windows pluggin in this loaction(/opt/chef/embedded/bin/gem install knife-windows), and opened the 5985 port and configured the winrm: 卸载gem,然后进行智能更新,然后在此位置(/ opt / chef / embedded / bin / gem install knife-windows)中安装gem&knife windows插件,并打开5985端口并配置winrm:

  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 -N "WIN-xxxxx"

It seems to work with knife-windows 0.5.10 [tested with windows server 2008R2] 似乎适用于刀式Windows 0.5.10 [已通过Windows Server 2008R2测试]

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)  

I had exactly the same issue with #39 characters on my OSX, see my description of it: Stuck trying to bootstrap Windows server using Chef 我在OSX上遇到#39字符的完全相同的问题,请参阅其描述: 试图使用Chef引导Windows服务器时卡住了

In my case, rvm was the responsible culprit. 就我而言,rvm是负责人。

I managed to resolve this issue by following steps: 1) downloading and running the omnibus installer 我设法通过以下步骤解决了这个问题:1)下载并运行omnibus安装程序

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

2) Disabling rvm by using system ruby: 2)通过使用系统ruby禁用rvm:

rvm use system 

3)installing knife-windows directly in chefs library: 3)直接在厨师库中安装刀窗:

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

This, together with configuring the Windows 2008 server as recommended on https://github.com/opscode/knife-windows (commands available in this gist: https://gist.github.com/jimcroft/3878113 ) did the trick, and I could bootstrap my node :) Agata 这与按照https://github.com/opscode/knife-windows上推荐的配置Windows 2008服务器(此要点中的命令: https : //gist.github.com/jimcroft/3878113 )起到了作用,我可以引导我的节点:) Agata

Looks like the problem may be related to poor interoperability between Ruby 2.x and the winrm gem: 看起来问题可能与Ruby 2.x和winrm gem之间的互操作性差有关:

https://github.com/WinRb/WinRM/pull/73 https://github.com/WinRb/WinRM/pull/73

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM