Terraform のモジュール
概要
リソース生成処理を共通化して呼び出せるよう様にしたもの
定義
モジュールのディレクトリ構成は以下。用途に合わせてファイルを作成して管理する。
code:md
<ROOT>/
└── modules/
└── <MODULE_NAME>/
├── varibles.tf : 引数
├── main.tf : 処理
├── outputs.tf : 出力
└── README.md : 説明
引数
モジュールのmain.tfを使用する時に、使用する引数を定義する
code:variables.tf(引数)
variable "instance_type" {
type = string
default = "t2.micro"
}
処理
実際に作成する共通化するリソースを作成する。
上記の引数を受け取る前提で書くこともできる Ex) var.instance_type
code:main.tf(処理)
resource "aws_instance" "server" {
ami = "ami-070e0d4707168fc07"
instance_type = var.instance_type
tags = {
Name = "TestWebServer"
}
user_data = <<EOF
#!/bin/bash
amazon-linux-extras install -y nginx1
systemctl start nginx
EOF
}
出力
apply した時に標準出力で表示される内容を定義
code:outputs.tf(出力)
output "instance_id" {
value = aws_instance.server.id
}
呼び出し方法
moduleブロックを利用して呼び出す
code:md
<ROOT>
modules
nginx_server
main.tf
code:main.tf
## モジュールの実行
module "webserver" {
source - "./module/nginx_server" // モジュールのパスを指定
instance_type = "t2.micro" // モジュールの必要な引数を指定
}
## モジュールの出力
output "instance_id" {
value = module.webserver.id // モジュールの出力を指定
}