はじめに
本記事では Terraform 開発環境をローカルに構築する方法についてまとめます。
Terraform のインストールや開発を助けるツールのインストールを行います。
最後に VSCode を使用する場合の追加設定も記載します。
環境
Mac を使用します。
- Apple M1
- macOS Ventura 13.2
構築手順
Terraform
インストール
tfenv で Terraform をインストールします。
tfenv により複数プロジェクトで異なる Terraform のバージョンを使用している場合に対応できます。
また単一のプロジェクトでのみ使用する場合も、Terraform のバージョンをあげて動作検証する場合などに複数バージョン使用する必要があるため tfenv を使用して Terraform バージョン管理をすることをお勧めします。
Mac の場合のインストールコマンド
brew install tfenv
tfenv --version
tfenv install latest
tfenv use latest
tfenv list
.terraform-version 作成
.terraform-version
を特定のディレクトリに作成しておくことによって、そのディレクトリ配下のみ適用するバージョンを指定できます。
またtfenv install
でインストールされるバージョンが.terraform-version
に記載されたバージョンになります。
さらに Terraform 実行時に、ローカルに.terraform-version
のバージョンがない場合は、自動でインストールされます。
.terraform-version
は以下のようにバージョンを記載するだけです。
1.3.9
TFLint
インストール
TFLintを用いることで、例えば存在しないインスタンスタイプの指定などterraform validate
やterraform plan
では検知できないエラーを検知できます。
またカスタムルールを作成することで、命名規則など独自にルールを設定することも可能です。
こちらに記載があるように、TFLint は Terraform を内蔵しているので、環境にインストールしている Terraform のバージョンと TFLint が内蔵している Terraform のバージョンは一致させるのがベストプラクティスになります。Terraform のバージョンアップはある程度は後方互換性があるので、バージョンが違ってもすぐに問題が発生するわけではありません。ただし、この前提によっては誤検出が発生する可能性があることを念頭に置く必要があります。
(2023年2月時点で最新の TFLint は Terraform v1.1.0をバンドルしている)
Mac の場合のインストールコマンド
brew install tflint
tflint -v
実行方法
- 対象の.tfファイルが存在するディレクトリに
.tflint.hcl
を作成する(以下は AWS の RuleSet Plugin をインストールする例)
plugin "aws" {
enabled = true
version = "0.21.2"
source = "github.com/terraform-linters/tflint-ruleset-aws"
}
tflint --init
を実行する- ターミナルで
tflint
を実行する
tfsec
インストール
tfファイルのセキュリティチェックツールとして tfsec を使用します。
VSCode 用の拡張もあります。
tfsecを利用することでセキュリティ推奨事項に沿った構築が可能です。
少し逸れますが、tfファイルへの機密情報のベタ書きなど行うとtfstateファイルに機密情報が残りセキュリティリスクになります。tfstateファイルのセキュリティについてはこちらの資料が非常に参考になります。
tfsecを利用することでこういったセキュリティリスクを未然に防ぐことができます。
Mac の場合のインストールコマンド
brew install tfsec
tfsec -v
実行方法
- (CLIで実行する場合)対象のtfファイルが存在するディレクトリで
tfsec
を実行する - (VSCodeの拡張を使用する場合)は以下のように、アクティビティバーに tfsec のアイコンが追加され、こちらから結果を確認できる
terraform-docs
インストール
module のドキュメント出力には terraform-docs を使用します。
module の input や output を記載したドキュメントを自動で出力することができます。出力形式は yaml や markdown など選ぶことができます。
Mac の場合のインストールコマンド
brew install terraform-docs
VSCode を使用する場合の設定
Terraform Extension
開発に VSCode を使用する場合は拡張機能を入れておきましょう。
補完が効いたり、シンタックスハイライトが有効になります。
自動フォーマット
保存時に自動的にterraform fmt
が実行されるようにsettings.jsonにeditor.formatOnSave
の設定を入れておくと良いです。
おわりに
本記事では2つのテーブル間で不一致のレコードを抽出する方法についてまとめました。
複数環境のデータ比較などの際に役立てていただければと思います。
この記事がどなたかの参考になれば幸いです。
参考
- GitHub – tfutils/tfenv: Terraform version manager
- GitHub – terraform-linters/tflint: A Pluggable Terraform Linter
- GitHub – aquasecurity/tfsec: Security scanner for your Terraform code
- tfsec – Visual Studio Marketplace
- セキュアなTerraformの使い方 ~ 機密情報をコードに含めず環境構築するにはどうしたらいいの? – Speaker Deck
- GitHub – terraform-docs/terraform-docs: Generate documentation from Terraform modules in various output formats
- HashiCorp Terraform – Visual Studio Marketplace
コメント