■ はじめに
https://dk521123.hatenablog.com/entry/2019/12/09/222057
https://dk521123.hatenablog.com/entry/2023/04/05/000224
の続き。 今回は、Terraform コードの基本的な文法について扱う。
目次
【1】環境リソース 1)リソース - resource 2)データリソース - data 3)モジュール - module 【2】変数の扱い 1)変数 - variable 2)ローカル変数 - local 【3】分岐 1)三項演算子
【1】環境リソース
* Terraform の Data Sources / Resource について。
https://qiita.com/masato930/items/f287ef1d088c160a514b
1)リソース - resource
# resource <固有リソース名> <識別子> resource "resource_name" "local_name" { }
例
resource "local_file" "helloworld" { content = "hello world!!!?" filename = "hello.txt" }
2)データリソース - data
* 読み取り専用のリソース => 例えば、Terraform の外部で定義された情報や 既に手動で作成されたリソースなどで使用
https://developer.hashicorp.com/terraform/language/data-sources
例
data "aws_ami" "example" { most_recent = true owners = ["self"] tags = { Name = "app-server" Tested = "true" } }
3)モジュール - module
* Terraformのソースコードをテンプレート化し 再利用可能にする仕組み(関数的な) => 詳細は、以下の関連記事を参照のこと
Terraform ~ 基本編 / Module ~
https://dk521123.hatenablog.com/entry/2023/05/19/113544
【2】変数の扱い
* 以下の2種類。 => 以下のサイト、すごくいい記事、、、
https://zenn.dev/sway/articles/terraform_biginner_varliable
1)変数 - variable
* 変数の定義 => variable セクションで定義
https://developer.hashicorp.com/terraform/language/values/variables
variable content { type = string default = "hello world!!!?" } variable filename { default = "hello.txt" } # var.<変数名>で参照 resource "local_file" "input_sample" { content = var.content filename = var.filename }
2)ローカル変数 - local
* ローカル変数の定義 => locals セクションで定義
https://developer.hashicorp.com/terraform/language/values/locals
locals { content = "hello world!!!?" filename = "hello.txt" } # ローカル変数の参照 # => local.<key>で変数 resource "local_file" "helloworld" { content = local.content filename = local.filename }
【3】分岐
https://qiita.com/arie0703/items/254e2adcade3bbac1156
1)三項演算子
max_retries = local.env == "dev" ? 0 : 3
参考文献
https://blog.symdon.info/posts/1652772791/
https://zenn.dev/sasakiki/articles/3c903edaea1817
https://papix.hatenablog.com/entry/2021/05/13/181826
https://shinbaichi.com/upload-multi-files-for-s3-using-terraform/
関連記事
Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
Terraform ~ 基本編 / Module ~
https://dk521123.hatenablog.com/entry/2023/05/19/113544
Terraform ~ 基本編 / tfstateファイル ~
https://dk521123.hatenablog.com/entry/2023/05/05/004939
Terraform ~ テンプレート ~
https://dk521123.hatenablog.com/entry/2023/05/22/101325
Terraform ~ Terraformあれこれ ~
https://dk521123.hatenablog.com/entry/2023/05/15/205352
Terraform ~ AWS S3 ~
https://dk521123.hatenablog.com/entry/2023/04/09/104204
Terraform ~ AWS IAM ~
https://dk521123.hatenablog.com/entry/2023/04/12/214311
Terraform ~ AWS Glue ~
https://dk521123.hatenablog.com/entry/2023/04/08/220411
Terraform ~ AWS Secrets Manager ~
https://dk521123.hatenablog.com/entry/2023/04/11/152801
Terraform ~ AWS CloudWatch ~
https://dk521123.hatenablog.com/entry/2023/05/17/123335
Terraform ~ AWS EC2 ~
https://dk521123.hatenablog.com/entry/2023/05/21/003048
Terraform ~ AWS ECR ~
https://dk521123.hatenablog.com/entry/2023/05/23/002314
Terraform ~ AWS MSK ~
https://dk521123.hatenablog.com/entry/2023/05/14/122215
Terraform ~ AWS MSK Connect ~
https://dk521123.hatenablog.com/entry/2023/05/25/000000
Terraform ~ Docker ~
https://dk521123.hatenablog.com/entry/2023/04/10/193239
Terraform ~ Datadog ~
https://dk521123.hatenablog.com/entry/2023/05/12/000000
Terraform ~ 特定リソースのみデプロイする ~
https://dk521123.hatenablog.com/entry/2023/04/20/172823
Terraform ~ 複数環境へデプロイすることを考える ~
https://dk521123.hatenablog.com/entry/2023/05/06/003645
Terraform ~ 機密情報の扱いを考える ~
https://dk521123.hatenablog.com/entry/2023/05/18/005103
Terraform ~ tfenv / バージョン管理 ~
https://dk521123.hatenablog.com/entry/2023/01/14/000000
Terraform ~ direnv / プロジェクト隔離 ~
https://dk521123.hatenablog.com/entry/2023/01/15/000000