日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

快速搭建实验环境:使用 Terraform 部署 Proxmox 虚拟机

發布時間:2024/8/23 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速搭建实验环境:使用 Terraform 部署 Proxmox 虚拟机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 | Addo Zhang

來源 | 云原生指北

自從用上 m1 的電腦,本地開發環境偶爾會遇到兼容性的問題。比如之前嘗試用 Colima 在虛擬機中運行容器運行時和 Kubernetes,其實際使用的還是 aarch64 虛擬機,實際使用還是會有些差異。

手上有臺之前用的黑蘋果小主機,吃灰幾個月了,實屬浪費。

CPU:?Intel?8700?6C12T MEM:?64G?DDR4 DISK:?1T?SSD

折騰的目的:

  • 將平臺虛擬化

  • 提供多套實驗環境

  • 快速創建銷毀實驗環境

  • 體驗基礎設施即代碼 IaaS

主要用到的工具:

  • 虛擬化工具?Proxmox VE

  • Terraform:開源的基礎設施即代碼工具

  • terraform-provider-proxmox:Terraform Proxmox Provider,通過 Proxmox VE 的 REST API 在創建虛擬機。

安裝 Proxmox 虛擬化工具

從官網?下載 ISO 鏡像,寫入到 U 盤中。macOS上推薦使用 balenaEtcher 寫盤。

電腦上插入 U 盤并從 U 盤啟動,按照步驟一步步完成設置。

官方的 wiki 安裝步驟很詳細。

安裝完成之后就可以創建虛擬機了,可以用命令行?qm create?或者?https://localhost:8006?Web UI來創建。

這樣畢竟還是有點麻煩,每次都要執行很多操作。雖說可以編寫腳本,但是通用型不夠好。因此我們選擇 Terraform,實現基礎設施即代碼。

創建 Ubuntu Cloud-Init Template

這里選用 Cloud-Init 的方式,從 cloud-init template 來克隆虛擬機。cloud-init 的虛擬機可以完成一些高級定制的初始化工作,有興趣的參考 Cloud Init 文檔。

登陸到 Proxmox VE 宿主機,使用 Ubuntu 20.04 cloud init image 來創建模板,從官網下載:

wget?https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img

執行下面的命令創建一個虛擬機:

qm?create?9000?--name?"ubuntu-2004-cloudinit-template"?--memory?1024?--cores?1?--net0?virtio,bridge=vmbr0 qm?importdisk?9000?ubuntu-20.04-server-cloudimg-amd64.img?local-lvm qm?set?9000?--scsihw?virtio-scsi-pci?--scsi0?local-lvm:vm-9000-disk-0 qm?set?9000?--boot?c?--bootdisk?scsi0 qm?set?9000?--ide2?local-lvm:cloudinit qm?set?9000?--serial0?socket?--vga?serial0 qm?set?9000?--agent?enabled=1

將剛創建好的虛擬機轉換成模板:

qm?template?9000

模板與普通的虛擬機會有些許的不同,使用模板我們可以快速創建虛擬機。這里我們不會用 UI來創建。

創建 Proxmox 用戶及 API Token

使用 Proxmox VE 的 REST API 需要權限校驗,有用戶名密碼或者 API Token 兩種方式。我們選用后者,登陸到 Proxmox 宿主機,執行如下命令創建角色、用戶以及 API Token:

pveum?role?add?TerraformProv?-privs?"VM.Allocate?VM.Clone?VM.Config.CDROM?VM.Config.CPU?VM.Config.Cloudinit?VM.Config.Disk?VM.Config.HWType?VM.Config.Memory?VM.Config.Network?VM.Config.Options?VM.Monitor?VM.Audit?VM.PowerMgmt?Datastore.AllocateSpace?Datastore.Audit" pveum?user?add?terraform-prov@pve pveum?aclmod?/?-user?terraform-prov@pve?-role?TerraformProv pveum?user?token?add?terraform-prov@pve?terraform-token?--privsep=0┌──────────────┬──────────────────────────────────────┐ │?key??????????│?value????????????????????????????????│ ╞══════════════╪══════════════════════════════════════╡ │?full-tokenid?│?terraform-prov@pve!terraform-token???│ ├──────────────┼──────────────────────────────────────┤ │?info?????????│?{"privsep":"0"}??????????????????????│ ├──────────────┼──────────────────────────────────────┤ │?value????????│?9748c040-a283-4c72-a48b-9ce784778eed?│ └──────────────┴──────────────────────────────────────┘

這里我們會用到 token 的full-tokenid?和?value。

Terraform

有了 token 和 cloud-init 模板后,就是定義虛擬機了。

安裝最新版本的 terraform。

brew?install?terraform

在空目錄中創建?ubuntu.tf?文件,并按步驟進行配置:

配置要使用的 provider:

terraform?{required_providers?{proxmox?=?{source?=?"telmate/proxmox"}} }

配置 provider

需要提供?pm_api_url、pm_api_token_id?和?pm_api_token_secret:

provider?"proxmox"?{pm_tls_insecure?????=?truepm_api_url??????????=?"https://192.168.1.4:8006/api2/json"pm_api_token_id?????=?"terraform-prov@pve!terraform-token"pm_api_token_secret?=?"9748c040-a283-4c72-a48b-9ce784778eed" }

配置虛擬機資源

可以參考provider 的配置說明:

resource?"proxmox_vm_qemu"?"proxmox-ubuntu"?{count?=?1name??=?"ubuntu-${count.index?+?1}"desc??=?"Ubuntu?develop?environment"#?節點名target_node?=?"pve"#?cloud-init?templateclone?=?"ubuntu-2004-cloudinit-template"#?關機?guest?agentagent???=?0os_type?=?"ubuntu"onboot??=?true#?CPUcores????=?4sockets??=?1cpu??????=?"host"#?內存memory???=?16384scsihw???=?"virtio-scsi-pci"bootdisk?=?"scsi0"#?硬盤設置,因計算的方式?101580M?代替?100Gdisk?{slot?????=?0size?????=?"101580M"type?????=?"scsi"storage??=?"local-lvm"iothread?=?1}#?網絡network?{model??=?"virtio"bridge?=?"vmbr0"}lifecycle?{ignore_changes?=?[network,]}#?記住這里要使用IP CIDR。因為只創建一個虛擬機,虛擬機的 IP 是 192.168.1.91。如果要創建多個虛擬機的話,IP 將會是 .91、.92、.93 。ipconfig0?=?"ip=192.168.1.9${count.index?+?1}/24,gw=192.168.1.2"#?用戶名和?SSH?keyciuser??=?"addo"sshkeys?=?<<EOFSSH?KEYS?HEREEOF }

創建虛擬機

第一次需要先執行?init?命令進行初始化:

terraform?init

可以使用?terraform fmt?和?terraform validate?對配置文件進行格式化和校驗。

然后執行?terraform apply?并輸入?yes?開始創建虛擬機

proxmox_vm_qemu.proxmox-ubuntu[0]:?Creating... proxmox_vm_qemu.proxmox-ubuntu[0]:?Still?creating...?[10s?elapsed] proxmox_vm_qemu.proxmox-ubuntu[0]:?Still?creating...?[20s?elapsed] proxmox_vm_qemu.proxmox-ubuntu[0]:?Still?creating...?[30s?elapsed] proxmox_vm_qemu.proxmox-ubuntu[0]:?Still?creating...?[40s?elapsed] proxmox_vm_qemu.proxmox-ubuntu[0]:?Creation?complete?after?42s?[id=pve/qemu/100]

這樣虛擬機就創建成功了,使用前面配置的私鑰和 IP 地址就可以 ssh 到虛擬機中。

銷毀虛擬機

虛擬機的銷毀也很簡單,執行?terraform destory?并輸入?yes?即可。

總結

有了 Terraform 和 Proxmox VE 后,就可以愉快的使用干凈的實驗環境了。但是干凈到一些開發中常用軟件都沒有,使用起來也不方便。

后續考慮通過 cloud-init 來對虛擬機進行高級定制,比如容器環境和 K3s 等等。

往期推薦

虛幻引擎5上的《黑客帝國》全新體驗,愛了愛了

Medusa又一個開源的替代品

數字孿生+交通,到底有啥用?

5G專網,路在何方?

點分享

點收藏

點點贊

點在看

總結

以上是生活随笔為你收集整理的快速搭建实验环境:使用 Terraform 部署 Proxmox 虚拟机的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。