iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
1
DevOps

DevOps with Proxmox系列 第 8 篇

Day 08 - Terraform 快速範例

  • 分享至 

  • xImage
  •  

這裡我們先快速的示範一下 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 經過評估後,認為會進行這些更動

init 和 plan 後是 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 Proxmox 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言