AdSense

網頁

2022/1/10

Terraform 模組簡介 module intro

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_typeinstance_name為子module的輸入變數(input variables)。

main.tf

module "services" {
  source = "./ec2"

  instance_type = "t2.micro"
  instance_name = "TerraformProvisionDemo"
}

在child module中可透過定義輸入變數取得calling module services中定義的instance_typeinstance_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
  }
}

沒有留言:

AdSense