2017-04-05 23 views
0

Ansibleと奇妙なエラーが発生します。まず第一の役割はうまくいきますが、Ansibleがsecondを実行しようとすると、sshエラーのため失敗しました。再生中にSSHエラーが発生する可能性があります。

環境

  • OS:CentOSの7
  • Ansibleバージョン:2.2.1.0
  • Pythonのバージョン:2.7.5
  • OpenSSHバージョン:OpenSSH_6.6.1p1、OpenSSLの1.0。 1e-fips 11 Feb 2013

実行可能なコマンドD

ansible-playbook -vvvv -i inventory/dev playbook_update_system.yml --limit "db[0]" 

脚本

- name: "HUB Playbook | Updating system packages on {{ ansible_hostname }}" 
    hosts: release_first_half 
    roles: 
    - upgrade_system_package 
    - reboot_server 

役割:upgrade_system_package

- name: "upgrading CentOS system packages on {{ ansible_hostname }}" 
    shell: sudo puppet apply -e 'exec{"upgrade-package":command => "/usr/bin/yum clean all; /usr/bin/yum -y update;"}' 
    when: ansible_distribution == 'CentOS' and 'cassandra' not in group_names 

役割:reboot_server

- name: "reboot CentOS [{{ ansible_hostname }}] server" 
    shell: sudo puppet apply -e 'exec{"reboot-os":command => "/usr/sbin/reboot"}' 
    when: ansible_distribution == 'CentOS' and 'cassandra' not in group_names 

現在の行動: "DB1" ノードへ

  1. 接続と役割 "アップグレードシステムパッケージ" を実行=> OK
  2. は= "DB1" に接続して、役割 "reboot_server" を実行してみてください> sshのために失敗しました。 Ansibleによって返さ

エラーメッセージ:

致命的な:[DB1]:UNREACHABLE! OpenSSH_6.6.1、OpenSSL 1.0.1e-fips 2013年2月11日\ r \ ndebug1:設定データ/ USR/newtprodを読み込んでいます。/ssh/config \ r \ ndebug1:設定データの読み込み/ etc/ssh/ssh_config \ r \ ndebug1:/ etc/ssh/ssh_config行56:* \ r \ ndebug1:auto-muxのオプションの適用:既存のmaster \ mux_client_request_alias:入力する\ ndebug2:fd 3設定O_NONBLOCK \ r \ ndebug2:mux_client_hello_exchange:マスターバージョン4 \ r \ ndebug3:mux_client_forwards:転送要求:0ローカル、0リモート\ r \ ndebug3:mux_client_request_session:入力\ r \ ndebug3:mux_client_request_alive: \ r \ ndebug3:mux_client_request_alive:done pid = 64994 \ r \ ndebug3:mux_client_request_session:セッション要求が送信されました\ r \ ndebug1:mux_client_request_session:マスターセッションID:2 \ r \ ndebug3:mux_client_read_packet:読み込みヘッダーに失敗しました:壊れたパイプ\ r \ ndebug2:コントロールマスタが予期せず終了しました\ r \ n共有されたdb1との接続が切断されました。\ r \ n " 「到達不能」:真 }

前回の役割は、このノード上で正常に実行されているので、私は理解していません。また、同じインベントリファイルを使用していて、うまく動作する沢山のプレイブックがあります。私は別のノードでも同じ結果を試しました。

答えて

0

シンプルでかなりよく知られている問題です。シャットダウンプロセスによってSSHデーモンが終了し、現在のSSHセッションが中断されます(「broken pipe」エラーが発生します)。サーバーは正常に再起動しますが、Aniableのフローは中断されます。

shellコマンドに遅延を追加し、asyncオプションを指定して実行すると、AnabilitiesのSSHセッションが終了する前に終了する必要があります。

shell: sleep 5; sudo puppet apply -e 'exec{"reboot-os":command => "/usr/sbin/reboot"}' 
async: 0 
poll: 0 

あなたは対話型のSSHセッションであり、あなたは右、突然殺されるSSHセッションを気にしないrebootコマンドを入力すると?後でexitとタイプするとは思わないでしょう。

関連する問題