iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
1
DevOps

今晚我想來點 Terraform 佐 AWS系列 第 5

今晚我想認識 Terraform 組態檔

初次體驗過 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 區塊寫著伺服器相關的設定

組態語言 (Configuration Language)

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)

區塊的開頭是區塊類型 (Block Type),後面接著區塊標籤 (Block Label),隨著區塊種類的不同,標籤的數量會有差異。

這邊以 resource 的區塊為例,後面依續接著資源類型 (Resouce Type) 跟區域名稱 (Local Name) 兩個標籤。

  • 資源類型 (Resouce Type): 要從供應商提供的服務清單中尋找,不同的供應商有著不同的資源類型
  • 區域名稱 (Local Name): 就是自己定義的名稱,有效範圍只在這個模組內

區塊的內容用大括號 { } 包起來,裡面有多個引數 (Argument)

引數 (Argument)

引數的格式是以名稱開始,接著一個等號,等號後面放值。

在不同資源類型中,有各自的必要 (Required) 引數,一定要寫好這需必要引數,整個組態檔才能夠正常使用。


上一篇
今晚我想來點快速生產的伺服器
下一篇
今晚我想熟悉一點 Terraform 基本指令
系列文
今晚我想來點 Terraform 佐 AWS30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言