<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Terraform-provider-proxmox</id>
	<title>Terraform-provider-proxmox - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linuxsa.org/index.php?action=history&amp;feed=atom&amp;title=Terraform-provider-proxmox"/>
	<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Terraform-provider-proxmox&amp;action=history"/>
	<updated>2026-04-17T01:50:14Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.linuxsa.org/index.php?title=Terraform-provider-proxmox&amp;diff=1055&amp;oldid=prev</id>
		<title>Evan：​/* prepare */</title>
		<link rel="alternate" type="text/html" href="https://wiki.linuxsa.org/index.php?title=Terraform-provider-proxmox&amp;diff=1055&amp;oldid=prev"/>
		<updated>2023-10-08T05:56:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;prepare&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;terraform 和proxmox的笔记终于有空放上wiki了 &lt;br /&gt;
&lt;br /&gt;
=prepare=&lt;br /&gt;
Proxmox VE,terraform  已安装  我们这里用了 Cloud-Init ,其实还可以ISO的  [https://github.com/Telmate/terraform-provider-proxmox/blob/master/docs/resources/vm_qemu.md 请见]&lt;br /&gt;
&lt;br /&gt;
相关下载 https://cloud-images.ubuntu.com/&lt;br /&gt;
&lt;br /&gt;
Oct 08 2023 update&lt;br /&gt;
&lt;br /&gt;
https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img&lt;br /&gt;
&lt;br /&gt;
=创建Ubuntu(Cloud-Init) Template=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#执行下面的命令创建一个虚拟机&lt;br /&gt;
#这里 9000 只是一个ID 你只要写个你的 proxmox还没用的ID就行了&lt;br /&gt;
qm create 9000 --name &amp;quot;ubuntu-2004-cloudinit-template&amp;quot; --memory 1024 --cores 1 --net0 virtio,bridge=vmbr0&lt;br /&gt;
qm importdisk 9000 ubuntu-20.04-server-cloudimg-amd64.img local-lvm&lt;br /&gt;
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0&lt;br /&gt;
qm set 9000 --boot c --bootdisk scsi0&lt;br /&gt;
qm set 9000 --ide2 local-lvm:cloudinit&lt;br /&gt;
qm set 9000 --serial0 socket --vga serial0&lt;br /&gt;
qm set 9000 --agent enabled=1&lt;br /&gt;
&lt;br /&gt;
#将刚创建好的虚拟机转换成模板&lt;br /&gt;
qm template 9000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= API token=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pveum user add terraform-evan@pve &lt;br /&gt;
#我这里权限给得比较大 &lt;br /&gt;
pveum aclmod / -user terraform-evan@pve -role Administrator&lt;br /&gt;
pveum user token add terraform-evan@pve terraform-token --privsep=0&lt;br /&gt;
──────────────┬──────────────────────────────────────┐&lt;br /&gt;
│ key          │ value                                │&lt;br /&gt;
╞══════════════╪══════════════════════════════════════╡&lt;br /&gt;
│ full-tokenid │ terraform-evan@pve!terraform-token   │&lt;br /&gt;
├──────────────┼──────────────────────────────────────┤&lt;br /&gt;
│ info         │ {&amp;quot;privsep&amp;quot;:&amp;quot;0&amp;quot;}                      │&lt;br /&gt;
├──────────────┼──────────────────────────────────────┤&lt;br /&gt;
│ value        │ 48ad9bae-98ad-49f5-a6d3-ac08f8700000 │&lt;br /&gt;
└──────────────┴──────────────────────────────────────┘&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=terraform=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#用户名什么的 写在变量文件&lt;br /&gt;
 cat main.tf&lt;br /&gt;
terraform {&lt;br /&gt;
  required_providers {&lt;br /&gt;
    proxmox = {&lt;br /&gt;
      source = &amp;quot;Telmate/proxmox&amp;quot;&lt;br /&gt;
      version = &amp;quot;2.9.11&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
provider &amp;quot;proxmox&amp;quot; {&lt;br /&gt;
  pm_tls_insecure     = true&lt;br /&gt;
  pm_api_url          = &amp;quot;https://192.168.10.8:8006/api2/json&amp;quot;&lt;br /&gt;
  pm_api_token_id     = &amp;quot;terraform-evan@pve!terraform-token&amp;quot;&lt;br /&gt;
  pm_api_token_secret = &amp;quot;48ad9bae-98ad-49f5-a6d3-ac08f8726020&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
resource &amp;quot;proxmox_vm_qemu&amp;quot; &amp;quot;proxmox-ubuntu&amp;quot; {&lt;br /&gt;
  # 创建数量填写这里&lt;br /&gt;
  count = 4 &lt;br /&gt;
  name  = &amp;quot;ubuntu-2004-${count.index + 1}&amp;quot;&lt;br /&gt;
  desc  = &amp;quot;Ubuntu develop environment&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # 节点名&lt;br /&gt;
  #target_node = &amp;quot;pve&amp;quot;&lt;br /&gt;
  target_node = var.proxmox_host&lt;br /&gt;
&lt;br /&gt;
  # cloud-init template&lt;br /&gt;
  #clone = &amp;quot;ubuntu-2004-cloudinit-template&amp;quot;&lt;br /&gt;
  clone = var.template_name&lt;br /&gt;
&lt;br /&gt;
  # 关机 guest agent&lt;br /&gt;
  agent   = 0&lt;br /&gt;
  os_type = &amp;quot;ubuntu&amp;quot;&lt;br /&gt;
  onboot  = true&lt;br /&gt;
  # CPU&lt;br /&gt;
  cores    = 2&lt;br /&gt;
  sockets  = 2&lt;br /&gt;
  cpu      = &amp;quot;host&amp;quot;&lt;br /&gt;
  # 内存M&lt;br /&gt;
  memory   = 4384&lt;br /&gt;
  scsihw   = &amp;quot;virtio-scsi-pci&amp;quot;&lt;br /&gt;
  bootdisk = &amp;quot;scsi0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # 硬盘设置，因计算的方式 101580M 代替 100G&lt;br /&gt;
  disk {&lt;br /&gt;
    slot     = 0&lt;br /&gt;
    size     = &amp;quot;28G&amp;quot;&lt;br /&gt;
    type     = &amp;quot;scsi&amp;quot;&lt;br /&gt;
    storage  = &amp;quot;local-lvm&amp;quot;&lt;br /&gt;
    iothread = 1&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # 网络&lt;br /&gt;
  network {&lt;br /&gt;
    model  = &amp;quot;virtio&amp;quot;&lt;br /&gt;
    bridge = &amp;quot;vmbr0&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  lifecycle {&lt;br /&gt;
    ignore_changes = [&lt;br /&gt;
      network,&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
  # 记住这里要使用IP CIDR。因为只创建一个虚拟机，虚拟机的 IP 是 192.168.1.41。如果要创建多个虚拟机的话，IP 将会是 .91、.92、.93 。&lt;br /&gt;
  #ipconfig0 = &amp;quot;ip=192.168.10.4${count.index + 1}/24,gw=192.168.10.1&amp;quot;&lt;br /&gt;
  ipconfig0 = &amp;quot;ip=192.168.10.3${count.index + 1}/24,gw=192.168.10.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # 用户名和 SSH key&lt;br /&gt;
  #ciuser  = &amp;quot;evan&amp;quot;&lt;br /&gt;
  ciuser  = var.myuser&lt;br /&gt;
  sshkeys = &amp;lt;&amp;lt;EOF&lt;br /&gt;
  ${var.ssh_key}&lt;br /&gt;
  EOF&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
cat vars.tf &lt;br /&gt;
&lt;br /&gt;
variable &amp;quot;myuser&amp;quot; {&lt;br /&gt;
    default = &amp;quot;evan&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
variable &amp;quot;ssh_key&amp;quot; {&lt;br /&gt;
  default = &amp;quot;ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTR3R8Bx1+koK8bJzoYMpGU1S8DTDnptWqrTCOMhrVlQH0I9ll/3ZAcD53JdzRXVLe1NqE6q5iTFO+HY5qxWfM0+gerJQlb1e5cb1+lUFhRVglpwYlxNSVXaJFeiCLswcnGcmqR1RnGAGhcf7ncslz/BLuxFndgLqhU04zj9ISJWYh+36vttqg9tP6a40MhmeWVPOuIGNlDDVVUyjxIepn83xr0PJyILLXTBH+OiQppO1bljguig67twUBsh/FW1Wdvuw33PjkgXmKLDVaKS2S0CtC9dPOrp0afS/fsKrIu16o/VtfSrNrTmsTCmE95Ug25yOS+WuVaU19Gauez2mj lx&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
variable &amp;quot;proxmox_host&amp;quot; {&lt;br /&gt;
    default = &amp;quot;pve&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
variable &amp;quot;template_name&amp;quot; {&lt;br /&gt;
    default = &amp;quot;ubuntu-2004-cloudinit-template&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#original notes&lt;br /&gt;
#cat main.tf&lt;br /&gt;
terraform {&lt;br /&gt;
  required_providers {&lt;br /&gt;
    proxmox = {&lt;br /&gt;
      source = &amp;quot;Telmate/proxmox&amp;quot;&lt;br /&gt;
      version = &amp;quot;2.9.11&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
provider &amp;quot;proxmox&amp;quot; {&lt;br /&gt;
  pm_tls_insecure     = true&lt;br /&gt;
  pm_api_url          = &amp;quot;https://192.168.10.8:8006/api2/json&amp;quot;&lt;br /&gt;
  pm_api_token_id     = &amp;quot;terraform-evan@pve!terraform-token&amp;quot;&lt;br /&gt;
  pm_api_token_secret = &amp;quot;48ad9bae-98ad-49f5-a6d3-ac08f8000000&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
resource &amp;quot;proxmox_vm_qemu&amp;quot; &amp;quot;proxmox-ubuntu&amp;quot; {&lt;br /&gt;
  # 创建数量填写这里&lt;br /&gt;
  count = 4 &lt;br /&gt;
  #name  = &amp;quot;ubuntu-2004-${count.index + 1}&amp;quot;&lt;br /&gt;
  name  = &amp;quot;ubuntu-2004-${count.index + 1}&amp;quot;&lt;br /&gt;
  desc  = &amp;quot;Ubuntu develop environment&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # 节点名&lt;br /&gt;
  target_node = &amp;quot;pve&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # cloud-init template&lt;br /&gt;
  clone = &amp;quot;ubuntu-2004-cloudinit-template&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # 关机 guest agent&lt;br /&gt;
  agent   = 0&lt;br /&gt;
  os_type = &amp;quot;ubuntu&amp;quot;&lt;br /&gt;
  onboot  = true&lt;br /&gt;
  # CPU&lt;br /&gt;
  cores    = 2&lt;br /&gt;
  sockets  = 2&lt;br /&gt;
  cpu      = &amp;quot;host&amp;quot;&lt;br /&gt;
  # 内存M&lt;br /&gt;
  memory   = 4384&lt;br /&gt;
  scsihw   = &amp;quot;virtio-scsi-pci&amp;quot;&lt;br /&gt;
  bootdisk = &amp;quot;scsi0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # 硬盘设置，因计算的方式 101580M 代替 100G&lt;br /&gt;
  disk {&lt;br /&gt;
    slot     = 0&lt;br /&gt;
    size     = &amp;quot;28G&amp;quot;&lt;br /&gt;
    type     = &amp;quot;scsi&amp;quot;&lt;br /&gt;
    storage  = &amp;quot;local-lvm&amp;quot;&lt;br /&gt;
    iothread = 1&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  # 网络&lt;br /&gt;
  network {&lt;br /&gt;
    model  = &amp;quot;virtio&amp;quot;&lt;br /&gt;
    bridge = &amp;quot;vmbr0&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  lifecycle {&lt;br /&gt;
    ignore_changes = [&lt;br /&gt;
      network,&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
  # 记住这里要使用IP CIDR。因为只创建一个虚拟机，虚拟机的 IP 是 192.168.1.41。如果要创建多个虚拟机的话，IP 将会是 .91、.92、.93 。&lt;br /&gt;
  #ipconfig0 = &amp;quot;ip=192.168.10.4${count.index + 1}/24,gw=192.168.10.1&amp;quot;&lt;br /&gt;
  ipconfig0 = &amp;quot;ip=192.168.10.3${count.index + 1}/24,gw=192.168.10.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # 用户名和 SSH key&lt;br /&gt;
  ciuser  = &amp;quot;evan&amp;quot;&lt;br /&gt;
  sshkeys = &amp;lt;&amp;lt;EOF&lt;br /&gt;
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTR3R8Bx1stridoYMpGU1S8DTDnptWqrTCOMhrVlQH0I9ll/3ZAcD53JdzRXVLe1NqE6q5iTFO+HY5qxWfM0+gerJQlb1e5cb1+lUFhRVglpwYlxNSVXaJFeiCLswcnGcmqR1RnGAGhcf7ncslz/BLuxFndgLqhU04zj9ISJWYh+36vttqg9tP6a40MhmeWVPOuIGNlDDVVUyjxIepn83xr0PJyILLXTBH+OiQxxxguig67twUBsh/FW1Wdvuw33PjkgXmKLDVaKS2S0CtC9dPOrp0afS/fsKrIu16o/VtfSrNrTmsTCmE95Ug25yOS+WuVaU19Gauez2mj lx&lt;br /&gt;
  EOF&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== 运行==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#init&lt;br /&gt;
terraform init&lt;br /&gt;
可以使用 terraform fmt 和 terraform validate 对配置文件进行格式化和校验。&lt;br /&gt;
&lt;br /&gt;
然后执行 terraform apply 并输入 yes 开始创建虚拟机&lt;br /&gt;
&lt;br /&gt;
#Destroy previously-created infrastructure&lt;br /&gt;
terraform destory&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=改进=&lt;br /&gt;
使用 qm 创建 Ubuntu Cloud-Init Template,有可能要找个全 terraform的&lt;br /&gt;
通过 cloud-init 来对虚拟机进行高级定制 各种lib并没有安装 ,默认是非常干净的ubuntu&lt;br /&gt;
&lt;br /&gt;
还有,这两个文章的写作格式非常的值得学习&lt;br /&gt;
&lt;br /&gt;
[https://tcude.net/creating-a-vm-template-in-proxmox/ Creating a VM Template in Proxmox]&lt;br /&gt;
&lt;br /&gt;
[https://tcude.net/using-terraform-with-proxmox/ Using Terraform with Proxmox]&lt;br /&gt;
&lt;br /&gt;
=trouble shooting =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1.ubuntu terraform init &lt;br /&gt;
Terraform initialized in an empty directory!&lt;br /&gt;
&lt;br /&gt;
#写多了一个 t ttf &lt;br /&gt;
➜  ubuntu ls &lt;br /&gt;
main.ttf  ubuntu.ttf&lt;br /&gt;
➜  ubuntu mv main.ttf main.tf &lt;br /&gt;
&lt;br /&gt;
2.连不上 gihthub 问题 &lt;br /&gt;
➜  ubuntu terraform init           &lt;br /&gt;
&lt;br /&gt;
Initializing the backend...&lt;br /&gt;
&lt;br /&gt;
Initializing provider plugins...&lt;br /&gt;
- Finding telmate/proxmox versions matching &amp;quot;2.9.13&amp;quot;...&lt;br /&gt;
- Installing telmate/proxmox v2.9.13...&lt;br /&gt;
╷&lt;br /&gt;
│ Error: Failed to install provider&lt;br /&gt;
│ &lt;br /&gt;
│ Error while installing telmate/proxmox v2.9.13: Get&lt;br /&gt;
│ &amp;quot;https://github.com/Telmate/terraform-provider-proxmox/releases/download/v2.9.13/terraform-provider-proxmox_2.9.13_linux_amd64.zip&amp;quot;:&lt;br /&gt;
│ dial tcp 20.205.243.166:443: i/o timeout&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
本地有个 socket5 1081代理  &lt;br /&gt;
&lt;br /&gt;
cat    ~/.ssh/config&lt;br /&gt;
### github.com&lt;br /&gt;
Host github.com&lt;br /&gt;
    Hostname github.com&lt;br /&gt;
    ProxyCommand nc -x localhost:1081 %h %p&lt;br /&gt;
    # git-for-windows 下可以用 connect 代替 nc&lt;br /&gt;
    # ProxyCommand connect -S localhost:1085 %h %p&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. v2.9.13 版本有问题 &lt;br /&gt;
ubuntu terraform apply &lt;br /&gt;
╷&lt;br /&gt;
│ Error: user does not exist or has insufficient permissions on proxmox: ops@pve!terraform-token&lt;br /&gt;
│ &lt;br /&gt;
│   with provider[&amp;quot;registry.terraform.io/telmate/proxmox&amp;quot;],&lt;br /&gt;
│   on main.tf line 10, in provider &amp;quot;proxmox&amp;quot;:&lt;br /&gt;
│   10: provider &amp;quot;proxmox&amp;quot; {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also confirming v2.9.11 of provider works fine&lt;br /&gt;
&lt;br /&gt;
https://github.com/Telmate/terraform-provider-proxmox/issues/703&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
最好看的两个官方文档 &lt;br /&gt;
https://github.com/Telmate/terraform-provider-proxmox&lt;br /&gt;
&lt;br /&gt;
https://github.com/Telmate/terraform-provider-proxmox/blob/master/docs/resources/vm_qemu.md&lt;br /&gt;
&lt;br /&gt;
https://registry.terraform.io/providers/Telmate/proxmox/latest/docs/guides/cloud_init&lt;br /&gt;
&lt;br /&gt;
[https://zhuanlan.zhihu.com/p/453058774 快速搭建实验环境：使用 Terraform 部署 Proxmox 虚拟机]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://juejin.cn/post/7049183628156207141 使用 Terraform 部署 Proxmox 虚拟机 ]&lt;br /&gt;
[[category:devops]] [[category:terraform]]&lt;/div&gt;</summary>
		<author><name>Evan</name></author>
	</entry>
</feed>