# IAM Roleを編集する
EMR_EC2_DefaultRoleに以下のポリシーを追加する
* AmazonS3FullAccess
* AmazonElasticMapReduceforEC2Role
* CloudWatchAgentServerPolicy
* CloudWatchFullAccess
* AmazonDynamoDBFullAccess
* CloudWatchLogsFullAccess
* AmazonSSMFullAccess
-
Cloud 9を立ち上げる
-
以下のリポジトリをClone
git clone https://github.com/cupperservice/hj-sample-infra.git
ディレクトリ構成
+-- common -> terraform definition files +-- staging -> parameters for staging environment
-
各種パラメータの設定
以下のファイルのXXXXX
の部分を環境に合わせて変更する- ファイル:
hj-sample-infra/staging/main.tf
- ファイル:
-
terraformを実行
staging
の下で以下を実行するterraform init terraform plan terraform apply
-
RDS のインスタンスを作成
staging/main.tf
のdatabase/num_of_instances
を1
に変更terraform apply
-
RDS のエンドポイントを登録
staging/main.tf
のdatabase/host
に作成した RDS のエンドポイントを設定するterraform apply
-
以下のリポジトリをcloneする
git clone https://github.com/cupperservice/hj-sample-app.git
-
Templateサーバにリソースをコピーする
TEMP_IP=TemplateサーバのPrivate IPアドレス
rsync -tav hj-sample-app/ ec2-user@$TEMP_IP:/opt/appsvr/
bastionサーバからTemplateサーバにssh接続する
ssh ec2-user@templateサーバのPrivate IPアドレス
-
regionを設定する 以下のコマンドを実行する
aws configure
Default region name
にus-east-1
を設定する
Default region name
以外は空 Enter -
アプリケーションの初期化
以下のコマンドを/opt/appsvr
の下で実行する
npm install
-
環境変数の設定
以下の環境変数を設定するname value DB_HOST RDSのEndpoint DB_PORT main.tfの定義値 DB_NAME main.tfの定義値 DB_USERNAME main.tfの定義値 DB_PASSWORD main.tfの定義値 #####################################
環境変数の設定方法
export 環境変数名=値
##################################### -
ユーザの登録
- 登録するユーザーを編集
tool/user.csv
を編集する - 登録
tool
の下で以下を実行する
node add_user.js user.csv
- 登録するユーザーを編集
-
起動スクリプトの作成
scripts/app.service
を/etc/systemd/system/app.service
にコピーする
以下を/opt/appsvr
の下で実行する
sudo cp scripts/app.service /etc/systemd/system/app.service
- 定義をリロードする
sudo systemctl daemon-reload
- 起動
sudo systemctl start app
- ブラウザからtemplateサーバの8080ポートにアクセスして動作することを確認する
インターネットからアクセスできるように template サーバのセキュリティグループを編集すること - 自動起動設定
sudo systemctl enable app
-
イメージ作成
templateサーバのイメージを作成する
staging/main.tf
の以下を編集するapp/image_id
-> 6.で作成したイメージのIDapp/max_size
-> 1app/min_size
-> 1
- 適用する
terraform apply
WebブラウザからLoad BalancerのDNS nameにアクセスしてアプリケーションが正常に動作していることを確認する
-
秘密鍵(labsuser.pem)をCloud9上にコピー
-
秘密鍵のパーミッションを変更
chmod 0400 labsuser.pem
-
ssh agent
を起動する
eval $(ssh-agent)
-
ssh agent に鍵を登録する
ssh-add labsuser.pem
-
ssh接続
ssh -A ec2-user@bastionサーバのPublic IPアドレス