AWSにRails + Nginxな環境をTerraformで構築してみようと思います。
はじめに
本連載で一つずつインフラを構築していきます。
ドメインのhttps化したり、ECSを使用したコンテナオーケストレーションを用いてアプリケーションをデプロイします。
この記事では、インフラ構築の事前準備をします。
環境は以下です。
OS | Cataline 10.15.6 |
Terraform | 0.14.4 |
terraformが初めて方はこちらで簡単に説明していますので見てみてください。
→ Terraform入門 AWSにEC2を作成してみよう
インストール方法は → Terraform Macにインストールする方法
連載一覧
- terraform AWS環境構築 事前準備 ←ここ
- terraform AWS環境構築 第1回 -ネットワーク環境構築編-
- terraform AWS環境構築 第2回 -ドメインhttps化・ACM(SSL)証明書編-
- terraform AWS環境構築 第3回 -ロードバランサー構築編-
- terraform AWS環境構築 第4回 -ECS Fargate(nginxのみ)編-
- terraform AWS環境構築 第5回 -RDS編-
- terraform AWS環境構築 第6回 -Docker/ECR編-
- terraform AWS環境構築 第7回 -ECS Fargate(rails + nginx)編-
やること
以下の実装を行います。
- IAMユーザの作成
- ドメイン設定
- tfstate用のbackend作成
事前準備
今回使用する作業フォルダを作成しておきましょう。
$ mkdir terraform
$ cd terraform
IAMユーザ作成
terraformでインフラを構築できる権限持ちのIAMユーザの作成を行います。
AWSのIdentity and Access Management (IAM)にてユーザの作成をします。
ユーザ名の入力、「プログラムによるアクセス」にチェックします。
「既存のポリシーを直接アタッチ」から「AdministratorAccess」ポリシーを選択します。
タグは特に入力せず進みます。
確認して「ユーザーの作成」を選択します。
「.csv のダウンロード」を選択してアクセスキー・シークレットキーを控えておきましょう。
aws cliにてプロファイルを設定しておきます。
$ aws configure
AWS Access Key ID [None]: <Access key>
AWS Secret Access Key [None]: <Secret key>
Default region name [None]: ap-northeast-1
Default output format [None]: json
ドメイン設定
今回は、テストですので無料で取得しましょう。
こちらで取得できます。
https://www.freenom.com/ja/index.html?lang=ja
ドメイン名によっては、取得できないので注意しましょう。
ドメイン取得
取得したいドメインを入力しましょう。
好きなURLの「今すぐ入手!」をクリック。
「チェックアウト」をクリック。
無料で12ヶ月使えるので、「12 Months @ FREE」を選択しておきます。
そしたら、「Continue」をクリックします。
「I have read and agree to the Terms & Conditions」にチェック✓
「Complete Order」をクリックして、購入しましょう!
DNSサーバー設定
AWS Route53 設定
取得したドメインをAWSで使用できるように設定をします。
AWSのRoute53にいきましょう。
そして、「ホストゾーン作成」を選択し「開始」をクリックします。
取得したドメインを入力。
入力したら「ホストゾーンの作成」をクリックして作成します。
作成したドメインをクリックしたら、「ホストゾーンの詳細」をクリックします。
こちらの4つのネームサーバーを控えておきます。
ドメインのネームサーバー設定
freenomに戻って、AWSのネームサーバーをドメインを設定しましょう。
「Services」から「My Domains」をクリック。
「Manage Domain」をクリック。
「Management Tools」から「Nameservers」をクリック。
そして、「Use custom nameservers (enter below)」を選択して、先程控えたネームサーバー4つ全て入力して「Change Nameservers」をクリックしてネームサーバーを適用します。
これで完了です。
backend作成
tfstate管理用にS3バケットとロック用のDynamoDBを作成しておきます。
作成方法はこちらにまとめていますので、ご覧ください。
terraform tfstateファイルを管理する
今回使用する、backend.configは以下です。
bucket = "terraform-and-rails-remote-state" key = "rails_hello/terraform.tfstate" region = "ap-northeast-1" dynamodb_table = "terraform-and-rails-state-lock" encrypt = true
terraform/内にenvフォルダを作成して、そこに入れておきましょう。
$ mkdir env
$ touch env/backend.config
おわり
これで、Rails + Nginx な環境をTerraformで構築する事前準備が完了しました!
お疲れさまでした。
次回は、ネットワークの環境構築をします!
コメント