0
0

More than 3 years have passed since last update.

AWSサーバレスでTerraformビルド

Last updated at Posted at 2021-09-15

Terraformとは?

Terraformはオープンソースであり、HashiCorpによってGo言語で開発されました。具体的にはTerraformではインフラの構成をコードで宣言します。構造化された構成ファイルでは、手動で操作することなくインフラ構成を自動で管理できます。インフラの初期プロビジョニング、更新、破棄、いずれもTerraformではコードにより宣言し、実行します。

AWS の Terraform モジュールは、AWS 統合と自動化ネームスペースページの Terraform レジストリで入手できます。提供されているリンクを使用して、Terraform レジストリのモジュールや GitHub のソースコードにアクセスします。

Terraformビルド順番

①IAMアカウント作成
➁CLIユーザー作成
③Terraformインストール
④DynamoDBとS3作成
⑤Terraform展開

①IAMアカウントを作成する

AWSへログインしてIAM serviceにアクセスする
image.png

➁CLIユーザー作成

アクセスタイプはProgramatic accessをチェックする
image.png

CLIユーザー作成後権限グループを作成してアクセス権限へ付与する。
image.png

Showボタンを押下でAccess key IDとSecret access key ーを取得して、アップデートを行います。

ここまでIAMアカウントとcliユーザーの作成が完了しました。これからTerraformビルドを紹介したいと思います。

AWSでCLIをインストールする
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html

ローカル環境により適切なOSバージョンを選択の上、インストールを実行する。
image.png

CLIインストールが完了したらterminalを開き、「aws configure」コマンドを実行する。

$ aws configure
AWS Access Key ID [None]: [Access Key ID]
AWS Secret Access Key [None]: [Secret Access Key]
Default region name [None]: ap-xxxxx-1
Default output format [None]: json

③Terraformインストール

まずは下記のリンクにてTerraformをインストールする
https://learn.hashicorp.com/tutorials/terraform/install-cli

インストールが完了したら下記のコマンドを実行する
terraform -v

下記の情報が表示されます。
image.png

④DynamoDBとS3作成

情報を確認の上、インフラ構成の作成を行います。
Terraformの設定を保存するために、DynamoDBとS3の作成を行い。

Terraformファイルで環境設定を指定する必要があります、下記のように環境を合わせて修正する。

variable "env"{
default="prod"
}

variable "developer"{
default="dev"
}

variable "project_version"{
default="v01"
}

Terraformの必要なモジュールの設定ため、Terminalで下記のコマンドを実行する
terraform init
このメッセージが表示されます。
│ If you wish to attempt automatic migration of the state, use "terraform
│ init -migrate-state".
│ If you wish to store the current configuration with no changes to the
│ state, use "terraform init -reconfigure".

エラーが発生しない場合はAWSに展開するもののバリデーションと成果テストのため、下記のコマンドを実行します。
terraform plan

AWSへ適用ため、applyコマンドを実行します。
terraform apply

結果は下記のイメージが表示されます。
image.png

DynamoDBとS3は下記のように作成されます。
image.png

⑤Terraform展開

Teraformファイルで作成したdynamodbとs3バケットをコピーする。
teraform{
required_version=">=0.12.0"
backend="S3"{
region ="ap-xxxx-1"
bucket =prod-xxxx-terraform-v01"
dynamodb_table ="prod-xxxx-terraform-state-lock-v01"
key ="./terraform.tfsate"
}
}

更新後Terminalを開いて下記のコマンドを実行する
terraform init
terraform plan (※)
terraform apply

※lock stateエラーが発生する時に、コマンドに -lock=falseを追加してから実行します。

実行が完了したら、下記のイメージで表示されます。

Run terraform success
output updateを上にコピーします

Outputs:

bastion_security_group = "prod-abc-testsite-bastion-sg-20210811125740118500000005"
examinator_cloudfront = "d3pxoqov8cscxi.cloudfront.net"
examinator_domain = "prod-examinator.kh-site_services.net"
examinator_s3_bucket = "prod-examinator.kh-site_services.net"
kh_cloudfront = "d1fvmjxi4u4mf7.cloudfront.net"
kh_domain = "prod-cms-kh.kh-site_service.net"
kh_s3_bucket = "prod-cms-kh.kh-site_service.net"
domain_certificate = "Region: {us-xxx-1}. Cer: *.kh-site_service.net"
abc_ecs_alb = "prod-abc-xxx-alb-1805414999.ap-northeast-1.elb.amazonaws.com"
abc_vpc = "vpc-0788d809b4d578c05"
abc_vpc_security_group = "sg-0da36f8fd568866c1"
abc_vpc_subnet_database = [
"subnet-10a6ea0769944a11a0",
"subnet-209a6bc288ef8cb88c",
"subnet-30d8aa8be98e25b86a",
]
abc_vpc_subnet_private = [
"subnet-10b9fa501f91b3b3c8",
"subnet-10db375eec3d7bf36a",
"subnet-103ec0e4a4d174dce0",
]
abc_vpc_subnet_public = [
"subnet-003adb19f3424eb1adf",
"subnet-003db18f87d41965dd8",
"subnet-00c619164e9187f2287",
]
s3_bucket_name = "prod-abc-xxx-logo-upload"
owner_cloudfront = "d3ghdpxv1nxu3f.cloudfront.net"
owner_domain = "prod-cms-owner.kh-site_service.net"
owner_s3_bucket = "prod-cms-owner.kh-site_service.net"

Teraformビルドが完了しました。

AWSサーバーレスに関して、詳細に関して下記のホームページへ問い合わせください。
Source: https://onetech.jp/

0
0
0

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
0
0