【问题标题】:Chef provisioning ssh times out when used with chef zero与厨师零一起使用时厨师配置 ssh 超时
【发布时间】:2015-06-24 04:36:45
【问题描述】:

我在我的 Windows 机器上使用 Chef zero 将 ssh 连接到红帽 linux 机器并执行配方中的命令。当我运行下面的代码时,它会尝试 SSH 120 秒并超时。我不确定为什么会这样。知道为什么会这样吗?

require 'chef/provisioning'
require 'chef/provisioning/ssh_driver'
  with_driver 'ssh'
  machine "ssh" do

    attribute "short_dns", new_resource.short_dns
    attribute "long_dns", load_balancer_name
    recipe "mycookbook::add_short_dns"
    machine_options :transport_options => {
      'is_windows' => false,
      'ip_address' => '10.16.99.124',
      'username' => 'myusername',
      'ssh_options' => {
      'password' => 'mypassword'
      }
    }
    converge true

  end

这是错误

- been waiting 110/120 -- sleeping 10 seconds for ssh (10.16.99.124 on ssh:C:/Users/user/.chef/provisioning/ssh) to be connectable ...[2015-06-23T14:54:33-05:00] INFO: Executing sudo pwd on myusername@10.16.99.124

================================================================================
Error executing action `converge` on resource 'machine[ssh]'
================================================================================

RuntimeError
------------
Machine ssh (10.16.99.124 on ssh:C:/Users/user/.chef/provisioning/ssh) did not become ready within 120 seconds

【问题讨论】:

    标签: ssh chef-infra provisioning


    【解决方案1】:

    我自己仍在与 Chef Provisioning 斗争,所以这可能没有我想要的那么有用。有一件事是它们都是一个键/值对,所以想要以不同的方式声明你的变量(见下文):

    require 'chef/provisioning/ssh_driver'
    with_driver 'ssh'
      with_machine_options :transport_options => {
        :username => 'centos',
        :ssh_options => {
          :password => 'password'
        }
      }
    

    【讨论】:

    • 没有帮助。我改用了 machine_execute 资源。我不得不伪造节点文件,使它看起来像我试图通过 SSH 连接的机器是厨师服务器上节点的一部分。我创建了一个假节点文件并添加了 IP 和 pem 文件位置。我的服务器看到引导到它的节点文件并执行了命令(也清理了我创建的假节点文件)。不是最优雅的解决方案,但它适用于我想要做的事情。仍然没有解决配置 SSH 的问题
    【解决方案2】:

    阿米尔,

    您的工作站上是否存在 :C/Users/user/.chef/provisioning/ssh 目录?如果没有尝试创建它并确保权限正确然后尝试

    【讨论】:

    • 我已经使用 machine_execute 资源来做我想做的事情,但是从配置中看到这种行为仍然令人困惑
    【解决方案3】:

    尝试使用下面的 sn-p,注意有助于调试问题的额外选项。

    1) 调试级别将允许查看 SSH 通信。

    2) 如果不覆盖前缀,默认使用SUDO

    3) 有时当您重新创建远程服务器时,您的“known_hosts”文件会记住它,并且下次您在重新创建后尝试通过 SSH 连接到服务器时,您会收到一条消息“警告:远程主机标识已更改”。事实上 SSH 会话挂起,但您在客户端看不到它。所以最好忽略它。

        :transport_options => {
          :is_windows => false,
          :username => 'YOURUSER',
          :ssh_options => {
            :password => 'YOURPASSWRD',
            :verbose => Logger::DEBUG,
            :user_known_hosts_file => '/dev/null'
          },
          :options => {
            :prefix => ''
          }
        },
    

    【讨论】:

      最近更新 更多