Terraform

【terraform】Data Sourceを使うならModuleではなく呼び出し元で

Summary - 要旨 terraformのData Sourceを使うと外部リソースを参照できるためとても便利である。 が、moduleの中で直接呼ぶよりは、呼び出し元で呼ぶほうが使いまわしやすくてよさそうだ。 Detail - なんのこっちゃ Data Sourceをmoduleの中で呼ぶと、それ…

DockerでTerraformを利用してみる

しばらく暫定的にWindow直でTerraformを利用していたが、環境を再現しづらく、従って環境の統一もしづらい問題が気になる。ついでに、AWSをMFA付きで利用するにあたっては、いちいち公式で紹介されている手順を使うのも地味に手間がかかるので、こちらで紹介…

Terraformの*.tfstateファイルを保存するためのS3のバケットをCLIで作る

TerraformのtfstateファイルをS3に保存する場合、そのバケット自体はTerraformを使わずに作成することが推奨されている。 というわけで、CLIを使ってバケットを作成することにした。 コマンド 先にコマンドを記載する。結論、以下のようにした。 aws s3api c…

.tfvarsをDRYに保つには?

課題 同じ設定であれば、設定ファイル(*.tfvars)をコピーして各ディレクトリに置くのではなく、共通の設定ファイルとして読み込むようにしたい。 だがTerraformに外部ファイルの読み込みらしき機能が見当たらない。どうすればよいか。 解決 実行時に-var-fil…

Terraform の変数のとっちらかりをどうにかしたい

課題 Terraformは利用する変数を宣言しないとスクリプト内で利用することができない。 これは素晴らしい制約で、とんでもないところから謎の超スコープ変数が叩き込まれるのを防げて喜ばしいのだが、そうはいっても変数が大量に増えてくるととっちらかって管…

Terraform のサンプルコードを探したいならTerraform Registryを当たってみる

課題 Terraformのサンプルコード、それも断片的なものではなく、ある程度まとまったサンプルコードが欲しいが、Googleで検索してもみつからないことがある。 そのような場合はどこで探せばよいか。 解決 Terraform Registryを探してみる。 Discover Terrafor…

Terraformの.tfstateファイルをS3に保存する際の手順(DynamoDBなし)

AWSリソースをTerraformで扱う際、もしも.tfstateファイルをS3に保存するなら事前にバケットを作成する必要がある。 その際の手順を記載する。 ただしDynamoDBを用いてのロックは行っていない。 S3 Bucketの用意 Bucketの作成コマンド その他 参考 S3 Bucket…

Terraform Tips, Invalid value for ”path” parameter: no file exists...

課題 下記のようなコードで、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の開発環境の用意

Windows+VSCodeでTerraformを使うための開発環境を用意する方法について記載する。 VSCode、Terraformはインストール済という前提。 Linter(tflint) Install VSCodeとの連携 Formatter Install VSCodeとの連携 Linter(tflint) Install https://github.com/te…

WindowsでTerraformerを利用する

自サイト用のインフラをTerraform管理に移行するにあたり、まず既存のリソースをコード化する必要があった。 そこでterraformerを利用し、既存リソースを元にScaffoldingを行うことにした。 Terraformer のInstall Usage Terraformer のInstall 公式の手順通…

AWSのIaC(Infrastructure as Code)は何を使うべきか(2022/10)

2022年10月にAWSのIaC用ソリューションを検討した結果を記載する。 結論 IaCソリューションあれこれ Terraformをどこで実行する? .tfstateファイルをどこに保存する? 結論 今ならTerraformでいい。 IaCソリューションあれこれ Terraform それ自体も優秀だ…

Terraformのディレクトリ設計方針

Terraformのディレクトリ設計方針について記載する。 公式のベストプラクティス モジュールの粒度をどうするか? 更新頻度 集約関係にあるか否か サービス単位 ではどう整理するか モジュールのNestの是非 参考 公式のベストプラクティス Terraformのディレ…