Terraform module(模組)簡介。
Terraform的module用來包裝多個資源配置藉此增加配置的組織性、封裝性及重用性。簡單說module用途類似程式的package或function。
根模組 Root Module
每一個Terraform配置至少會有一個module稱為root module(根模組),其為一個包含多個資源配置的.tf
檔。
子模組 Child Module
Module能呼叫其他modules將其資源配置包含進自身的配置中,被呼叫的module(即被包含的module)稱為child module(子模組);呼叫child module的module則稱為calling module。
Module Blocks
module block是用來呼叫child module,也就是說把child的配置包含到目前的module(即calling module)。
例如下面是root module main.tf
定義的module block名稱為services
。
source
定義呼叫module的來源位置,本範例呼叫本地ec2
目錄的module,為必填。其餘引數如instance_type
及instance_name
為子module的輸入變數(input variables)。
main.tf
module "services" {
source = "./ec2"
instance_type = "t2.micro"
instance_name = "TerraformProvisionDemo"
}
在child module中可透過定義輸入變數取得calling module services
中定義的instance_type
及instance_name
值。
ec2/main.tf
variable "instance_type" {
description = "ec2 instance type"
type = string
default = "t2.micro"
}
variable "instance_name" {
description = "ec2 instance name"
type = string
}
resource "aws_instance" "app_server" {
...
instance_type = var.instance_type
tags = {
Name = var.instance_name
}
}
沒有留言:
張貼留言