iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
1
DevOps

DevOps with Proxmox系列 第 8

Day 08 - Terraform 快速範例

這裡我們先快速的示範一下 Terraform 怎麽使用,避免等等拿 Terraform 操作 Proxmox VE 時不清楚內容

我們在這裡利用 AWS 來示範 Terraform 的效果,我們也可以拿其他家公有雲來學習 Terraform,不過這裡選擇使用 AWS 只是筆者剛好順手而已

這一段除了安裝 Terraform 以外,其他的都可以不用操作沒關係
這裡只是簡單示範 Terraform 的語法,所以也不會介紹怎麽設定 AWS 的部分

首先,在開始使用 Terraform 以前,我們要先安裝 Terraform

Terraform 的下載頁面 下載 Terraform,然後把 Terraform 放到系統的 PATH 裡,這樣就安裝完成了,非常簡單

接下來,我們新增一個資料夾,名稱任意
我們會在這個資料夾裡放 Terraform 要讀取的檔案, Terraform 會利用這些檔案去你要的平臺上建立對應的環境

接下來,在這個資料夾裡建立一個 main.tf 的檔案,內容如下

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 2.70"
    }
  }
}

provider "aws" {
  profile = "default"
  region  = "ap-northeast-1"
}

resource "aws_instance" "myFirstInstance" {
  ami           = "ami-0053d11f74e9e7f52"
  instance_type = "t3a.micro"
}

Terraform 的檔案有兩種格式可以選擇, 你可以用 JSON 寫,也可以用 HCL 寫
上面的範例是以 HCL 語言撰寫而成,我們來看看上面到底寫了什麼

首先是 terraform {},這裡是用來設定 Terraform 的區塊
我們在這裡示範了要如何在 Terraform 裡加入 Provider

什麼是 Provider? Provider 負責提供 API 給 Terraform 打,同時也負責把資源暴露給 Terraform
而如果我們想要利用 Terraform 操作各種平臺,我們自然需要讓 Terraform 有辦法跟後面的平臺互動
在上面的範例,你刻意看到我們載入了 aws 這個 provider,看名字就能知道這個 provider 讓我們能跟 AWS 互動

Terraform 同時也提供了一個 Terraform Registry,這裡放著各式各樣的 Provider 跟 Modules,可以讓你快速取用

設定完要讓 Terraform 能用什麼 Provider 後,接下來我們要設定這個 Provider 的相關資訊
我們看到 provider "aws" 這段程式,可以看到我們在裡面設定了 profile 和 region
Terraform 會讀取這段資訊,然後利用裡面的設定去跟 Provider 互動,不論是驗證或是預設值

再來是底下的 resource 部分
我們在這裡使用到 aws_instance 這個資源,然後我們建立了一個新的資源,資源名稱是 myFirstInstance
在這個資源內,我們設定了 AMI 和 Instance Type,這樣 Terraform 在設定資源時,才知道要用什麼映像檔開機器,以及要開什麼規格的機器
若我們沒有設定其他選項,Terraform 在執行時會全部以預設值進行設定
而資源的詳細設定都可以在 Terraform Register 裡找到說明文件

當我們寫好設定後,接下來要執行 terraform init 讓 Terraform 做環境初始化

terraform_init_processing

執行 terraform init 後,會看到這樣的提升訊息,告訴你 Terraform 正在準備環境
過不久以後就會告訴你環境準備成功,如下

terraform_init_done

接下來,我們要執行 terraform plan

plan 的用意在,讓 Terraform 先去評估接下來會進行什麼異動
如果今天我們已經有利用 Terraform 建立好的環境的話, Terraform 這時候會利用上次執行的結果
去跟新的設定檔做比對,若有不同的地方,則會在最後告訴你 Terraform 會做什麼

這正好也是個讓你 review 你的更動的地方,我們可以在這裡看到我們即將做什麼
若不小心下錯了設定,這正好也是個阻止自己的地方

執行完 terraform plan 後,會看到這樣的結果

terraform_plan_done
(由於執行結果有點長,這裡只截圖部分內容)

可以在最後看到 Plan: 1 to add, 0 to change, 0 to destroy 的訊息
這裡正是 Terraform 經過評估後,認為會進行這些更動

initplan 後是 apply,畢竟評估完,確定沒問題就能開始建立環境了

執行 terraform apply 後會得到這個訊息

terraform_apply_confirm_message

Terraform 在 apply 前還會再跟我們確認一次,是不是真的要這麼做
你可以最後 review 一次所有更動,確定沒問題後,輸入 yes 就會開始建立環境了

terraform_apply_done

而 Terraform 執行完成後,我們可以看到這樣的訊息,告訴我們 Terraform 已經部署完成
我們可以在最後的回報看到 Terraform 做了什麼

如果我們今天要刪除所有的資源,該怎麽做呢?

我們要下 terraform destroy 的指令

terraform_destroy_confirm_message

我們可以在這裡看到 Terraform 最後再一次跟我們確認是否要刪除所有資源
上面也會列出所有 Terraform 會刪除的資源,我們有最後一次機會可以重新瀏覽要被刪除的資源

確認沒問題就下 yes,然後就會開始刪除資源了

terraform_destroy_complete

我們最後可以看到 Terraform 毀了哪些資源,可以確保 Terraform 有正確的刪除

好了, Terraform 簡單示範大概就這樣
接下來我們要看如何利用 Terraform 管理 Proxmox VE


上一篇
Day 07 - Terraform 簡介
下一篇
Day 09 - Terraform & Proxmox VE - 容器
系列文
DevOps with Proxmox30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言