(script
アクションを使用して)ansibleタスクを実行すると、次のエラーメッセージが表示されます。
stderr: OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 2
Shared connection to 10.0.2.222 closed.
現在、このホストの前に同じホストをターゲットとするタスクがたくさんあり、それらはすべて正常に動作します。クライアントはDebianであるため、クライアントであることがわかります。プロビジョニングされるのはCentosです。
このエラーメッセージを調べてみたところ、私は(私の悔しさに)自分が得たものは、通常、他の問題に関する長いメッセージの最初の部分であることを発見しました。追加してみた
Host 10.0.2.222
ControlMaster no
私の/etc/ssh/ssh_config
この質問 のせいで、絶望的でしたが、うまくいきませんでした。何が問題だったのか本当にわかりません。最も可能性の高い犯人が何であるかを理解するためにSSHがどのように機能するかについて、私は十分に知りません。
これにより、質問で言及された問題が修正されました(ssh接続にはまだ問題がありますが、それは別の質問です)。
デフォルトでは、ansibleはssh_config
オプションをオーバーライドするオプションをいくつか追加します。具体的には、以下を追加します。
-o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/home/devel/.ansible/cp/ansible-ssh-%h-%p-%r"
-vvv
をansible-playbook
と組み合わせて使用することでそれを理解しました。
ssh_args
の[ssh_connection]
セクションで.ansible.cfg
を指定することで、これらのオプションを修正/上書きできます ここ 。また、注目に値するのは、名前から推測できることとは逆に、ssh_args
を変更しても、実際にはすべての引数が変更されるわけではないということです。 Ansibleは-C -tt -v -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o ConnectTimeout=10
およびその他のオプション(例:-o PasswordAuthentication=no -o User=root
)も渡します。これらの一部は単に不変のデフォルトであり、一部はPlaybookで指定した変数に依存します。