Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

各種リファクタリング(AWS) #70

Merged
merged 18 commits into from
Sep 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
**/.terraform
**/.terraform.lock.hcl

16 changes: 7 additions & 9 deletions aws/app-examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,14 @@ app-examples

AWS-S3
└─nautible-dev-app-examples-tf-ap-northeast-1 ・・・Terraformを管理するためのS3バケット。バージョニング有効。
└─nautible-dev-app-examples.tfstate ・・・Terraformのtfstate
└─{プロジェクト名}-{環境名}-tf-{リージョン} ・・・Terraformを管理するためのS3バケット。バージョニング有効。
└─nautible-dev-app-examples.tfstate ・・・Terraformのtfstate

※プロジェクト名、環境名、リージョンはinit実行時に指定

AWS-Dynamodb
└─nautible-dev-app-examples-tfstate-lock ・・・teffaromのtfstateのlockテーブル
└─nautible-dev-tfstate-lock ・・・teffaromのtfstateのlockテーブル
```

※各module配下のファイルは記載を割愛
Expand All @@ -54,14 +56,10 @@ AWS-Dynamodb
### 環境構築手順

* AWSの接続プロファイルを環境変数に設定する「export AWS_PROFILE=profile_name」
* tfstate管理用のS3バケットの作成(管理者が一度だけ実行。Terraformで作成するのはアンチパターンですが、nautibleを簡単に試せるようにするため用意しています)
* app-examples/modules/initのmain.tfとvariables.tfをファイル内のコメントを参考に用途にあわせて修正
* app-examples/modules/initディレクトリで「terraform init」の実行
* app-examples/modules/initディレクトリで「terraform plan」の実行と内容の確認
* app-examples/modules/initディレクトリで「terraform apply」の実行
* AWS環境の構築
* app-examples/env/devのmain.tfとvariables.tfをファイル内のコメントを参考に用途にあわせて修正
* app-examples/env/devディレクトリで「terraform init」の実行
* app-examples/env/devディレクトリで「terraform init -backend-config="bucket=<initで作成したバケット名>"」の実行
* initの作成については[platformの構築手順](../platform/README.md)を参照
* app-examples/env/devディレクトリで「terraform plan」の実行と内容の確認
* app-examples/env/devディレクトリで「terraform apply」の実行

Expand Down
5 changes: 2 additions & 3 deletions aws/app-examples/env/dev/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,17 @@ provider "aws" {
terraform {
# fix folloing value
backend "s3" {
bucket = "nautible-dev-app-examples-tf-ap-northeast-1"
region = "ap-northeast-1"
key = "nautible-dev-app-examples.tfstate"
encrypt = true
# if you don't need to dynamodb tfstate lock, comment out this line.
dynamodb_table = "nautible-dev-app-examples-tfstate-lock"
dynamodb_table = "nautible-dev-tfstate-lock"
}

required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.8.0"
version = "~> 5.66.0"
}
}
}
Expand Down
59 changes: 0 additions & 59 deletions aws/app-examples/modules/init/main.tf

This file was deleted.

14 changes: 0 additions & 14 deletions aws/app-examples/modules/init/variables.tf

This file was deleted.

20 changes: 9 additions & 11 deletions aws/app-ms/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,19 @@ app-ms
├─order ・・・注文のリソースのmodule
├─stock ・・・在庫のリソースのmodule
├─stockbatch ・・・在庫(バッチ)のリソースのmodule
├─init ・・・このTerraformリソース全体の初期化用のmodule。tfstate管理のS3バケット作成など。
├─payment ・・・決済のリソースのmodule
└─customer ・・・顧客のリソースのmodule

AWS-S3
└─nautible-dev-app-ms-tf-ap-northeast-1 ・・・Terraformを管理するためのS3バケット。バージョニング有効。
│ nautible-dev-app-ms.tfstate ・・・Terraformのtfstate
└─{プロジェクト名}-{環境名}-tf-{リージョン} ・・・Terraformを管理するためのS3バケット。バージョニング有効。
└─nautible-dev-app-ms.tfstate ・・・Terraformのtfstate

※プロジェクト名、環境名、リージョンはinit実行時に指定

AWS-Dynamodb
└─nautible-dev-app-ms-tfstate-lock
・・・teffaromのtfstateのlockテーブル
└─nautible-dev-tfstate-lock ・・・teffaromのtfstateのlockテーブル
```

※各module配下のファイルは記載を割愛
Expand All @@ -60,14 +61,11 @@ AWS-Dynamodb
### 環境構築手順

* AWSの接続プロファイルを環境変数に設定する「export AWS_PROFILE=profile_name」
* tfstate管理用のS3バケットの作成(管理者が一度だけ実行。Terraformで作成するのはアンチパターンですが、nautibleを簡単に試せるようにするため用意しています)
* app-ms/modules/initのmain.tfとvariables.tfをファイル内のコメントを参考に用途にあわせて修正
* app-ms/modules/initディレクトリで「terraform init」の実行
* app-ms/modules/initディレクトリで「terraform plan」の実行と内容の確認
* app-ms/modules/initディレクトリで「terraform apply」の実行
* AWS環境の構築
* app-ms/env/devのmain.tfとvariables.tfをファイル内のコメントを参考に用途にあわせて修正
* app-ms/env/devディレクトリで「terraform init」の実行
* projectはvariables.tfでdefaultを指定しない場合、planおよびapply実行時に入力が促されます
* app-examples/env/devディレクトリで「terraform init -backend-config="bucket=<initで作成したバケット名>"」の実行
* initの作成については[platformの構築手順](../platform/README.md)を参照
* app-ms/env/devディレクトリで「terraform plan」の実行と内容の確認
* app-ms/env/devディレクトリで「terraform apply」の実行

Expand Down
16 changes: 9 additions & 7 deletions aws/app-ms/env/dev/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,17 @@ provider "aws" {
terraform {
# fix folloing value
backend "s3" {
bucket = "nautible-dev-app-ms-tf-ap-northeast-1"
region = "ap-northeast-1"
key = "nautible-dev-app-ms.tfstate"
encrypt = true
# if you don't need to dynamodb tfstate lock, comment out this line.
dynamodb_table = "nautible-dev-app-ms-tfstate-lock"
dynamodb_table = "nautible-dev-tfstate-lock"
}

required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.30.0"
version = "~> 5.66.0"
}
}
}
Expand All @@ -29,7 +28,8 @@ locals {

module "nautible_aws_app" {
source = "../../"
pjname = var.pjname
project = var.project
environment = var.environment
region = var.region
platform_pjname = data.terraform_remote_state.nautible_aws_platform.outputs.pjname
vpc = {
Expand All @@ -47,8 +47,10 @@ module "nautible_aws_app" {
data "terraform_remote_state" "nautible_aws_platform" {
backend = "s3"
config = {
bucket = var.platform_tfstate.bucket
region = var.platform_tfstate.region
key = var.platform_tfstate.key
# デフォルトではplatformと同じバケットを使用しているので、自身のバケット、リージョンを指定する
# 異なるバックエンドを利用する場合は個別に指定してください
bucket = local.backend_config.backend.config.bucket
region = local.backend_config.backend.config.region
key = var.platform_tfstate
}
}
28 changes: 13 additions & 15 deletions aws/app-ms/env/dev/variables.tf
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
# Project name
variable "pjname" {
default = "nautible-app-dev"
variable "project" {
description = "プロジェクト名称 ex) nautible"
}

variable "environment" {
description = "環境名定義"
default = "dev"
}

# AWS region
variable "region" {
default = "ap-northeast-1"
Expand All @@ -10,19 +16,11 @@ variable "region" {
# platform tfstate
variable "platform_tfstate" {
description = "platform tfstate設定"
type = object({
bucket = string
region = string
key = string
})
default = {
# platform tfstate bucket
bucket = "nautible-dev-platform-tf-ap-northeast-1"
# platform tfstate region
region = "ap-northeast-1"
# platform tfstate key
key = "nautible-dev-platform.tfstate"
}
default = "nautible-dev-platform.tfstate"
}

locals {
backend_config = jsondecode(file(".terraform/terraform.tfstate"))
}

# EKS
Expand Down
16 changes: 8 additions & 8 deletions aws/app-ms/main.tf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module "common" {
source = "./modules/common"
pjname = var.pjname
pjname = local.pjname
region = var.region
platform_pjname = var.platform_pjname
eks_oidc_provider_arns = values(var.eks).*.oidc.provider_arn
Expand All @@ -9,7 +9,7 @@ module "common" {

module "product" {
source = "./modules/product"
pjname = var.pjname
pjname = local.pjname
platform_pjname = var.platform_pjname
vpc_id = var.vpc.vpc_id
private_subnets = var.vpc.private_subnets
Expand All @@ -27,22 +27,22 @@ module "product" {

module "customer" {
source = "./modules/customer"
pjname = var.pjname
pjname = local.pjname
}

module "stock" {
source = "./modules/stock"
pjname = var.pjname
pjname = local.pjname
}

module "stockbatch" {
source = "./modules/stockbatch"
pjname = var.pjname
pjname = local.pjname
}

module "order" {
source = "./modules/order"
pjname = var.pjname
pjname = local.pjname
platform_pjname = var.platform_pjname
vpc_id = var.vpc.vpc_id
private_subnets = var.vpc.private_subnets
Expand All @@ -57,10 +57,10 @@ module "order" {

module "payment" {
source = "./modules/payment"
pjname = var.pjname
pjname = local.pjname
}

module "delivery" {
source = "./modules/delivery"
pjname = var.pjname
pjname = local.pjname
}
2 changes: 0 additions & 2 deletions aws/app-ms/modules/init/.gitignore

This file was deleted.

59 changes: 0 additions & 59 deletions aws/app-ms/modules/init/main.tf

This file was deleted.

Loading