🦖

【tfvarenv】マルチ環境のTerraformプロジェクトを管理するツールtfvarenvを開発しました

2024/12/13に公開

https://github.com/marcy326/tfvarenv

3行でまとめると

  • Terraformのマルチ環境開発において、パラメータの管理を簡素化するCLIツール
  • シークレットを含むパラメータをS3上でセキュアにバージョン管理&チーム連携
  • 煩雑な環境設定をシンプルなコマンドに集約し、人的ミスのリスクを最小化

開発の経緯

初期アプローチ

パラメータファイルによるマルチ環境の管理

最初の取り組みとして、Terraformプロジェクトにおけるマルチ環境の管理方法としてパラメータファイルを導入しました。
この方法は、重複コードを削減し、環境間の設定に一貫性を持たせるとともに、柔軟にインフラコードを管理するのに非常に効果的でした。具体的には、この記事を参考にして、環境ごとに適用可能な変数ファイルを用意する仕組みを構築しました。
https://zenn.dev/sway/articles/terraform_biginner_envbyvarfile

課題

しかし、このアプローチを進める中でいくつかの課題が浮き彫りになりました。特に、ローカル開発からCI/CDに移行する際には、シークレット情報を含む環境変数ファイルの管理が難しくなります。GitHubの環境変数機能を活用する方法も試みましたが、手動更新プロセスの煩雑さやローカル環境との同期の難しさ、そして変更履歴が追跡できない点が大きな制約となりました。また、運用面でも環境変数の管理が属人的になり、デプロイの透明性やセキュリティ面での課題が目立つようになりました。

課題解決に向けたアプローチ

初期対応として、GitHubの環境変数機能を活用しましたが、スケーラビリティや追跡可能性が不足しているため、次の手段としてS3での一元管理を検討しました。この方法では、変数管理が一元化され、バージョニングが可能になるという利点がありましたが、S3への追加設定やコマンドの増加により運用が煩雑化する可能性もありました。

これらの課題を根本から解決するために開発したのがtfvarenvです。このCLIツールでは、S3を活用した安全な変数管理、バージョンの自動追跡、デプロイ履歴の記録をシンプルで直感的な操作で実現しました。

クイックスタート

1. インストール

# brewでインストール
brew install marcy326/tap/tfvarenv

2. 初期化

# プロジェクトの初期設定
tfvarenv init

3. 環境追加

# 新規環境の追加
tfvarenv add dev

# プロンプトに従って環境情報を入力
# - S3バケット
# - リージョン
# - その他設定

4. 基本的なワークフロー

# 環境の切り替え
tfvarenv use dev

# tfvarsファイルのアップロード
tfvarenv upload dev

# Terraform plan
tfvarenv plan dev

# Terraform apply
tfvarenv apply dev

5. その他のコマンド

# 環境一覧
tfvarenv list

# バージョン履歴
tfvarenv versions dev

# デプロイメント履歴
tfvarenv history dev

まとめ

tfvarenvは、S3を活用した安全な変数管理、自動バージョン追跡、デプロイ履歴の記録などの機能を備え、Terraformを用いたマルチ環境開発における課題を解決するための強力なツールです。シンプルで直感的な操作性を持ち、開発者の負担を大幅に軽減します。

ぜひツールを試してみてください。また、GitHubでのコントリビューションもお待ちしています!
https://github.com/marcy326/tfvarenv

Discussion