2017-03-08 14 views
0

を閉じましたs1が閉じた。部分:共有接続は

s1 | SUCCESS | rc=0 >> 
test 

なぜですか?

P.S.上記は問題を再現する簡単な方法です。私が直面しているのは、プレイブックを実行するときに、この余分な行が途中で取得されるということです。

UPD明らかにsshから来ている行。そして、私は-vvvvrawコマンドを実行すると、私が手:

Using /etc/ansible/ansible.cfg as config file 
Loading callback plugin minimal of type stdout, v2.0 from /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc 
<s1> ESTABLISH SSH CONNECTION FOR USER: root 
<s1> SSH: EXEC sshpass -d13 ssh -vvv -C -o ControlMaster=auto 
    -o ControlPersist=60s -o User=root -o ConnectTimeout=10 
    -o ControlPath=/home/yuri/.ansible/cp/ansible-ssh-%h-%p-%r -tt s1 
    'echo test' 
s1 | SUCCESS | rc=0 >> 
test 
OpenSSH_7.4p1, OpenSSL 1.0.2k 26 Jan 2017 
debug1: Reading configuration data /home/yuri/.ssh/config 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: auto-mux: Trying existing master 
debug1: Control socket "/home/yuri/.ansible/cp/ansible-ssh-s1-22-root" does not exist 
<...a lot of output from ssh...> 

しかしcommandと、それだけだ。すべてのssh出力がなくなっている

Using /etc/ansible/ansible.cfg as config file 
Loading callback plugin minimal of type stdout, v2.0 from 
    /usr/lib/python2.7/site-packages/ansible/plugins/callback/__init__.pyc 
Using module file 
    /usr/lib/python2.7/site-packages/ansible/modules/core/commands/command.py 
<s1> ESTABLISH SSH CONNECTION FOR USER: root 
<s1> SSH: EXEC sshpass -d13 ssh -vvv -C -o ControlMaster=auto 
    -o ControlPersist=60s -o User=root -o ConnectTimeout=10 
    -o ControlPath=/home/yuri/.ansible/cp/ansible-ssh-%h-%p-%r s1 
    '/bin/sh -c '"'"'(
    umask 77 
    && mkdir -p "` echo ~/.ansible/tmp/ansible-tmp-1488989540.6-73006073289737 `" 
    && echo ansible-tmp-1488989540.6-73006073289737="` echo ~/.ansible/tmp/ansible-tmp-1488989540.6-73006073289737 `" 
) && sleep 0'"'"'' 
<s1> PUT /tmp/tmpes82wL TO 
    /root/.ansible/tmp/ansible-tmp-1488989540.6-73006073289737/command.py 
<s1> SSH: EXEC sshpass -d13 sftp -o BatchMode=no -b - -vvv -C 
    -o ControlMaster=auto -o ControlPersist=60s -o User=root 
    -o ConnectTimeout=10 
    -o ControlPath=/home/yuri/.ansible/cp/ansible-ssh-%h-%p-%r '[s1]' 
<s1> ESTABLISH SSH CONNECTION FOR USER: root 
<s1> SSH: EXEC sshpass -d13 ssh -vvv -C -o ControlMaster=auto 
    -o ControlPersist=60s -o User=root -o ConnectTimeout=10 
    -o ControlPath=/home/yuri/.ansible/cp/ansible-ssh-%h-%p-%r s1 
    '/bin/sh -c '"'"' 
    chmod u+x /root/.ansible/tmp/ansible-tmp-1488989540.6-73006073289737/ /root/.ansible/tmp/ansible-tmp-1488989540.6-73006073289737/command.py 
    && sleep 0'"'"'' 
<s1> ESTABLISH SSH CONNECTION FOR USER: root 
<s1> SSH: EXEC sshpass -d13 ssh -vvv -C -o ControlMaster=auto 
    -o ControlPersist=60s -o User=root -o ConnectTimeout=10 
    -o ControlPath=/home/yuri/.ansible/cp/ansible-ssh-%h-%p-%r -tt s1 
    '/bin/sh -c '"'"' 
    /usr/bin/python /root/.ansible/tmp/ansible-tmp-1488989540.6-73006073289737/command.py; 
    rm -rf "/root/.ansible/tmp/ansible-tmp-1488989540.6-73006073289737/" > /dev/null 2>&1 
    && sleep 0'"'"'' 
s1 | SUCCESS | rc=0 >> 
test 

+0

[サーバー障害](http:// serverfault。 –

答えて

1

s1への共有接続が閉じられました。

このメッセージはsshクライアントからのエラーメッセージです。

raw: echo testでAnsibleはssh <many parameters> s1 'echo test'を実行して、あなたはのsshコマンドから標準出力/標準エラー出力を取得します。この方法で共有接続に関するメッセージがタスク結果にポップアップ表示されます。 command: echo test Ansibleコピーのpythonラッパーで

command.py)と順番にecho testをスポーンこのラッパーを実行しから標準出力/標準エラーをキャプチャ commmandエコー。その後command.py /stderr/rcキーでechoの結果をJSONオブジェクトとして出力します。また、sshエラーメッセージは引き続き発生しますが、AnsibleがJSONオブジェクトキーのタスク結果を取得し、sshプレーンのstdout/stderr/rcからタスク結果を取得するのではないので、(それはAnipalによってフィルタリングされています)表示されません。

すべてのssh出力はどこにありますか?

これは、raw /コマンドの処理と同じ違いが原因で発生します。詳細なssh出力を表示するには、環境変数ANSIBLE_DEBUG=1を設定します。

このエラーメッセージを非表示にするには、ansible_ssh_extra_args='-o LogLevel=QUIET'インベントリ変数を使用できます。しかし、これが他の予期しない結果をもたらすかどうかはわかりません。

+0

'ansible_ssh_extra_args = ' - o LogLevel = QUIET'' sshからの重要なメッセージを見逃すかもしれません。 「タスクの結果はsshセッション内のpython-wrapperによって捕捉されるので」、結果はリモートホスト上で実行されている '〜/ .ansible/tmp /.../command.py'ではなく、それがあなたが意図したものであれば)、コントロールノード上でローカルに実行されている部分によって。私が間違っているなら私を訂正してください。 –

+0

「私はいくつかの重要なメッセージを見逃すかもしれない」、はい可能性がある。 'command.py'は' echo'の出力をキャプチャして 'stdout' /' stderr'/'rc'キーを持つJSONオブジェクトの形式でコントロールノードに送信します。そのためAnabilitiesはこのオブジェクトに依存しますraw ssh出力の代わりに。 'ANSIBLE_DEBUG = 1'でログをチェックすると、何が起こっているのかを明確に把握できます。 –

+0

私の推測が確認されました。 'raw'モジュールでは、' ansible'は単に[1つのコマンド](https://github.com/ansible/ansible/blob/v2.1.5.0-0.2.rc2/lib/ansible/plugins/action/raw)を実行します。 py#L41)をstdoutとしてstdoutとし、stderrと同様にstdoutとします。 –

関連する問題