Help us understand the problem. What is going on with this article?

Ansible初心者がEC2インスタンスを作成する際にはまるポイント

More than 1 year has passed since last update.

概要

今回は、Ansible及びDockerを用いて、AWSのEC2にインスタンスを作成し、アプリケーションを起動させるまでの一連の流れを体験しました。その中で、エラーが頻発してなかなか抜け出せないポイントがいくつかあったので、自分用の備忘録も兼ねてまとめたいと思います。

環境

  • OS: Windows10 pro 1803
  • Visual Studio Code: 1.28.2
  • Docker: 18.06.1-ce
  • ansible: 2.5.5

AWSと繋がらない

  • Dockerでコンテナを立てて、AWSに接続しようとすると、以下のようなエラーが出ることがあります。
botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL: "https://ec2.ap-northeast-1.amazonaws.com/"

原因

少し調べても、エラーの原因は特定できず。現在、Docker for Windowsの動作が不安定であるという記事が散見されるので、今後のアップデートに期待です。

解決策

  • このエラーは、Dockerを再起動することで回避することが出来ます。

AWSのCLI設定が行えていない

  • AWSに接続してインスタンスを作成する際に、AWS CLIの設定が正しくないために以下のエラー文が出て処理が中断されることがあります。
 ClientError: An error occurred (AuthFailure) when calling the DescribeKeyPairs operation: Authorization header or parameters are not formatted correctly.

原因

このエラーは、利用者のセキュリティ認証情報やデフォルトリージョンなどの設定がされてないまま、インスタンスの作成を実行したときに発生します。

解決策

Dockerコンテナ作成後に、aws configureコマンドを用いて設定を行うか、ワークスペース内に存在する「.aws」フォルダ内に「credentials」と「config」ファイルを作成して、定義することで回避できます。

実行権限がない

Playbookを実行する際に、root権限で実行していないことから、以下のようなエラー文がでることがあります。

"You need to be root to perform this command.\n"

原因

このエラーは、単純に現在Playbookをたたいているユーザーが実行権限を持っていないために、taskを実行できないという状態です

解決策

現在実行中のユーザーに権限を付与するか、Ansibleのbecomeモジュールを用いて、ルートユーザーとして実行することで、回避できます。

ssh接続が切断されて、Playbookの処理が中断される

  • アプリケーションのインストール処理などのtaskが終了して、次のtaskに移る際に、以下のようなエラー文がでて処理が終了することがあります。
"data could not be sent to the remote host. Make sure this host can be reached over ssh"

原因

このエラーは、長い処理を行っている際に、処理の終了を待たずに次の処理に進んでしまう場合や、ssh接続の切断などが起こった後に発生します

解決策

ansibleのasyncモジュールを用いて、非同期処理を行うことで回避できます。

まとめ

  • エラー文の内容は一見難しいと思えるが、そのまま検索にかければ過去に同じような質問をした人のページに行き着いたりするので、とりあえず検索してみるのがベストかもしれません。
  • 基本的に、解決策が見つかっているなら、その策を実現できそうなモジュールがないかを探ることが重要。求めているものがピンポイントでモジュールとして用意されてたりします。
  • それでも難しいならcommand、shellモジュールで無理やり解決するのもよいです。しかし、あくまで最終手段として利用するものであり、冪統制の担保が最優先です。
grooveyyyyy
秋からインフラ初心者です
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした