LoginSignup
2
2

More than 3 years have passed since last update.

.env から AWS パラメータストアの Terraform ファイルを生成するツールを作った

Posted at

envssm

Docker/docker-compose で.env を使っていると本番環境のシークレットの管理がめんどうですよね。

シークレットは AWS のパラメータストアに登録して、ECS など環境変数として利用するのが一般的のようですが、一つ一つコンソールに打ち込むのは骨が折れます。

なので.env ファイルからパラメータストアの Terraform ファイルを生成するツールを作りました。

対象読者

  • Terraform の基本がわかっている方
  • docker-compose などで.env を使っている方

Terraform や Docker の使い方には触れませんのでご了承ください。

インストール

go get github.com/tetsuzawa/envssm

Example

1. .env を用意

$ tree -a
.
└── .env
.env
DB_USER=user
DB_PASSWORD=password

2. envssm を実行

$ envssm

3. 出力ファイルを確認

$ tree -a
.
├── .env
├── ssm.tf              # generated
├── terraform.tfvars    # generated
└── variable.tf         # generated
ssm.tf
resource "aws_ssm_parameter" "db_user" {
  name  = "DB_USER"
  type  = "SecureString"
  value = var.db_user
}

resource "aws_ssm_parameter" "db_password" {
  name  = "DB_PASSWORD"
  type  = "SecureString"
  value = var.db_password
}
variables.tf
variable "db_user" {
  type = string
}

variable "db_password" {
  type = string
}
terraform.tfvars
db_user     = "user"
db_password = "password"

オプション

  • -f: .env ファイルのパス (prod.env や ./build/dev.env など)
  • -d: description = ""などのプレースホルダを生成
  • -so: 出力される ssm.tf のパス
  • -vo: 出力される variables.tf のパス
  • -to: 出力される terraform.tfvars のパス

説明

  • 出力ファイルを Terraform の構成に加えていただければパラメータストアに環境変数を登録することができます。
  • パラメータストアから環境変数を読み込むために EC2 や ECS 側で参照設定を忘れないようにしてください

終わりに

私の場合、パラメータストアを使うことで環境変数の注入を AWS 側に任せることができるようになり、GitHub 上での CD の方法に悩まされることがなくなりました。

設計など適当に短時間で作ってしまったため、修正依頼お待ちしてます。
https://github.com/tetsuzawa/envssm

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