本リポジトリは Reportify のインフラストラクチャ設定ファイルを管理しています。
- AWS
- Terraform 1.3.7
- tfenv でバージョン管理することを強く推奨します
Terraform を使用するためのベストプラクティス に従って本プロジェクトは構成されています。
-- modules/
-- <service-name>/
-- main.tf
-- variables.tf
-- outputs.tf
-- ...
-- environments/
-- dev/
-- main.tf
-- backend.tf
-- provider.tf
-- secrets.yaml
-- qa/
-- main.tf
-- backend.tf
-- provider.tf
-- secrets.yaml
-- prod/
-- main.tf
-- backend.tf
-- provider.tf
-- secrets.yaml
# 環境ディレクトリに移動
# 特別な理由がない限りdev環境にデプロイすること
$ cd environments/<environment name>
# ワークスペースを初期化
$ terraform init
# 実行計画をプレビューし、問題なければデプロイする
$ terraform plan
$ terraform apply
KMS で Secrets ファイルを暗号化することで、安全に Secrets を管理できます。
Secrets を編集したい場合は、暗号化された Secrets ファイルを復号してから編集内容を適応し、再度暗号化する必要があります。
$ cd environments/<environment name>
# 暗号化
$ aws kms encrypt --key-id <KMSのキーID> \
--plaintext fileb://secrets.yaml \
--output text \
--query CiphertextBlob > secrets.yaml.encrypted
# 復号
$ aws kms decrypt \
--ciphertext-blob fileb://<(cat secrets.yaml.encrypted | base64 -d) \
--output text \
--query Plaintext | base64 --decode > secrets.yaml