【问题标题】:knife bootstrap windows winrm from Mac OS X workstation fails来自 Mac OS X 工作站的刀引导 windows winrm 失败
【发布时间】:2013-06-02 18:15:39
【问题描述】:

从我的 Mac OS X 工作站运行命令 knife bootstrap windows winrm ec2box.amazonaws.com -r 'role[web]' -x Administrator -P 'mypassword' 会产生以下输出。从 Windows 工作站运行它,该命令成功运行。为了让我的 Mac OS X 工作站正确地通过 WinRM 进行通信,我需要采取额外的步骤吗?

我在 Amazon 的 Windows Server 2012 AMI 上使用它。它在我的终端上到处打印#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 (

【问题讨论】:

  • gem list |grep knife 的输出是什么?什么版本的 Windows?您使用的是 Amazon 的 AMI,还是您自己的?另外,它是否显示'''到处都是你的终端,还是 Stack Overflow 的神器?
  • @henry - 更新了我的问题。我在亚马逊的 Windows Server 2012 AMI 上使用它。它在我的终端上到处都打印了 #39,而不是 Stack Overflow 的产物。

标签: windows chef-infra knife


【解决方案1】:

看起来问题可能与 Ruby 2.x 和 winrm gem 之间较差的互操作性有关:

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

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。我所做的是:

    卸载gem然后进行aptitude更新,然后在这个位置(/opt/chef/embedded/bin/gem installknife-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"}
    

    然后引导:

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

    【讨论】:

      【解决方案3】:

      我的 OSX 上的 #39 个字符也有同样的问题,请参阅我的描述:Stuck trying to bootstrap Windows server using Chef

      就我而言,rvm 是罪魁祸首。

      我设法通过以下步骤解决了这个问题: 1) 下载并运行综合安装程序

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

      2) 使用系统 ruby​​ 禁用 rvm:

      rvm use system 
      

      3)直接在厨师库中安装刀窗:

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

      这一点,以及按照https://github.com/opscode/knife-windows 的建议配置 Windows 2008 服务器 (此要点中可用的命令:https://gist.github.com/jimcroft/3878113) 成功了,我可以引导我的节点:) 阿加塔

      【讨论】:

        【解决方案4】:

        它似乎适用于刀窗 0.5.10 [用 windows server 2008R2 测试]

        安装它:

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

        检查您的宝石:

        gem list|grep knife-windows
        

        它应该显示:

        knife-windows (0.5.10)  
        

        【讨论】:

        • @themathmagician:你用 chef 安装了哪个版本的 ruby​​?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 2017-10-06
        • 1970-01-01
        • 2013-11-28
        相关资源
        最近更新 更多