【问题标题】:Chef / Vagrant SSH bootstrap errorChef / Vagrant SSH 引导错误
【发布时间】:2017-03-09 21:19:46
【问题描述】:

我正在尝试通过 Chef 引导节点 Bento/centos 7.2,但遇到了 SSH 错误。

我已经安装了 virtualbox 和 vagrant。使用 Chef DK 内置的 ssh 客户端,我可以毫无问题地 ssh 进入 vm。我使用托管厨师作为我的服务器。

在我的 Win 10 工作站上,我发出以下命令并收到错误消息。

PS C:\Users\Topher\Documents\Learn Chef\.chef> knife bootstrap 10.0.2.15 --ssh-user vagrant --sudo --ssh-identity-file C:\Users\
Topher\.vagrant\machines\default\virtualbox\private_key --node-name localhost --run-list 'recipe[learn_chef_httpd]'
Node localhost exists, overwrite it? (Y/N) Y
Client localhost exists, overwrite it? (Y/N) Y
Creating new client for localhost
Creating new node for localhost
Connecting to 10.0.2.15
ERROR: Net::SSH::ConnectionTimeout: Net::SSH::ConnectionTimeout 

任何想法是什么导致了 ConnectionTimeout?

【问题讨论】:

  • 不用刀可以ssh到节点吗?例如vagrant --debug ssh?
  • 我觉得我们在正确的轨道上......我跑了...... PS C:\Users\Topher> vagrant --debug ssh ...这将大量输出转储到外壳。输出多次表明这一点... INFO interface: error: ssh executable not found in any directory in the %PATH% variable.是否安装了 SSH 客户端?尝试安装 Cygwin、MinGW 或 Git,它们都包含 SSH 客户端。 // INFO 接口: Machine: error-exit ["Vagrant::Errors::SSHUnavailableWindows" // 我可以通过 chef dk 客户端以及 git 客户端通过 ssh 连接。

标签: ssh chef-infra knife


【解决方案1】:

在我的例子中,我尝试使用 Knife 引导远程服务器(不是本地 Vagrant VM),如下所示:

knife bootstrap <FQDN of node being provisioned> -x <username> -P <password> --sudo --use-sudo-password <password> -N <name for node being provisioned>

在我的情况下,问题是我的 Chef 服务器作为本地 VM 运行,并且它使用 VirtualBox 专用网络,因此我使用刀配置的节点无法访问。通过将我的 Chef 服务器的 Vagrant 配置更改为公共桥接网络,我能够在我的刀引导命令期间通过“错误:Net::SSH::ConnectionTimeout:Net::SSH::ConnectionTimeout”。这是我的 Vagrant 文件更改的样子:

Vagrant.configure(2) do |config|
  config.vm.define 'chef-server' do |cs|
    cs.vm.box = 'bento/ubuntu-14.04'
    cs.vm.box_version = '2.2.9'
    cs.vm.hostname = 'chef-server.test'
    #cs.vm.network 'private_network', ip: 'xxx.16.9.5'
    cs.vm.network "public_network", 
      bridge: "Intel(R) Ethernet Connection I217-LM", 
      ip: ENV.fetch("IPS", "xxx.16.9.5"), netmask: ENV.fetch("NETMASKS", "255.255.0.0")
    cs.vm.provision 'shell', inline: CHEF_SERVER_SCRIPT.dup
    set_hostname(cs)

    cs.vm.provider 'virtualbox' do |v|
      v.memory = 2048
      v.cpus = 2
    end
  end

注意注释掉的私有网络和紧随其后的未注释的公共网络。

knife 的一个有用的命令行参数是 -VV 用于详细/调试输出。试试看它是否能让您更深入地了解您的问题。

我注意到的另一件事是,在我的刀引导命令期间,有时我会出现“错误:Net::SSH::ConnectionTimeout:Net::SSH::ConnectionTimeout”,但重试时会成功。

如果我的答案解决了你的问题,请标记为正确答案。

【讨论】: