聊城建网站哪家好,电子印章手机在线制作软件,自己做电影网站违法吗,wordpress修改pageid作者 | Addo Zhang来源 | 云原生指北自从用上 m1 的电脑#xff0c;本地开发环境偶尔会遇到兼容性的问题。比如之前尝试用 Colima 在虚拟机中运行容器运行时和 Kubernetes#xff0c;其实际使用的还是 aarch64 虚拟机#xff0c;实际使用还是会有些差异。手上有台之前用的黑… 作者 | Addo Zhang来源 | 云原生指北自从用上 m1 的电脑本地开发环境偶尔会遇到兼容性的问题。比如之前尝试用 Colima 在虚拟机中运行容器运行时和 Kubernetes其实际使用的还是 aarch64 虚拟机实际使用还是会有些差异。手上有台之前用的黑苹果小主机吃灰几个月了实属浪费。CPU: Intel 8700 6C12T
MEM: 64G DDR4
DISK: 1T SSD折腾的目的将平台虚拟化提供多套实验环境快速创建销毁实验环境体验基础设施即代码 IaaS主要用到的工具虚拟化工具 Proxmox VETerraform开源的基础设施即代码工具terraform-provider-proxmoxTerraform 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,bridgevmbr0
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 enabled1将刚创建好的虚拟机转换成模板qm template 9000模板与普通的虚拟机会有些许的不同使用模板我们可以快速创建虚拟机。这里我们不会用 UI来创建。创建 Proxmox 用户及 API Token使用 Proxmox VE 的 REST API 需要权限校验有用户名密码或者 API Token 两种方式。我们选用后者登陆到 Proxmox 宿主机执行如下命令创建角色、用户以及 API Tokenpveum 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-provpve
pveum aclmod / -user terraform-provpve -role TerraformProv
pveum user token add terraform-provpve terraform-token --privsep0┌──────────────┬──────────────────────────────────────┐
│ key │ value │
╞══════════════╪══════════════════════════════════════╡
│ full-tokenid │ terraform-provpve!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 文件并按步骤进行配置配置要使用的 providerterraform {required_providers {proxmox {source telmate/proxmox}}
}配置 provider需要提供 pm_api_url、pm_api_token_id 和 pm_api_token_secretprovider proxmox {pm_tls_insecure truepm_api_url https://192.168.1.4:8006/api2/jsonpm_api_token_id terraform-provpve!terraform-tokenpm_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 ubuntuonboot true# CPUcores 4sockets 1cpu host# 内存memory 16384scsihw virtio-scsi-pcibootdisk scsi0# 硬盘设置因计算的方式 101580M 代替 100Gdisk {slot 0size 101580Mtype scsistorage local-lvmiothread 1}# 网络network {model virtiobridge vmbr0}lifecycle {ignore_changes [network,]}# 记住这里要使用IP CIDR。因为只创建一个虚拟机虚拟机的 IP 是 192.168.1.91。如果要创建多个虚拟机的话IP 将会是 .91、.92、.93 。ipconfig0 ip192.168.1.9${count.index 1}/24,gw192.168.1.2# 用户名和 SSH keyciuser addosshkeys 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 [idpve/qemu/100]这样虚拟机就创建成功了使用前面配置的私钥和 IP 地址就可以 ssh 到虚拟机中。销毁虚拟机虚拟机的销毁也很简单执行 terraform destory 并输入 yes 即可。总结有了 Terraform 和 Proxmox VE 后就可以愉快的使用干净的实验环境了。但是干净到一些开发中常用软件都没有使用起来也不方便。后续考虑通过 cloud-init 来对虚拟机进行高级定制比如容器环境和 K3s 等等。往期推荐虚幻引擎5上的《黑客帝国》全新体验爱了爱了Medusa又一个开源的替代品数字孪生交通到底有啥用5G专网路在何方点分享点收藏点点赞点在看