iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
1
DevOps

DevOps with Proxmox系列 第 9

Day 09 - Terraform & Proxmox VE - 容器

  • 分享至 

  • twitterImage
  •  

昨天我們看過了 Terraform 大概怎麽使用
我們接下來就來利用 Terraform 管理 Proxmox VE

我們在前面提過, Proxmox VE 提供了兩種方式讓你安裝系統
分別是容器與 VM

我們先看該如何利用 Terraform 管理 Proxmox VE 裡的容器

但在這之前,我們要先安裝 Terraform 的 plug-in

這個 plug-in 是用 Go 語言寫的,所以要先確保你的系統裡有 Go 能用

安裝這個 plug-in 的方式如下

  • git clone 上面這個專案
  • cd ./terraform-provider-proxmox
  • go install github.com/Telmate/terraform-provider-proxmox/cmd/terraform-provider-proxmox
  • go install github.com/Telmate/terraform-provider-proxmox/cmd/terraform-provisioner-proxmox
  • make
  • mkdir -p ~/.terraform.d/plugins/github.com/telmate/proxmox/1.0.0/linux_amd64/
  • cp ./bin/* ~/.terraform.d/plugins/github.com/telmate/proxmox/1.0.0/linux_amd64

這裡有部分指令和 repo 裡寫的不太一樣,是因為新版的 Terraform 更改了 plug-in 放置的方法

裝好了 plug-in 後,接下來我們就可以開始使用 terraform-provider-proxmox

我們先來看一個範例 Terraform config

terraform {
  required_providers {
    proxmox = {
      version = "~> 1.0.0"
      source  = "github.com/telmate/proxmox"
    }
  }
}

provider "proxmox" {
  pm_tls_insecure = true
  pm_api_url      = "https://<PVE_HOST>/api2/json"
  pm_user         = "root@pam"
  pm_password     = "insecurepassword"
}

resource "proxmox_lxc" "lxc-test" {
  hostname = "lxc-test-host"
  cores    = 1
  memory   = "512"
  swap     = "512"
  network {
    name     = "eth0"
    bridge   = "vmbr0"
    ip       = "dhcp"
    firewall = true
  }
  ostemplate   = "local:vztmpl/ubuntu-20.04-standard_20.04-1_amd64.tar.gz"
  password     = "insecurepassword"
  rootfs       = "local-lvm:8"
  storage      = "local-lvm"
  target_node  = "ithelp"
  unprivileged = true
  start        = true
}

一樣在一開始的 terraform block 裡,我們要設定 Terraform 使用 proxmox 這個 provider
這裡的版本和路徑的部分,我們稍早已經設定好了,可以和剛才操作過的步驟做比較

接下來是設定 proxmox 這個 provider,裡面有這些選項

Option Type Sample
pm_api_url required https://proxmox-server01.example.com:8006/api2/json
pm_user required terraform@pam
pm_password required insecurepassword
pm_otp optional 123456
pm_tls_insecure optional true
pm_parallel optional 4
pm_timeout optional 300

基本上,我們需要設定的是 pm_api_url, pm_userpm_password 三種選項
如果你的 host 還是使用自簽憑證,或是你不確定你的 host 有沒有更換過 SSL 憑證,那也加上 pm_tls_insecure=true 這個選項

接下來,我們就可以設定我們要新建的容器

在這裡我們有眾多設定選項,我們可以調整 CPU 數量、記憶體、網路、作業系統...等等,基本上,我們可以利用圖形化界面建立出什麼容器,我們就可以利用 Terraform 建立起對應的容器

拿著上面的的設定檔,我們實際執行看看 terraform plan

terraform_plan_message

確認沒問題後即可執行 terraform apply

而部署成功後,我們可以在我們的 Proxmox VE 界面裡看到我們剛建立好的容器

proxmox_ve_ct_100_summary

apply 沒問題,我們也需要測試一下 destroy 沒問題

terraform_destroy_success_message

terraform destroy 也順利的執行了!

明天來看怎麽利用 Terraform 管理 VM


上一篇
Day 08 - Terraform 快速範例
下一篇
Day 10 - Terraform & Proxmox VE - VM
系列文
DevOps with Proxmox30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
whatabout
iT邦新手 5 級 ‧ 2020-12-27 22:21:38

Hi tsunderechen,
Thanks for the guide. However, this no longer works. The provisoner seems to be gone.

go install github.com/Telmate/terraform-provider-proxmox/cmd/terraform-provisioner-proxmox

Any idea on how to get around it?

Thanks.

Hmm, seems like Telmate has updated this project from v1.x to v2.0, so the tutorial above may be outdated.
Anyway, for your question. I took a look at the repo, and terraform-provider-proxmox doesn't need terraform-provisioner-proxmox anymore, just install terraform-provider-proxmox and you should be good to go.

I'll recommend you to check out the repo yourself.
https://github.com/Telmate/terraform-provider-proxmox

我要留言

立即登入留言