web-dev-qa-db-ja.com

ansible SSH接続が失敗する

複数のサーバーでansibleロールを実行しようとしていますが、エラーが発生します:

致命的:[192.168.0.10]:到達不能! => {"changed":false、 "msg": "sshを介したホストへの接続に失敗しました。"、 "unreachable":true}

/ etc/ansible/hostsファイルは次のようになります。

192.168.0.10 ansible_Sudo_pass='passphrase' ansible_ssh_user=user
192.168.0.11 ansible_Sudo_pass='passphrase' ansible_ssh_user=user
192.168.0.12 ansible_Sudo_pass='passphrase' ansible_ssh_user=user

私は何が起こっているのか分かりません-すべてがうまく見えます-私はSSH経由でログインできますが、ansible pingは同じエラーを返します。

詳細な実行のログ:

<192.168.0.10>ユーザーのSSH接続の確立:ユーザー<192.168.0.10> SSH:EXEC ssh -C -vvv -o ControlMaster = auto -o ControlPersist = 60s -o KbdInteractiveAuthentication = no -o PreferredAuthentications = gssapi-with-mic、 gssapi-keyex、hostbased、publickey -o PasswordAuthentication = no -o User = user -o ConnectTimeout = 10 -o ControlPath =/root/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.0.10 '/bin/sh -c '"'" '(umask 22 && mkdir -p "echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829" && echo "echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829")' "'"' '

どうにかして私を助けてもらえますか?ローカルモードでansibleを使用する必要がある場合(-c local)、それは役に立ちません。

Ansible_Sudo_passとansible_ssh_userを削除しようとしましたが、助けにはなりませんでした。

27
Thomas

ansible_ssh_passまたはsshキーも変更する必要があります。たとえば、インベントリファイルでこれを使用しています。

192.168.33.100 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant

その後、リモートホストに接続できます。

ansible all -i tests -m ping

次の結果:

192.168.33.100 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

お役に立てば幸いです。

41
Arbab Nazar
mkdir /etc/ansible
cat > hosts
default ansible_ssh_Host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key

プレイブックディレクトリに移動し、ansible all -m pingを実行します

6
SJP

Hostファイルを次のように変更してみてください。

192.168.0.10
192.168.0.11
192.168.0.12
3
Nikola

私はこの問題を抱えていましたが、それは他の答えで文書化されたものとは異なる理由のためでした。デプロイしようとしていたホストは、ジャンプボックスを通過することによってのみ利用できました。元々、AnsibleがSSH構成ファイルを認識していなかったからだと思っていましたが、認識されていました。私にとっての解決策は、SSH構成ファイルに存在するユーザーがAnsibleプレイブックのユーザーと一致することを確認することでした。これで問題は解決しました。

2
entpnerd

$ansible -m ping all -vvv

UbuntuまたはCentOSにansibleをインストールした後。あなたは以下のメッセージを持つことができます。パニックしないでください。ユーザー[/tmp]のファイル/home/user_name/.ansible/tmp/へのアクセス権が必要です。 「Authentication or permission failure」。

この事前準備は問題を解決します。

[Your_server ~]$ ansible -m ping all
rusub-bm-gt | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
Your_server | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
1

Vmのリロード中にansible_ssh_portが変更されました。

==> default:VMを起動しています...

==> default:マシンが起動するのを待っています。これには数分かかる場合があります...

default: SSH address: 127.0.0.1:2222

default: SSH username: vagrant

default: SSH auth method: private key

そのため、次のようにインベントリ/ホストファイルを更新する必要がありました。

default ansible_ssh_Host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='centos' ansible_ssh_private_key_file=<key path>
0
Geetha