初次體驗過 terraform 的實際運作之後,我們要來回頭看看 main.tf
的內容
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "3.5.0"
}
}
}
provider "aws" {
profile = "default"
region = "ap-northeast-1"
}
resource "aws_instance" "example" {
ami = "ami-0461b11e2fad8c14a"
instance_type = "t2.micro"
}
我們目前還跟它不是很熟,但是也不難理解這段程式碼所表達的意思。
整個檔案內容分成三個區塊:
terraform
區塊寫著需要的工具來源跟版本provider
區塊寫著供應商 aws 相關的設定resoucre
區塊寫著伺服器相關的設定Terrform 採用名為 HCL (HashiCorp Configuration Language) 的組態語言來描述基礎架構。
HCL 是一種宣告式的語言,讓你直接寫下期望的基礎架構,而不是寫下過程的每一個步驟。
Terrform 組態語言的讓你更容易的宣告資源 (Resource),更可以把一系列的資源包裝成一個模組 (Module),藉此設計更龐大的架構。
我們來看下面這個範例,進一步了解 Terraform 的語法:
resource "aws_instance" "example" {
ami = "ami-0461b11e2fad8c14a"
instance_type = "t2.micro"
}
<BLOCK TYPE> "<RESOURCE TYPE>" "<LOCAL NAME>" {
# Block body
<ARGUMENT NAME> = <ARGUMENT VALUE> # Argument
}
區塊的開頭是區塊類型 (Block Type),後面接著區塊標籤 (Block Label),隨著區塊種類的不同,標籤的數量會有差異。
這邊以 resource
的區塊為例,後面依續接著資源類型 (Resouce Type) 跟區域名稱 (Local Name) 兩個標籤。
區塊的內容用大括號 { }
包起來,裡面有多個引數 (Argument)
引數的格式是以名稱開始,接著一個等號,等號後面放值。
在不同資源類型中,有各自的必要 (Required) 引數,一定要寫好這需必要引數,整個組態檔才能夠正常使用。