community.general.proxmox_kvm 模块 – 在 Proxmox VE 集群中管理 Qemu(KVM) 虚拟机

注意

此模块是 community.general 集合(版本 10.1.0)的一部分。

如果您正在使用 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,请参阅 要求 以获取详细信息。

要在 playbook 中使用它,请指定:community.general.proxmox_kvm

概要

  • 允许您在 Proxmox VE 集群中创建/删除/停止 Qemu(KVM) 虚拟机。

  • 自 community.general 4.0.0 起,不再有默认值。

要求

执行此模块的主机需要满足以下要求。

  • proxmoxer

  • requests

参数

参数

注释

acpi

布尔值

指定是否应启用/禁用 ACPI。

选择

  • false

  • true

agent

字符串

指定是否应启用/禁用 QEMU Guest Agent。

自 community.general 5.5.0 起,这也可以是一个字符串而不是布尔值。这允许指定诸如 enabled=1,fstrim_cloned_disks=1 之类的值。

api_host

字符串 / 必需

指定 Proxmox VE 集群的目标主机。

api_password

字符串

指定用于身份验证的密码。

您可以使用 PROXMOX_PASSWORD 环境变量。

api_port

整数

在 community.general 9.1.0 中添加

指定 Proxmox VE 集群的目标端口。

如果未指定,则使用 PROXMOX_PORT 环境变量。

api_token_id

字符串

在 community.general 1.3.0 中添加

指定令牌 ID。

需要 proxmoxer>=1.1.0 才能工作。

api_token_secret

字符串

在 community.general 1.3.0 中添加

指定令牌密钥。

需要 proxmoxer>=1.1.0 才能工作。

api_user

字符串 / 必需

指定用于身份验证的用户。

archive

字符串

在 community.general 6.5.0 中添加

指定要还原的存档路径(而不是创建或克隆 VM)。

args

字符串

将任意参数传递给 kvm。

此选项仅适用于专家!

autostart

布尔值

指定 VM 在崩溃后是否应自动重启(当前在 PVE API 中被忽略)。

选择

  • false

  • true

balloon

整数

以 MB 为单位指定 VM 的 RAM 大小。

使用零会禁用气球驱动程序。

bios

字符串

指定 BIOS 实现。

选择

  • "seabios"

  • "ovmf"

boot

字符串

指定启动顺序 -> 从软盘启动 a,硬盘 c,CD-ROM d 或网络 n

对于较新版本的 Proxmox VE,请使用类似于 order=scsi0;net0;hostpci0 的启动顺序。

您可以组合设置顺序。

bootdisk

字符串

启用从指定的磁盘启动。格式 (ide|sata|scsi|virtio)\d+

cicustom

字符串

在 community.general 1.3.0 中添加

cloud-init:指定自定义文件以替换启动时自动生成的文件。

cipassword

字符串

在 community.general 1.3.0 中添加

cloud-init:要创建的默认用户的密码。

citype

字符串

在 community.general 1.3.0 中添加

cloud-init:指定 cloud-init 配置格式。

默认值取决于配置的操作系统类型 (ostype)。

我们对 Linux 使用 nocloud 格式,对 Windows 使用 configdrive2

选择

  • "nocloud"

  • "configdrive2"

ciupgrade

布尔值

在 community.general 10.0.0 中添加

cloud-init:在首次启动后执行自动软件包升级。

选择

  • false

  • true

ciuser

字符串

在 community.general 1.3.0 中添加

cloud-init:要创建的默认用户的用户名。

clone

字符串

要克隆的 VM 的名称。如果设置了 vmid,则 clone 可以采用任意值,但需要它来启动克隆。

cores

整数

指定每个插槽的内核数。

cpu

字符串

指定模拟的 CPU 类型。

cpulimit

整数

指定是否限制 CPU 使用率。值 0 表示没有 CPU 限制。

如果计算机有 2 个 CPU,则总共有 ‘2’ 个 CPU 时间

cpuunits

整数

指定 VM 的 CPU 权重。

您可以通过将此项设置为 0 来禁用公平调度器配置

删除

字符串

指定您要删除的设置列表。

描述

字符串

指定虚拟机的描述。仅在配置 Web 界面上使用。

这会作为注释保存在配置文件中。

摘要

字符串

指定如果当前配置文件的 SHA1 摘要不同,是否阻止更改。

这可以用来防止并发修改。

efidisk0

字典

在 community.general 4.5.0 中添加

指定 EFI 磁盘选项的哈希/字典。

需要设置 bios=ovmf 才能使用它。

efitype

字符串

efitype 指示 EFI 磁盘的大小。

2m 将允许 2MB 的 EFI 磁盘,这足以持久化启动顺序和新的启动条目。

4m 将允许 4MB 的 EFI 磁盘,这将额外允许存储 EFI 密钥以启用安全启动

选择

  • "2m"

  • "4m"

格式

字符串

format 是驱动器的后备文件的数据格式。请参阅 Proxmox VE 管理员指南的 Proxmox VE 存储部分(有关最新版本,请参阅 https://pve.proxmox.com/pve-docs/chapter-pvesm.html 中的表 3 至 14),以了解提供的存储后端支持的格式。

pre_enrolled_keys

布尔值

pre_enrolled_keys 指示在创建时是否应在虚拟机固件中注册用于安全启动的 EFI 密钥 1 (0)。

如果设置为 1,则在创建虚拟机时也会默认启用安全启动。

选择

  • false

  • true

存储

字符串

storage 是要在其中创建磁盘的存储标识符。

强制

布尔值

允许强制停止虚拟机。

可以与状态 stoppedrestartedabsent 一起使用。

需要参数 archive

选择

  • false

  • true

格式

字符串

目标驱动器的后备文件的数据格式。

仅与克隆一起使用

对于链接克隆,请使用 format=unspecifiedfull=false

请参阅 Proxmox VE 管理员指南的 Proxmox VE 存储部分(有关最新版本,请参阅 https://pve.proxmox.com/pve-docs/chapter-pvesm.html 中的表 3 至 14),以了解提供的存储后端支持的格式。

不指定此选项等效于将其设置为 unspecified

选择

  • "cloop"

  • "cow"

  • "qcow"

  • "qcow2"

  • "qed"

  • "raw"

  • "vmdk"

  • "未指定"

冻结

布尔值

指定 PVE 是否应在启动时冻结 CPU(使用 “c” 监视器命令启动执行)。

选择

  • false

  • true

完整

布尔值

创建所有磁盘的完整副本。当您克隆普通虚拟机时,始终会这样做。

对于虚拟机模板,我们默认尝试创建链接克隆。

仅与克隆一起使用

选择

  • false

  • true ← (默认)

hookscript

字符串

在 community.general 8.1.0 中添加

在容器生命周期的各个步骤中执行的脚本。

hostpci

字典

指定将主机 pci 设备映射到客户机的哈希/字典。 hostpci='{"key":"value", "key":"value"}'

允许的键为 - hostpci[n],其中 0 ≤ n ≤ N。

允许的值为 - "host="HOSTPCIID[;HOSTPCIID2...]",pcie="1|0",rombar="1|0",x-vga="1|0""

host 参数是主机 PCI 设备直通。HOSTPCIID 语法为 bus:dev.func(十六进制数)。

pcie=boolean default=0 选择 PCI-express 总线(需要 q35 机器模型)。

rombar=boolean default=1 指定设备的 ROM 是否在客户机的内存映射中可见。

x-vga=boolean default=0 启用 vfio-vga 设备支持。

/!\ 此选项允许直接访问主机硬件。因此,不再可能迁移此类计算机 - 请特别小心地使用。

热插拔

字符串

有选择地启用热插拔功能。

这是热插拔功能的逗号分隔列表 networkdiskcpumemoryusb

值 0 完全禁用热插拔,值 1 是默认值 network,disk,usb 的别名。

hugepages

字符串

启用/禁用 hugepages 内存。

选择

  • "任何"

  • "2"

  • "1024"

ide

字典

用作 IDE 硬盘或 CD-ROM 的卷的哈希/字典。 ide='{"key":"value", "key":"value"}'

允许的键为 - ide[n],其中 0 ≤ n ≤ 3。

允许的值为 - "storage:size,format=value"

storage 是要在其中创建磁盘的存储标识符。

size 是磁盘的大小(以 GB 为单位)。

format 是驱动器的后备文件的数据格式。 qcow2|raw|subvol。请参阅 Proxmox VE 管理员指南的 Proxmox VE 存储部分(有关最新版本,请参阅 https://pve.proxmox.com/pve-docs/chapter-pvesm.html 中的表 3 至 14),以了解提供的存储后端支持的格式。

ipconfig

字典

在 community.general 1.3.0 中添加

cloud-init:设置 IP 配置。

网络 IP 配置的哈希/字典。 ipconfig='{"key":"value", "key":"value"}'

允许的键为 - ipconfig[n],其中 0 ≤ n ≤ 网络接口数。

允许的值为 - "[gw=<GatewayIPv4>] [,gw6=<GatewayIPv6>] [,ip=<IPv4Format/CIDR>] [,ip6=<IPv6Format/CIDR>]"

cloud-init:为相应的接口指定 IP 地址和网关。

IP 地址使用 CIDR 表示法,网关是可选的,但它们应位于指定 IP 地址的同一子网中。

特殊字符串 “dhcp” 可用于 IP 地址以使用 DHCP,在这种情况下,不应提供显式网关。

对于 IPv6,可以使用特殊字符串 “auto” 来使用无状态自动配置。

如果启用了 cloud-init 并且既未指定 IPv4 地址也未指定 IPv6 地址,则默认情况下在 IPv4 上使用 dhcp。

键盘

字符串

为 VNC 服务器设置键盘布局。

kvm

布尔值

启用/禁用 KVM 硬件虚拟化。

选择

  • false

  • true

本地时间

布尔值

将实时时钟设置为本地时间。

如果 ostype 指示 Microsoft OS,则默认启用此选项。

选择

  • false

  • true

锁定

字符串

锁定/解锁虚拟机。

选择

  • "迁移"

  • "备份"

  • "快照"

  • "回滚"

机器

字符串

指定 Qemu 机器类型。

类型 => (pc|pc(-i440fx)?-\d+\.\d+(\.pxe)?|q35|pc-q35-\d+\.\d+(\.pxe)?)

内存

整数

实例的内存大小(以 MB 为单位)。

迁移

布尔值

在 community.general 7.0.0 中添加

如果虚拟机位于另一个节点上,则将其迁移到 node

选择

  • false ← (默认)

  • true

migrate_downtime

整数

设置迁移的最大容许停机时间(以秒为单位)。

migrate_speed

整数

设置迁移的最大速度(以 MB/s 为单位)。

值为 0 表示没有限制。

名称

字符串

指定虚拟机名称。名称在集群中可能不是唯一的。

仅当 state=present 时才需要。

使用 state=present,如果未提供 vmid 并且集群中存在具有名称的虚拟机,则不会进行任何更改。

名称服务器

列表 / 元素=字符串

在 community.general 1.3.0 中添加

cloud-init:DNS 服务器 IP 地址。

如果未设置,则使用 PVE 主机设置。

net

字典

虚拟机的网络接口的哈希/字典。 net='{"key":"value", "key":"value"}'

允许的键为 - net[n],其中 0 ≤ n ≤ N。

允许的值为 - "model="XX:XX:XX:XX:XX:XX",bridge="value",rate="value",tag="value",firewall="1|0",trunks="vlanid""

模型是 e1000 e1000-82540em e1000-82544gc e1000-82545em i82551 i82557b i82559er ne2k_isa ne2k_pci pcnet rtl8139 virtio vmxnet3 中的一个。

XX:XX:XX:XX:XX:XX 应该是一个唯一的 MAC 地址。如果未指定,则会自动生成。

bridge 参数可用于自动将接口添加到网桥设备。Proxmox VE 的标准网桥称为 ‘vmbr0’。

选项 rate 用于限制此接口的传入和传出流量带宽。它被指定为浮点数,单位为 “兆字节每秒”。

如果您未指定任何网桥,我们将创建一个 kvm ‘user’ (NAT) 网络设备,该设备提供 DHCP 和 DNS 服务。

newid

整数

克隆的虚拟机 ID。仅用于克隆。

如果未设置 newid,则将从 ProxmoxAPI 获取下一个可用的虚拟机 ID。

node

字符串

Proxmox VE 节点,将在该节点上执行操作。

仅在 state=present 时需要。

对于其他所有状态,它将自动被发现。

numa

字典

NUMA 拓扑的哈希/字典。numa='{"key":"value", "key":"value"}'

允许的键是 - numa[n],其中 0 ≤ n ≤ N。

允许的值是 - "cpu="<id[-id];...>",hostnodes="<id[-id];...>",memory="number",policy="(bind|interleave|preferred“)。

cpus 访问此 NUMA 节点的 CPU。

hostnodes 要使用的主机 NUMA 节点。

memory 此 NUMA 节点提供的内存量。

policy NUMA 分配策略。

numa_enabled

布尔值

启用 NUMA。

选择

  • false

  • true

onboot

布尔值

指定虚拟机是否将在系统启动期间启动。

选择

  • false

  • true

ostype

字符串

指定客户机操作系统。这用于为特定的操作系统启用特殊的优化/功能。

l26 是 Linux 2.6/3.X 内核。

选择

  • “other”

  • “wxp”

  • “w2k”

  • “w2k3”

  • “w2k8”

  • “wvista”

  • “win7”

  • “win8”

  • “win10”

  • “win11”

  • “l24”

  • “l26”

  • “solaris”

parallel

字典

映射主机并行设备的哈希/字典。parallel='{"key":"value", "key":"value"}'

允许的键是 - (parallel[n]),其中 0 ≤ n ≤ 2。

允许的值是 - "/dev/parport\d+|/dev/usb/lp\d+"

pool

字符串

将新虚拟机添加到指定的池。

protection

布尔值

启用/禁用虚拟机的保护标志。这将启用/禁用删除虚拟机和删除磁盘操作。

选择

  • false

  • true

reboot

布尔值

允许重启。如果设置为 true,虚拟机将在重启时退出。

选择

  • false

  • true

revert

字符串

还原挂起的更改。

sata

字典

用作 SATA 硬盘或 CD-ROM 的卷的哈希/字典。sata='{"key":"value", "key":"value"}'

允许的键是 - sata[n],其中 0 ≤ n ≤ 5。

允许的值为 - "storage:size,format=value"

storage 是要在其中创建磁盘的存储标识符。

size 是磁盘的大小(以 GB 为单位)。

format 是驱动器的后备文件的数据格式。 qcow2|raw|subvol。请参阅 Proxmox VE 管理员指南的 Proxmox VE 存储部分(有关最新版本,请参阅 https://pve.proxmox.com/pve-docs/chapter-pvesm.html 中的表 3 至 14),以了解提供的存储后端支持的格式。

scsi

字典

用作 SCSI 硬盘或 CD-ROM 的卷的哈希/字典。scsi='{"key":"value", "key":"value"}'

允许的键是 - scsi[n],其中 0 ≤ n ≤ 13。

允许的值为 - "storage:size,format=value"

storage 是要在其中创建磁盘的存储标识符。

size 是磁盘的大小(以 GB 为单位)。

format 是驱动器的后备文件的数据格式。 qcow2|raw|subvol。请参阅 Proxmox VE 管理员指南的 Proxmox VE 存储部分(有关最新版本,请参阅 https://pve.proxmox.com/pve-docs/chapter-pvesm.html 中的表 3 至 14),以了解提供的存储后端支持的格式。

scsihw

字符串

指定 SCSI 控制器模型。

选择

  • “lsi”

  • “lsi53c810”

  • “virtio-scsi-pci”

  • “virtio-scsi-single”

  • “megasas”

  • “pvscsi”

searchdomains

列表 / 元素=字符串

在 community.general 1.3.0 中添加

cloud-init: 设置 DNS 搜索域。

如果未设置,则使用 PVE 主机设置。

serial

字典

要在虚拟机内部创建的串行设备的哈希/字典。'{"key":"value", "key":"value"}'

允许的键是 - serial[n](str; 必需),其中 0 ≤ n ≤ 3。

允许的值是 - (/dev/.+|socket)

/\! 如果您传递主机串行设备,则无法再迁移此类机器 - 请特别小心使用。

shares

整数

返回用于自动气球化的内存份额数量。(0 - 50000)。

数字越大,此虚拟机获得的内存就越多。

该数字与其他所有正在运行的虚拟机的权重相关。

使用 0 会禁用自动气球化,这意味着没有限制。

skiplock

布尔值

忽略锁

只有 root 用户才能使用此选项。

选择

  • false

  • true

smbios

字符串

指定 SMBIOS 类型 1 字段。

逗号分隔,Base64 编码(可选)的 SMBIOS 属性

[base64=<1|0>] [,family=<Base64 编码字符串>]

[,manufacturer=<Base64 编码字符串>]

[,product=<Base64 编码字符串>]

[,serial=<Base64 编码字符串>]

[,sku=<Base64 编码字符串>]

[,uuid=<UUID>]

[,version=<Base64 编码字符串>]

snapname

字符串

快照的名称。仅用于克隆。

sockets

整数

设置 CPU 插槽的数量。(1 - N)。

sshkeys

字符串

在 community.general 1.3.0 中添加

cloud-init:要分配给默认用户的 SSH 密钥。未测试多密钥,但多行值应该有效。

startdate

字符串

设置实时时钟的初始日期。

日期的有效格式是 'now''2016-09-25T16:01:21''2016-09-25'

startup

字符串

启动和关闭行为。[[order=]\d+] [,up=\d+] [,down=\d+]

Order 是定义常规启动顺序的非负数。

关闭是按相反的顺序完成的。

state

字符串

指示实例的所需状态。

如果 current,将获取虚拟机的当前状态。您可以使用 results.status 访问它

template 在 community.general 8.1.0 中添加。

选择

  • "present" ← (默认)

  • “started”

  • “absent”

  • “stopped”

  • “restarted”

  • “current”

  • “template”

存储

字符串

完整克隆的目标存储。

tablet

布尔值

启用/禁用 USB 平板设备。

选择

  • false

  • true

tags

列表 / 元素=字符串

在 community.general 2.3.0 中添加

要应用于虚拟机实例的标签列表。

标签必须以 [a-z0-9_] 开头,后跟零个或多个以下字符 [a-z0-9_-+.]

标签仅在 Proxmox 6+ 中可用。

target

字符串

目标节点。仅当原始虚拟机位于共享存储上时才允许。

仅与克隆一起使用

tdf

布尔值

启用/禁用时间漂移修复。

选择

  • false

  • true

template

布尔值

启用/禁用模板。

选择

  • false

  • true

timeout

整数

操作的超时时间。

当与 state=stopped 一起使用时,该选项设置虚拟机停止的优雅超时,在此超时之后将强制停止虚拟机。

默认值: 30

tpmstate0

字典

在 community.general 7.1.0 中添加

可信平台模块磁盘选项的哈希/字典。

Windows 11 安装需要 TPM 状态磁盘。

存储

字符串 / 必需

tpmstate0.storage 是创建磁盘的存储标识符。

version

字符串

要使用的 TPM 版本。

选择

  • "1.2"

  • "2.0" ← (默认)

update

布尔值

如果 true,虚拟机将使用新值更新。

由于 API 的操作和安全原因,我禁用了以下参数的更新:netvirtioidesatascsi。例如,更新 net 会更新 MAC 地址,并且 virtio 始终会创建新磁盘... 可以通过将 update_unsafe 设置为 true 来禁用此安全功能。

禁用 pool 的更新。它需要此模块未涵盖的额外 API 端点。

选择

  • false ← (默认)

  • true

update_unsafe

布尔值

在 community.general 8.4.0 中添加

如果 true,则不对参数 netvirtioidesatascsiefidisk0tpmstate0 强制执行限制。请谨慎使用此选项,因为不正确的配置可能会导致永久性数据丢失(例如,磁盘被重新创建)。

选择

  • false ← (默认)

  • true

usb

字典

在 community.general 9.0.0 中添加。

虚拟机 USB 设备的哈希/字典。usb='{"key":"value", "key":"value"}'

允许的键为 - usb[n],其中 0 ≤ n ≤ N。

允许的值为 - host="value|spice",mapping="value",usb3="1|0"

host 可以是 spice 或 USB ID/端口。

选项 mapping 是映射的 USB 设备名称。

选项 usb3 启用 USB 3 支持。

validate_certs

布尔值

如果 false,则不会验证 SSL 证书。

这只应该在个人控制的、使用自签名证书的站点上使用。

选择

  • false ← (默认)

  • true

vcpus

整数

设置热插拔 vcpu 的数量。

vga

字符串

选择 VGA 类型。如果想使用高分辨率模式(>= 1280x1024x16),则应使用选项 “std” 或 “vmware”。

选择

  • "std"

  • "cirrus"

  • "vmware"

  • "qxl"

  • "serial0"

  • "serial1"

  • "serial2"

  • "serial3"

  • "qxl2"

  • "qxl3"

  • "qxl4"

virtio

字典

用作 VIRTIO 硬盘的卷的哈希/字典。virtio='{"key":"value", "key":"value"}'

允许的键为 - virtio[n],其中 0 ≤ n ≤ 15。

允许的值为 - "storage:size,format=value"

storage 是要在其中创建磁盘的存储标识符。

size 是磁盘的大小(以 GB 为单位)。

format 是驱动器的后备文件的数据格式。 qcow2|raw|subvol。请参阅 Proxmox VE 管理员指南的 Proxmox VE 存储部分(有关最新版本,请参阅 https://pve.proxmox.com/pve-docs/chapter-pvesm.html 中的表 3 至 14),以了解提供的存储后端支持的格式。

vmid

整数

指定实例 ID。

如果未设置,将从 ProxmoxAPI 获取下一个可用的 ID。

watchdog

字符串

创建一个虚拟硬件看门狗设备。

属性

属性

支持

描述

action_group

操作组: community.general.proxmox

在 community.general 9.0.0 中添加。

module_defaults 中使用 group/community.general.proxmox 为此模块设置默认值。

check_mode

支持:

可以在 check_mode 中运行,并返回更改状态预测而不修改目标。

diff_mode

支持:

在差异模式下运行时,将返回有关已更改(或可能需要在 check_mode 中更改)的详细信息。

另请参阅

另请参阅

community.general.proxmox_vm_info

检索有关一个或多个 Proxmox VE 虚拟机的信息。

示例

- name: Create new VM with minimal options
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf

- name: Create a VM from archive (backup)
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    archive: backup-storage:backup/vm/140/2023-03-08T06:41:23Z
    name: spynal

- name: Create new VM with minimal options and given vmid
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    vmid: 100

- name: Create new VM with two network interface options
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    net:
      net0: 'virtio,bridge=vmbr1,rate=200'
      net1: 'e1000,bridge=vmbr2'

- name: Create new VM with one network interface, three virto hard disk, 4 cores, and 2 vcpus
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    net:
      net0: 'virtio,bridge=vmbr1,rate=200'
    virtio:
      virtio0: 'VMs_LVM:10'
      virtio1: 'VMs:2,format=qcow2'
      virtio2: 'VMs:5,format=raw'
    cores: 4
    vcpus: 2

- name: Create VM with 1 10GB SATA disk and an EFI disk, with Secure Boot disabled by default
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    sata:
      sata0: 'VMs_LVM:10,format=raw'
    bios: ovmf
    efidisk0:
      storage: VMs_LVM_thin
      format: raw
      efitype: 4m
      pre_enrolled_keys: false

- name: Create VM with 1 10GB SATA disk and an EFI disk, with Secure Boot enabled by default
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    sata:
      sata0: 'VMs_LVM:10,format=raw'
    bios: ovmf
    efidisk0:
      storage: VMs_LVM
      format: raw
      efitype: 4m
      pre_enrolled_keys: 1

- name: >
    Clone VM with only source VM name.
    The VM source is spynal.
    The target VM name is zavala
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    clone: spynal
    name: zavala
    node: sabrewulf
    storage: VMs
    format: qcow2
    timeout: 500

- name: >
    Create linked clone VM with only source VM name.
    The VM source is spynal.
    The target VM name is zavala
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    clone: spynal
    name: zavala
    node: sabrewulf
    storage: VMs
    full: false
    format: unspecified
    timeout: 500

- name: Clone VM with source vmid and target newid and raw format
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    clone: arbitrary_name
    vmid: 108
    newid: 152
    name: zavala
    node: sabrewulf
    storage: LVM_STO
    format: raw
    timeout: 300

- name: Create new VM and lock it for snapshot
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    lock: snapshot

- name: Create new VM and set protection to disable the remove VM and remove disk operations
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    protection: true

- name: Create new VM using cloud-init with a username and password
  community.general.proxmox_kvm:
    node: sabrewulf
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    ide:
      ide2: 'local:cloudinit,format=qcow2'
    ciuser: mylinuxuser
    cipassword: supersecret
    searchdomains: 'mydomain.internal'
    nameservers: 1.1.1.1
    net:
      net0: 'virtio,bridge=vmbr1,tag=77'
    ipconfig:
      ipconfig0: 'ip=192.168.1.1/24,gw=192.168.1.1'

- name: Create new VM using Cloud-Init with an ssh key
  community.general.proxmox_kvm:
    node: sabrewulf
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    ide:
      ide2: 'local:cloudinit,format=qcow2'
    sshkeys: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILJkVm98B71lD5XHfihwcYHE9TVpsJmK1vR1JcaU82L+'
    searchdomains: 'mydomain.internal'
    nameservers:
      - '1.1.1.1'
      - '8.8.8.8'
    net:
      net0: 'virtio,bridge=vmbr1,tag=77'
    ipconfig:
      ipconfig0: 'ip=192.168.1.1/24'

- name: Start VM
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    state: started

- name: Stop VM
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    state: stopped

- name: Stop VM with force
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    state: stopped
    force: true

- name: Restart VM
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    state: restarted

- name: Convert VM to template
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    state: template

- name: Convert VM to template (stop VM if running)
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    state: template
    force: true

- name: Remove VM
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    state: absent

- name: Get VM current state
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    state: current

- name: Update VM configuration
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    cores: 8
    memory: 16384
    update: true

- name: Update VM configuration (incl. unsafe options)
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    cores: 8
    memory: 16384
    net:
        net0: virtio,bridge=vmbr1
    update: true
    update_unsafe: true

- name: Delete QEMU parameters
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    delete: 'args,template,cpulimit'

- name: Revert a pending change
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf
    revert: 'template,cpulimit'

- name: Migrate VM on second node
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    name: spynal
    node: sabrewulf-2
    migrate: true

- name: Add hookscript to existing VM
  community.general.proxmox_kvm:
    api_user: root@pam
    api_password: secret
    api_host: helldorado
    vmid: 999
    node: sabrewulf
    hookscript: local:snippets/hookscript.pl
    update: true

返回值

常见的返回值记录在此处,以下是此模块特有的字段

描述

msg

字符串

一条简短的消息

返回: 总是

示例: "VM kropta with vmid = 110 is running"

status

字符串

当前的虚拟机状态。

返回: 成功、非克隆、非缺失、非更新

示例: "running"

vmid

整数

虚拟机的 vmid。

返回: 成功

示例: 115

作者

  • Abdoul Bah (@helldorado) <bahabdoul at gmail.com>