2015-06-24 48 views
1

我在我的Windows機器上使用廚師零ssh到紅帽子Linux機器並執行一個配方里面的命令。當我運行下面的代碼時,它會嘗試SSH 120秒並超時。我不知道爲什麼會發生這種情況。任何想法爲什麼發生這種情況?廚師配置ssh超時與廚師零使用

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 [email protected] 

================================================================================ 
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 

回答

0

我仍然大廚戰鬥置備自己,所以這可能沒有幫助,因爲我想。一件事是,每一項都是一個鍵/值對,所以要以不同方式聲明變量(見下文):

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

沒有幫助。我使用了machine_execute資源。我不得不僞造節點文件,使它看起來像我試圖SSH進入的機器是廚師服務器上的節點的一部分。我創建了一個假節點文件並添加了IP和pem文件位置。我的服務器看到引導到它的節點文件並執行該命令(也清理我創建的假節點文件)。不是最優雅的解決方案,但它適用於我正在嘗試做的事情。仍然不回答配置SSH問題 –

0

阿米爾,

請問:C /用戶/用戶/ .chef/provisioning/ssh目錄是否存在於您的工作站上?如果不嘗試創建它,並確保權限是正確的,然後嘗試

+0

我確實有該文件夾。同樣的錯誤 –

+0

我已經使用machine_execute資源來做我想做的事情,但從配置中看到這種行爲仍然令人困惑 –

0

嘗試使用下面的代碼片段,注意額外的選項,這將有助於您調試問題。

1)DEBUG級別將允許看到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 => '' 
     } 
    },