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

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


概要

今回は、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モジュールで無理やり解決するのもよいです。しかし、あくまで最終手段として利用するものであり、冪統制の担保が最優先です。

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)