.env から AWS パラメータストアの Terraform ファイルを生成するツールを作った
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 側で参照設定を忘れないようにしてください
終わりに
go get github.com/tetsuzawa/envssm
$ tree -a
.
└── .env
.env
DB_USER=user
DB_PASSWORD=password
$ envssm
$ 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"
description = ""
などのプレースホルダを生成- 出力ファイルを Terraform の構成に加えていただければパラメータストアに環境変数を登録することができます。
- パラメータストアから環境変数を読み込むために EC2 や ECS 側で参照設定を忘れないようにしてください
終わりに
私の場合、パラメータストアを使うことで環境変数の注入を AWS 側に任せることができるようになり、GitHub 上での CD の方法に悩まされることがなくなりました。
設計など適当に短時間で作ってしまったため、修正依頼お待ちしてます。
https://github.com/tetsuzawa/envssm
Author And Source
この問題について(.env から AWS パラメータストアの Terraform ファイルを生成するツールを作った), 我々は、より多くの情報をここで見つけました https://qiita.com/tetsuzawa/items/d4682c171b7cf9953d62著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .