私はansibleが初めてで、それを実装しようとしています。インターネットに存在するすべての可能な方法とそれに関連するすべての質問を試しましたが、それでもエラーを解決することはできません。私を助けてください。
Macbookにansibleプレイブックをインストールしました。 IPが10.4.1.141でホストIPが10.4.1.140であるVMを作成しました
私はVM ssh経由でホストを使用して、次のコマンドで接続しました:
ssh [email protected]
シェルにアクセスできました。これは、私のsshがうまく機能していることを意味します。
今、私はAnsibleのために次のコマンドを試しました:
ansible all -m ping
/etc/ansible/Host
のコンテンツは10.4.1.141
です
次に、次のエラーが表示されます。
10.4.1.141 | FAILED => SSHエラー:許可が拒否されました(公開鍵、パスワード)。
10.4.1.141:22への接続中に-vvvvを使用してコマンドを再実行すると、問題の診断に役立つSSHデバッグ出力が出力されることがあります。
次に、ホストマシンの.ssh/
フォルダーにconfig
ファイルを作成しようとしましたが、エラーは同じままです。
config
ファイルの内容は次のとおりです。
IdentityFile ~/.ssh/id_rsa
これは私の秘密鍵へのパスです。
次に、同じコマンドansible all -m ping
を実行しましたが、再び同じエラーが発生しました。
別のコマンドを試したとき
ansible all -m ping -u user --ask-pass
次に、SSHパスワードを要求し、それを与えました(パスワードが正しいことを確認してください)が、このエラーが発生しました:
10.4.1.141 | FAILED => FAILED:認証に失敗しました。
これは-vvvv
を使用したログです:
<10.4.1.141> ESTABLISH CONNECTION FOR USER: rajatg
<10.4.1.141> REMOTE_MODULE ping
<10.4.1.141> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/rajatg/.ansible/cp/ansible-ssh-%h-%p-%r" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 10.4.1.141 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007 && echo $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007'
10.4.1.141 | FAILED => SSH Error: Permission denied (publickey,password).
while connecting to 10.4.1.141:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
私はまだ問題が何であるかを理解することができません。私のすべての研究を行った後、ここでそれを尋ねることは私の最後の選択です。 これは私が参照したリンクです
問題を修正しました。問題は私の/etc/ansible/hosts
にありました。
/etc/ansible/hosts
で記述されたコンテンツは10.4.1.141
でした。しかし、それを[email protected]
に変更すると、問題は修正されます。
皆様のサポートに感謝し、コメントの助けにより問題についてより明確に説明してくれました。
ssh [email protected]
でログインした場合:
オプション1
次に、etc\ansible
内のhostsファイルに次のものがあることを確認します。
[server01]
10.4.1.141
etc\ansible
内で実行:ansible all -m ping -u user --ask-pass
オプション2
Sshパスワードを入力せずにログインする場合は、etc\ansible
内のhostsファイルに以下を追加します。
[server01]
10.4.1.141 ansible_ssh_pass=xxx ansible_ssh_user=user
etc\ansible
内で実行:ansible all -m ping
私にとっては、両方の方法で機能しました。
ほとんどの問題は、ホストでUbuntuマシンを接続しているときに発生します。解決策Ansibleは、Ubuntuにデフォルトのrootユーザーがないため、どのユーザーが接続するかを要求しました。
hostsファイル用
[テストWebサーバー]
10.192.168.10 ansible_ssh_pass = foo ansible_ssh_user = foo
たとえば、sudoでansibleを実行する場合
Sudo ansible -m ping all
rootの公開鍵は、非rootユーザーからの公開鍵だけでなく、到達したいサーバーにも存在する必要があることに注意してください。それ以外の場合は、上記のエラーメッセージも表示されます。
この問題も修正しました。
私の問題は、ホストファイル/etc/ansible/hosts
にもありました。
ホストファイルを172.28.2.101
からname-of-server-in-ssh-config
に変更しました
HostsファイルにIPがありました。名前のSSH設定がすでに設定されているため、ホストの前で変数またはユーザー名を使用する必要はありません。
[name-stg-web]
server-name-stg-web[01:02]
/ etc/hostsファイルにユーザー名を記載することでも問題を解決できます。
#Sudo vim /etc/hosts
[test-server]
ip_address ansible_user="remote pc's username"
残念ながら、上記のソリューションはうまくいきませんでした(DevOpsの素人です!)。しかし、以下のものは私のために働いた。
インベントリファイルを次のように変更します。
[webserver] 10.4.1.141 ansible_user=ubuntu
ansible webserver --private-key pem_file.pem -m ping
-vvvvを使用してコマンドを押すと、さらにデバッグできるようになりました。
問題はインベントリファイルにあります。
[ウェブサーバー] 192。###。###。### ansible_ssh_user = user ansible_ssh_pass = pass
これがお役に立てば幸いです!