🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

2278閲覧

AWSでansibleのSSH接続が失敗する。

Yuta_for

総合スコア21

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

4クリップ

投稿2019/09/20 05:13

編集2019/09/20 09:14

AWSで作成したサーバーにAnsibleで動作できるか簡単な通信テストを実施したのですが、SSH通信ができないとエラーがでました。

Linux

1yuta@yuta-PC:~/Desktop/work/ansible-test$ ansible target -i hosts -a 'echo Hello World' 2ip-172-31-40-18 | UNREACHABLE! => { 3 "changed": false, 4 "msg": "Failed to connect to the host via ssh: Connection closed by XXX.XXX.XXX.XXX(Public IP) port 22\r\n", 5 "unreachable": true 6} 7

Inventory fileとansible.cfgは以下の通り単純なものです。

InventoryFile

1[target] 2ip-172-31-40-18 ansible_host=XXX.XXX.XXX.XXX(Public IP)

ansible.cfg

1[default] 2inventory = hosts 3remote_user = ubuntu 4host_key_checking = False 5private_key_file = /home/yuta/.ssh/udemysample.pem 6 7[privilege_escalation] 8become = True

通常通りSSH通信ではEC2サーバーに接続できるのですが、ansibleのSSH通信がうまくいきません。

SSH通信

1yuta@yuta-PC:~$ ssh -i /home/yuta/.ssh/udemysample.pem ubuntu@XXX.XXX.XXX.XXX(Public IP) 2Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-1044-aws x86_64) 3 4 * Documentation: https://help.ubuntu.com 5 * Management: https://landscape.canonical.com 6 * Support: https://ubuntu.com/advantage 7 8 System information as of Fri Sep 20 05:06:46 UTC 2019 9 10 System load: 0.0 Processes: 89 11 Usage of /: 18.6% of 7.69GB Users logged in: 0 12 Memory usage: 20% IP address for eth0: 172.31.40.18 13 Swap usage: 0% 14 15 160 packages can be updated. 170 updates are security updates. 18 19 20*** System restart required *** 21Last login: Fri Sep 20 04:45:35 2019 from XXX.XXX.XXX.XXX 22ubuntu@ip-172-31-40-18:~$

とくにこれ以外に設定等はしていませんが、何か不足分があるのでしょうか?
よろしくお願いいたします。

※追加情報
ツイッターにていくつかアドバイスをいただきましたので試した結果を共有いたします。
①ansible.cfgの項目を修正

ansible.cfg

1[default**s**] →sを追加 2inventory = hosts 3remote_user = ubuntu 4host_key_checking = False 5private_key_file = /home/yuta/.ssh/udemysample.pem 6 7[privilege_escalation] 8become = True

結果

Linux

1yuta@yuta-PC:~/Desktop/work/ansible-test$ ansible target -i hosts -a 'echo Hello World' 2ip-172-31-40-18 | FAILED! => { 3 "changed": false, 4 "module_stderr": "Shared connection to XXX.XXX.XXX.XXX(Public IP) closed.\r\n", 5 "module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n", 6 "msg": "MODULE FAILURE", 7 "rc": 127 8}

②ansible.cfgに以下項目追加

ansible.cfg

1[defaults] 2inventory = hosts 3remote_user = ubuntu 4host_key_checking = False 5private_key_file = /home/yuta/.ssh/udemysample.pem 6 7[privilege_escalation] 8become = True 9 10[ssh_connection] 11ssh_args = -o UserKnownHostsFile=/dev/null

結果

Linux

1yuta@yuta-PC:~/Desktop/work/ansible-test$ ansible target -i hosts -a 'echo Hello World' 2ip-172-31-40-18 | FAILED! => { 3 "changed": false, 4 "module_stderr": "Warning: Permanently added 'XXX.XXX.XXX.XXX(Public IP)' (ECDSA) to the list of known hosts.\r\nConnection to XXX.XXX.XXX.XXX(Public IP) closed.\r\n", 5 "module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n", 6 "msg": "MODULE FAILURE", 7 "rc": 127 8}

③を実行したところモジュールエラーと出ているように見えます。
ここからどうすればよろしいか回答お待ちしております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ansible のバージョンはどうでしょうか。
2.8 以降でしたら問題ないと思いますが、2.7 以前の場合は、 ansible_python_interpreter を指定する必要があります。

投稿2019/09/20 09:26

編集2019/09/20 09:32
SugiTK

総合スコア495

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yuta_for

2019/09/20 09:45

バージョンを確認しましたが、2.5.1でした。 ただansible_python_interpreterはplaybook内に明示的に使用すると思われるですが、今回のように直打ちでansibleを実行した場合どこに設定するのでしょうか?
SugiTK

2019/09/20 09:52 編集

hosts ファイル (inventoryファイル) に設定してください。 ~~~ [target] ip-172-31-40-18 ansible_host=XXX.XXX.XXX.XXX(Public IP) ansible_python_interpreter=/usr/bin/python3 ~~~ 同じ行に書いてください。
Yuta_for

2019/09/20 10:00

ありがとうございます! 実行できました!!
SugiTK

2019/09/20 10:00

よかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問