実施の背景
- 知り合いがクラウド案件に従事しており、楽しそうに仕事をしていた。
- ネットワークエンジニアとして働くも、自分もクラウドへの興味が沸く。
- AWSについて2022年3月より学習開始。
- 2022年7月にSAA取得。
- 資格勉強で学んだ知識の落とし込み。
- Ansible、CircleCI、Dockerなどを使用してみたかった。
実施概要
作成したコード
https://github.com/masainaba921/create_app_env_auto.git
EC2
HTTP(80ポート)のトラフィックはELB経由のみ許可
VPCエンドポイント経由でS3に静的画像をホスト
RDS
MySQL(3306ポート)のトラフィックは、EC2にアサインしたセキュリティグループのみ許可
使用技術
アプリケーション
Railsを使用したアプリケーション(インフラにコミットしたため最小限構成)
ER図
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公式ドキュメント↓)
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Overview.DBInstance.html
今後の課題
-
別途アーキテクチャ設計などを通して、AWSサービスの理解を深めたい
今回は自動化がメインになってしまった。
実務の提案を想定して、どのインスタンスをなぜ選んだといったところも突き詰めていきたい。 -
エラーメッセージは、しっかり読み込もう
多くのエラーに悩まされた。
振り返るとエラーメッセージの読み込みが浅く、解決に時間を要したことが多くあった。