はじめに
udemyを使ってTerraformの勉強をしたので、Terraformのモジュールについての学習備忘録です。
Terraformのモジュールとは
リソース生成処理を1つの塊にして呼び出せるようにしたもの → 関数のようなもの
Terraformのモジュールを作成してみよう
試しにserverというモジュールを作成してみたいと思います。
modulesフォルダを作成し、serverフォルダを作成します。
その配下にモジュール作成に下記の空のファイルを用意します。
- variables.tf : 引数
- main.tf : 処理
- outputs.tf : 戻り値
- README.md : 説明
serverフォルダ内のファイルにEC2起動のTerraformを書きます。
/modules/server/main.tf
resource "aws_instance" "server" {
ami = "ami-078296f82eb463377" # Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type
instance_type = var.instance_type
tags = {
Name = "hogeServer"
}
}
/modules/server/outputs.tf
output "instance_id" {
value = aws_instance.server.id
}
/modules/server/variables.tf
variable "instance_type" {
type = string
default = "t2.micro"
}
これで、モジュールの完成です。
作成したモジュールを呼んでみよう
作成したモジュールを呼び出して使って見たいと思います。
main.tf
terraform {
required_version = ">=0.13"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
# モジュールの呼び出し
module "webserver" {
# モジュールのパスを記載する
source = "./modules/server/"
instance_type = "t2.micro"
}
output "web_server_id" {
value = module.webserver.instance_id
}
実行します。
$ terraform init
$ terraform plan
$ terraform apply
モジュールで記載した内容がデプロイできてればOKです。