Terraform的配置內容是以Terraform語言撰寫,簡介如下。
Terraform使用HashiCorp Configuration Language(HCL)語法格式來宣告基礎建設的resources配置稱為Terraform configuration。Terraform configuration是用來告訴Terraform如何管理基礎建設資源的配置文件,一份完整的配置可能由多個目錄和配置檔(.tf
)組成。
Terraform語言包含以下基本要素:
- Block - 表示一個物件內容的容器,由block type、零或多個lable及body組成。body裡面又可包含arguments及nested blocks。
- Arguments - 在block中設定值的名稱。
- Expressions - 表示一個值,可以參照及結合其他值。
<BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {
# Block body
<IDENTIFIER> = <EXPRESSION> # Argument
}
例如下面是一個block,type為resource
;兩個labels分別為"aws_vpc"
及"main"
;arguments為cidr_block
,值為var.base_cidr_block
。
resource "aws_vpc" "main" {
cidr_block = var.base_cidr_block
}
Block type除了resource
還有其他type,例如data
、variable
、locals
、module
等。
Block type定義後接的labels,例如resource
後面要有兩個labels;而type的種類則定義了body中有哪些arguments,例如aws_vpc
定義了cidr_block
這個必要的argument。
Terraform配置是描述結果而非步驟的宣告式(declarative)語言,因此配置中的block順序不重要,其只考慮resources間的相互關係以此決定執行時的順序。
沒有留言:
張貼留言