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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

作者 | Addo Zhang

來源 | 云原生指北

自從用上 m1 的電腦,本地開發(fā)環(huán)境偶爾會(huì)遇到兼容性的問題。比如之前嘗試用 Colima 在虛擬機(jī)中運(yùn)行容器運(yùn)行時(shí)和 Kubernetes,其實(shí)際使用的還是 aarch64 虛擬機(jī),實(shí)際使用還是會(huì)有些差異。

手上有臺(tái)之前用的黑蘋果小主機(jī),吃灰?guī)讉€(gè)月了,實(shí)屬浪費(fèi)。

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

折騰的目的:

  • 將平臺(tái)虛擬化

  • 提供多套實(shí)驗(yàn)環(huán)境

  • 快速創(chuàng)建銷毀實(shí)驗(yàn)環(huán)境

  • 體驗(yàn)基礎(chǔ)設(shè)施即代碼 IaaS

主要用到的工具:

  • 虛擬化工具?Proxmox VE

  • Terraform:開源的基礎(chǔ)設(shè)施即代碼工具

  • terraform-provider-proxmox:Terraform Proxmox Provider,通過 Proxmox VE 的 REST API 在創(chuàng)建虛擬機(jī)。

安裝 Proxmox 虛擬化工具

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

電腦上插入 U 盤并從 U 盤啟動(dòng),按照步驟一步步完成設(shè)置。

官方的 wiki 安裝步驟很詳細(xì)。

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

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

創(chuàng)建 Ubuntu Cloud-Init Template

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

登陸到 Proxmox VE 宿主機(jī),使用 Ubuntu 20.04 cloud init image 來創(chuàng)建模板,從官網(wǎng)下載:

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

執(zhí)行下面的命令創(chuàng)建一個(gè)虛擬機(jī):

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

將剛創(chuàng)建好的虛擬機(jī)轉(zhuǎn)換成模板:

qm?template?9000

模板與普通的虛擬機(jī)會(huì)有些許的不同,使用模板我們可以快速創(chuàng)建虛擬機(jī)。這里我們不會(huì)用 UI來創(chuàng)建。

創(chuàng)建 Proxmox 用戶及 API Token

使用 Proxmox VE 的 REST API 需要權(quán)限校驗(yàn),有用戶名密碼或者 API Token 兩種方式。我們選用后者,登陸到 Proxmox 宿主機(jī),執(zhí)行如下命令創(chuàng)建角色、用戶以及 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?│ └──────────────┴──────────────────────────────────────┘

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

Terraform

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

安裝最新版本的 terraform。

brew?install?terraform

在空目錄中創(chuàng)建?ubuntu.tf?文件,并按步驟進(jìn)行配置:

配置要使用的 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" }

配置虛擬機(jī)資源

可以參考provider 的配置說明:

resource?"proxmox_vm_qemu"?"proxmox-ubuntu"?{count?=?1name??=?"ubuntu-${count.index?+?1}"desc??=?"Ubuntu?develop?environment"#?節(jié)點(diǎn)名target_node?=?"pve"#?cloud-init?templateclone?=?"ubuntu-2004-cloudinit-template"#?關(guān)機(jī)?guest?agentagent???=?0os_type?=?"ubuntu"onboot??=?true#?CPUcores????=?4sockets??=?1cpu??????=?"host"#?內(nèi)存memory???=?16384scsihw???=?"virtio-scsi-pci"bootdisk?=?"scsi0"#?硬盤設(shè)置,因計(jì)算的方式?101580M?代替?100Gdisk?{slot?????=?0size?????=?"101580M"type?????=?"scsi"storage??=?"local-lvm"iothread?=?1}#?網(wǎng)絡(luò)network?{model??=?"virtio"bridge?=?"vmbr0"}lifecycle?{ignore_changes?=?[network,]}#?記住這里要使用IP CIDR。因?yàn)橹粍?chuàng)建一個(gè)虛擬機(jī),虛擬機(jī)的 IP 是 192.168.1.91。如果要?jiǎng)?chuàng)建多個(gè)虛擬機(jī)的話,IP 將會(huì)是 .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 }

創(chuàng)建虛擬機(jī)

第一次需要先執(zhí)行?init?命令進(jìn)行初始化:

terraform?init

可以使用?terraform fmt?和?terraform validate?對(duì)配置文件進(jìn)行格式化和校驗(yàn)。

然后執(zhí)行?terraform apply?并輸入?yes?開始創(chuàng)建虛擬機(jī)

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]

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

銷毀虛擬機(jī)

虛擬機(jī)的銷毀也很簡單,執(zhí)行?terraform destory?并輸入?yes?即可。

總結(jié)

有了 Terraform 和 Proxmox VE 后,就可以愉快的使用干凈的實(shí)驗(yàn)環(huán)境了。但是干凈到一些開發(fā)中常用軟件都沒有,使用起來也不方便。

后續(xù)考慮通過 cloud-init 來對(duì)虛擬機(jī)進(jìn)行高級(jí)定制,比如容器環(huán)境和 K3s 等等。

往期推薦

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

Medusa又一個(gè)開源的替代品

數(shù)字孿生+交通,到底有啥用?

5G專網(wǎng),路在何方?

點(diǎn)分享

點(diǎn)收藏

點(diǎn)點(diǎn)贊

點(diǎn)在看

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。