2025/04/09 公開
Terraformを使ったインフラ管理を行っていると、複数のTerraformコマンド(init、plan、applyなど)を .env
ファイルの環境変数付きで実行する機会が多くあります。
これまではそれぞれのコマンドに対して個別のnpmスクリプトを用意して対応していましたが、今回の改善によって、運用をよりシンプルに、柔軟に行えるようになりました。
Terraformの各コマンドを実行する際、.env
ファイルを読み込ませる必要があったため、以下のように個別のnpmスクリプトを定義していました。
"terraform:init": "dotenv -e .env -- terraform -chdir=./terraform init",
"terraform:import": "dotenv -e .env -- terraform -chdir=./terraform import $npm_config_resource $npm_config_id",
"terraform:plan": "dotenv -e .env -- terraform -chdir=./terraform plan",
"terraform:apply": "dotenv -e .env -- terraform -chdir=./terraform apply"
この方法でも運用は可能ですが、コマンドの種類が増えるたびにnpmスクリプトの数も増加し、メンテナンス性が低下していくという課題がありました。
今回の見直しにより、Terraform関連のコマンドを1つのnpmスクリプトに集約することができました。
"terraform": "dotenv -e .env -- terraform -chdir=./terraform"
この変更により、以下のように自由な引数を付けてTerraformコマンドを実行できるようになりました。
npm run terraform -- init
npm run terraform -- plan
npm run terraform -- apply
npm run terraform -- import aws_s3_bucket.example my-bucket-id