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 中被忽略)。 选择
|
|
以 MB 为单位指定 VM 的 RAM 大小。 使用零会禁用气球驱动程序。 |
|
指定 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” 监视器命令启动执行)。 选择
|
|
创建所有磁盘的完整副本。当您克隆普通虚拟机时,始终会这样做。 对于虚拟机模板,我们默认尝试创建链接克隆。 仅与克隆一起使用 选择
|
|
在容器生命周期的各个步骤中执行的脚本。 |
|
指定将主机 pci 设备映射到客户机的哈希/字典。 允许的键为 - 允许的值为 -
/!\ 此选项允许直接访问主机硬件。因此,不再可能迁移此类计算机 - 请特别小心地使用。 |
|
有选择地启用热插拔功能。 这是热插拔功能的逗号分隔列表 值 0 完全禁用热插拔,值 1 是默认值 |
|
启用/禁用 hugepages 内存。 选择
|
|
用作 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 OS,则默认启用此选项。 选择
|
|
锁定/解锁虚拟机。 选择
|
|
指定 Qemu 机器类型。 类型 => |
|
实例的内存大小(以 MB 为单位)。 |
|
设置迁移的最大容许停机时间(以秒为单位)。 |
|
设置迁移的最大速度(以 MB/s 为单位)。 值为 0 表示没有限制。 |
|
指定虚拟机名称。名称在集群中可能不是唯一的。 仅当 使用 |
|
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](str; 必需),其中 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 中添加。 |
在 |
|
支持: 无 |
可以在 |
|
支持: 无 |
在差异模式下运行时,将返回有关已更改(或可能需要在 |
另请参阅
另请参阅
- 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。 返回: 成功 示例: |