Terraform
しばらく暫定的にWindow直でTerraformを利用していたが、環境を再現しづらく、従って環境の統一もしづらい問題が気になる。ついでに、AWSをMFA付きで利用するにあたっては、いちいち公式で紹介されている手順を使うのも地味に手間がかかるので、こちらで紹介…
TerraformのtfstateファイルをS3に保存する場合、そのバケット自体はTerraformを使わずに作成することが推奨されている。 というわけで、CLIを使ってバケットを作成することにした。 コマンド 先にコマンドを記載する。結論、以下のようにした。 aws s3api c…
課題 同じ設定であれば、設定ファイル(*.tfvars)をコピーして各ディレクトリに置くのではなく、共通の設定ファイルとして読み込むようにしたい。 だがTerraformに外部ファイルの読み込みらしき機能が見当たらない。どうすればよいか。 解決 実行時に-var-fil…
課題 Terraformは利用する変数を宣言しないとスクリプト内で利用することができない。 これは素晴らしい制約で、とんでもないところから謎の超スコープ変数が叩き込まれるのを防げて喜ばしいのだが、そうはいっても変数が大量に増えてくるととっちらかって管…
課題 Terraformのサンプルコード、それも断片的なものではなく、ある程度まとまったサンプルコードが欲しいが、Googleで検索してもみつからないことがある。 そのような場合はどこで探せばよいか。 解決 Terraform Registryを探してみる。 Discover Terrafor…
AWSリソースをTerraformで扱う際、もしも.tfstateファイルをS3に保存するなら事前にバケットを作成する必要がある。 その際の手順を記載する。 ただしDynamoDBを用いてのロックは行っていない。 S3 Bucketの用意 Bucketの作成コマンド その他 参考 S3 Bucket…
課題 下記のようなコードで、Terraformのモジュールのディレクトリからfile()を使ってファイルを読もうとすると、 resource "aws_iam_policy" "send_mail" { name = "${var.env}-lambda-send-mail" path = "/" description = "For IAM Role, ${var.env}-lamb…
Windows+VSCodeでTerraformを使うための開発環境を用意する方法について記載する。 VSCode、Terraformはインストール済という前提。 Linter(tflint) Install VSCodeとの連携 Formatter Install VSCodeとの連携 Linter(tflint) Install https://github.com/te…
自サイト用のインフラをTerraform管理に移行するにあたり、まず既存のリソースをコード化する必要があった。 そこでterraformerを利用し、既存リソースを元にScaffoldingを行うことにした。 Terraformer のInstall Usage Terraformer のInstall 公式の手順通…
2022年10月にAWSのIaC用ソリューションを検討した結果を記載する。 結論 IaCソリューションあれこれ Terraformをどこで実行する? .tfstateファイルをどこに保存する? 結論 今ならTerraformでいい。 IaCソリューションあれこれ Terraform それ自体も優秀だ…
Terraformのディレクトリ設計方針について記載する。 公式のベストプラクティス モジュールの粒度をどうするか? 更新頻度 集約関係にあるか否か サービス単位 ではどう整理するか モジュールのNestの是非 参考 公式のベストプラクティス Terraformのディレ…