3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWSにてwebアプリケーション環境をCircleCI Ansibleで自動デプロイしてみた

Last updated at Posted at 2022-08-23

実施の背景

  • 知り合いがクラウド案件に従事しており、楽しそうに仕事をしていた。
  • ネットワークエンジニアとして働くも、自分もクラウドへの興味が沸く。
  • AWSについて2022年3月より学習開始。
  • 2022年7月にSAA取得。
  • 資格勉強で学んだ知識の落とし込み。
  • Ansible、CircleCI、Dockerなどを使用してみたかった。

実施概要

image.png

作成したコード
https://github.com/masainaba921/create_app_env_auto.git

EC2

HTTP(80ポート)のトラフィックはELB経由のみ許可
VPCエンドポイント経由でS3に静的画像をホスト

RDS

MySQL(3306ポート)のトラフィックは、EC2にアサインしたセキュリティグループのみ許可

使用技術

アプリケーション

Railsを使用したアプリケーション(インフラにコミットしたため最小限構成)
ER図
image.png

CircleCI

AWS CLI + BashスクリプトでCloudFormationを実行
orbsを用いたAnsibleの実行
Dockerを用いたServerspecの実行

CloudFormation

VPC、EC2、ELB、RDS、S3、VPCエンドポイント、IAM

Ansible

EC2へアプリケーション用設定を投入
MySQL、Ruby、Nginx、Unicorn

Serverspec

ミドルウェア起動確認、アプリケーションレスポンス確認

作成中に詰まったところ

アプリケーションのClone

  • 実現したかったこと
    GitHubのプライベートリポジトリからCloneしたかった(今回は断念)

  • 断念した理由
    AnsibleのコードにGitHubを記載する必要がある
     セキュリティの観点から、パブリックからクローンした方が安全と判断

  • プライベートリポジトリからのClone方法については、下記に記載
    https://qiita.com/masainaba921/items/e949c0eb9b39c9f19fe1

yum install できなくなった問題

  • 原因
    EC2が所属しているサブネットのルートテーブルに、yumで参照するリポジトリをVPCエンドポイントを通過する設定が加わる
    VPCエンドポイントのポリシーで、自作S3のみを許可していることに気が付いた。

  • 対策
    参照しているAWSリポジトリを確認

sudo yum repolist enabled -v

 上記の確認結果をVPCエンドポイントのポリシーにアサイン

RDSのエンドポイントの事前把握

今後の課題

  • 別途アーキテクチャ設計などを通して、AWSサービスの理解を深めたい
     今回は自動化がメインになってしまった。
     実務の提案を想定して、どのインスタンスをなぜ選んだといったところも突き詰めていきたい。

  • エラーメッセージは、しっかり読み込もう
     多くのエラーに悩まされた。
     振り返るとエラーメッセージの読み込みが浅く、解決に時間を要したことが多くあった。

3
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?