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。 选择
|
|
指定是否应启用/禁用 QEMU Guest Agent。 自 community.general 5.5.0 起,这也可以是字符串而不是布尔值。这允许指定诸如 |
|
指定 Proxmox VE 集群的目标主机。 |
|
指定用于身份验证的密码。 您可以使用 |
|
指定 Proxmox VE 集群的目标端口。 如果未指定,则使用 |
|
指定令牌 ID。 需要 |
|
指定令牌密钥。 需要 |
|
指定用于身份验证的用户。 |
|
指定要还原的存档路径(而不是创建或克隆 VM)。 |
|
将任意参数传递给 kvm。 此选项仅适用于专家! |
|
指定 VM 是否应在崩溃后自动重启(当前在 PVE API 中被忽略)。 选择
|
|
指定 VM 的 RAM 量(以 MB 为单位)。 使用零禁用气球驱动程序。 |
|
指定 BIOS 实现。 选择
|
|
指定启动顺序 -> 从软盘 对于较新版本的 Proxmox VE,请使用类似 您可以组合以设置顺序。 |
|
允许从指定磁盘启动。格式为 |
|
cloud-init:指定自定义文件以替换启动时自动生成的文件。 |
|
cloud-init:要创建的默认用户的密码。 |
|
cloud-init:指定 cloud-init 配置格式。 默认值取决于配置的操作系统类型 ( 对于 Linux,我们使用 选择
|
|
cloud-init:在第一次启动后自动进行软件包升级。 选择
|
|
cloud-init:要创建的默认用户的用户名。 |
|
指定每个插槽的内核数。 |
|
指定模拟的 CPU 类型。 |
|
指定是否限制 CPU 使用率。值 0 表示不限制 CPU。 如果计算机有 2 个 CPU,则共有“2”个 CPU 时间 |
|
指定 VM 的 CPU 权重。 您可以通过将此值设置为 0 来禁用公平调度器配置 |
|
指定要删除的设置列表。 |
|
指定虚拟机的描述。仅在配置 Web 界面上使用。 这会作为注释保存在配置文件中。 |
|
指定如果当前配置文件的 SHA1 摘要不同,是否阻止更改。 这可以用于防止并发修改。 |
|
指定 EFI 磁盘选项的哈希/字典。 需要将 |
|
选择
|
|
|
|
如果设置为 选择
|
|
|
|
目标驱动器后备文件的数据格式。 仅与克隆一起使用 对于链接克隆,请使用 请参阅 Proxmox VE 管理员指南的 Proxmox VE 存储部分(有关最新版本,请参阅 https://pve.proxmox.com/pve-docs/chapter-pvesm.html 中的表 3 到 14),以了解提供的存储后端支持的格式。 不指定此选项等效于将其设置为 选择
|
|
指定 PVE 是否应在启动时冻结 CPU(使用“c”监视器命令开始执行)。 选择
|
|
创建所有磁盘的完整副本。克隆普通 VM 时始终这样做。 对于 VM 模板,默认情况下我们尝试创建链接克隆。 仅与克隆一起使用 选择
|
|
在容器生命周期的各个步骤中执行的脚本。 |
|
指定将主机 PCI 设备映射到访客机的哈希/字典。 允许的键是 - 允许的值是 -
/!\ 此选项允许直接访问主机硬件。因此,不再可能迁移此类计算机 - 请特别小心地使用。 |
|
选择性地启用热插拔功能。 这是热插拔功能的逗号分隔列表 值 0 完全禁用热插拔,值 1 是默认值 |
|
启用/禁用大页面内存。 选择
|
|
用作 IDE 硬盘或 CD-ROM 的卷的哈希/字典。 允许的键是 - 允许的值是 -
|
|
cloud-init:设置 IP 配置。 网络 IP 配置的哈希/字典。 允许的键是 - 允许的值是 - cloud-init:为相应的接口指定 IP 地址和网关。 IP 地址使用 CIDR 表示法,网关是可选的,但它们应与指定的 IP 地址位于同一子网中。 特殊字符串“dhcp”可用于 IP 地址以使用 DHCP,在这种情况下,不应提供显式网关。 对于 IPv6,可以使用特殊字符串“auto”来使用无状态自动配置。 如果启用了 cloud-init,并且既未指定 IPv4 地址也未指定 IPv6 地址,则默认在 IPv4 上使用 dhcp。 |
|
设置 VNC 服务器的键盘布局。 |
|
启用/禁用 KVM 硬件虚拟化。 选择
|
|
将实时时钟设置为本地时间。 如果 ostype 指示 Microsoft 操作系统,则默认启用此选项。 选择
|
|
锁定/解锁虚拟机。 选择
|
|
指定 Qemu 机器类型。 类型 => |
|
实例的内存大小(以 MB 为单位)。 |
|
设置迁移允许的最大停机时间(以秒为单位)。 |
|
设置迁移的最大速度(以 MB/s 为单位)。 值 0 表示没有限制。 |
|
指定 VM 名称。名称在集群中可能不是唯一的。 仅当 使用 |
|
cloud-init:DNS 服务器 IP 地址。 如果未设置,则使用 PVE 主机设置。 |
|
虚拟机网络接口的哈希/字典。 允许的键是 - 允许的值是 - 模型是以下之一:
选项 如果您没有指定网桥,我们将创建一个 kvm 'user' (NAT) 网络设备,它提供 DHCP 和 DNS 服务。 |
|
克隆的虚拟机 ID。仅用于克隆。 如果未设置 newid,将从 ProxmoxAPI 获取下一个可用的虚拟机 ID。 |
|
NUMA 拓扑的哈希/字典。 允许的键是 - 允许的值是 -
|
|
启用 NUMA。 选择
|
|
指定虚拟机是否在系统启动期间启动。 选择
|
|
指定客户机操作系统。这用于为特定操作系统启用特殊优化/功能。 l26 是 Linux 2.6/3.X 内核。 选择
|
|
映射主机并行设备的哈希/字典。 允许的键是 - (parallel[n]),其中 0 ≤ n ≤ 2。 允许的值是 - |
|
将新虚拟机添加到指定的池中。 |
|
启用/禁用虚拟机的保护标志。这将启用/禁用删除虚拟机和删除磁盘操作。 选择
|
|
允许重启。如果设置为 选择
|
|
恢复挂起的更改。 |
|
用作 SATA 硬盘或 CD-ROM 的卷的哈希/字典。 允许的键是 - 允许的值是 -
|
|
用作 SCSI 硬盘或 CD-ROM 的卷的哈希/字典。 允许的键是 - 允许的值是 -
|
|
指定 SCSI 控制器型号。 选择
|
|
cloud-init:设置 DNS 搜索域。 如果未设置,则使用 PVE 主机设置。 |
|
要在虚拟机内部创建的串行设备的哈希/字典。 允许的键是 - serial[n](字符串;必填),其中 0 ≤ n ≤ 3。 允许的值是 - /! 如果您传递主机串行设备,则无法再迁移此类计算机 - 请特别小心使用。 |
|
返回用于自动内存气球的内存份额量。(0 - 50000)。 数字越大,此虚拟机获得的内存就越多。 该数字是相对于所有其他正在运行的虚拟机的权重的。 使用 0 会禁用自动内存气球,这意味着没有限制。 |
|
忽略锁定 只有 root 用户允许使用此选项。 选择
|
|
指定 SMBIOS 类型 1 字段。 逗号分隔,Base64 编码(可选)的 SMBIOS 属性
|
|
快照的名称。仅用于克隆。 |
|
设置 CPU 插槽的数量。(1 - N)。 |
|
cloud-init:要分配给默认用户的 SSH 密钥。尚未测试多个密钥,但多行值应该有效。 |
|
设置实时时钟的初始日期。 日期的有效格式为 |
|
启动和关闭行为。 Order 是一个非负数,定义了常规启动顺序。 关闭以相反的顺序完成。 |
|
指示实例的所需状态。 如果
选择
|
|
完整克隆的目标存储。 |
|
启用/禁用 USB 平板设备。 选择
|
|
要应用于虚拟机实例的标签列表。 标签必须以 标签仅在 Proxmox 6+ 中可用。 |
|
目标节点。仅当原始虚拟机位于共享存储上时才允许。 仅与克隆一起使用 |
|
启用/禁用时间漂移修复。 选择
|
|
启用/禁用模板。 选择
|
|
可信平台模块磁盘的选项的哈希/字典。 Windows 11 安装需要 TPM 状态磁盘。 |
|
|
|
要使用的 TPM 版本。 选择
|
|
虚拟机 USB 设备的哈希/字典。 允许的键是 - 允许的值是 - host 要么是 选项 选项 |
|
如果为 这应该仅在个人控制的站点上使用自签名证书时使用。 选择
|
|
设置热插拔 vcpu 的数量。 |
|
选择 VGA 类型。如果要使用高分辨率模式 (>= 1280x1024x16),则应使用选项“std”或“vmware”。 选择
|
|
用作 VIRTIO 硬盘的卷的哈希/字典。 允许的键是 - 允许的值是 -
|
|
指定实例 ID。 如果未设置,将从 ProxmoxAPI 获取下一个可用 ID。 |
|
创建虚拟硬件看门狗设备。 |
属性
属性 |
支持 |
描述 |
---|---|---|
操作组: community.general.proxmox 在 community.general 9.0.0 中添加 |
在 |
|
支持:无 |
可以在 |
|
支持:无 |
在 diff 模式下,将返回有关已更改的内容(或可能需要在 |
另请参阅
另请参阅
- 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
返回值
通用返回值记录在此处 此处,以下是此模块独有的字段
键 |
描述 |
---|---|
简短消息 返回: 总是 示例: |
|
当前虚拟机状态。 返回: 成功,非克隆,非不存在,非更新 示例: |
|
虚拟机 vmid。 返回: 成功 示例: |