azure.azcollection.azure_rm_virtualmachine 模块 – 管理 Azure 虚拟机
注意
此模块是 azure.azcollection 集合(版本 3.1.0)的一部分。
如果您正在使用 ansible
包,您可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install azure.azcollection
。您需要进一步的要求才能使用此模块,有关详细信息,请参阅要求。
要在 playbook 中使用它,请指定:azure.azcollection.azure_rm_virtualmachine
。
azure.azcollection 0.1.2 中的新增功能
概要
在 Azure 上管理和配置虚拟机 (VM) 和相关资源。
需要包含至少一个虚拟网络(其中至少有一个子网)的资源组。
支持来自 Azure 市场的映像,可以使用 azure.azcollection.azure_rm_virtualmachineimage_info 发现这些映像。
自 Ansible 2.5 起支持自定义映像。
要在 Linux 映像上使用 *custom_data*,该映像必须启用 cloud-init。如果未启用 cloud-init,则会忽略 *custom_data*。
要求
执行此模块的主机需要以下要求。
python >= 2.7
执行此模块的主机必须通过 galaxy 安装 azure.azcollection 集合
必须通过 pip 在执行来自 azure.azcollection 的模块的主机上安装集合的 requirements.txt 中列出的所有 python 包
完整的安装说明可以在https://galaxy.ansible.com/azure/azcollection找到
参数
参数 |
注释 |
---|---|
接受需要它的市场映像的条款。 只有 Azure 服务管理员/帐户管理员用户才能从市场购买映像。 仅当指定 *plan* 时有效。 选项
|
|
Active Directory 用户名。当使用 Active Directory 用户而不是服务主体进行身份验证时使用。 |
|
启用或禁用虚拟机上的功能。 |
|
该标志启用或禁用在 VM 上使用一个或多个具有 UltraSSD_LRS 存储帐户类型的托管数据磁盘的功能。 只有启用此属性,才能将具有 UltraSSD_LRS 存储帐户类型的托管磁盘添加到虚拟机集中。 选项
|
|
Azure AD 授权 URL。当使用用户名/密码进行身份验证,并具有自己的 ADFS 授权时使用。 |
|
管理员用户名的密码。 如果 *os_type=Linux* 并且通过设置 *ssh_password_enabled=false* 禁用 SSH 密码身份验证,则不是必需的。 |
|
用于在创建后访问 VM 的管理员用户名。 创建 VM 时是必需的。 |
|
VM 是已分配还是已取消分配,仅在 *state=present* 时有用。 选项
|
|
选择在与 Azure 服务通信时使用的 API 配置文件。默认值 默认值: |
|
用于控制标签字段是规范的还是仅附加到现有标签。 当为规范时,标签参数中未找到的任何标签都将从对象的元数据中删除。 选项
|
|
控制用于身份验证的凭据的来源。 也可以通过 当设置为 当设置为 当设置为 当设置为 当设置为 在 Ansible 2.6 中添加了 选项
|
|
要将 VM 添加到的现有可用性集的名称或 ID。*availability_set* 应与 VM 位于同一资源组中。 |
|
管理 VM 的启动诊断设置。 启动诊断包括串行控制台和远程控制台屏幕截图。 |
|
指示是否启用启动诊断的标志。 选项
|
|
存储帐户所在的资源组。 与 type 互斥。 |
|
用于启动诊断的现有存储帐户的名称。 如果未指定,则使用上一级定义的 storage_account_name。 如果未在任何地方指定存储帐户,并且 与 type 互斥。 |
|
存储帐户应由 Azure 管理还是自定义存储帐户 它与子选项 storage_account 和 resource_group 互斥。 选项
|
|
要关联的容量预留组的名称或 ID。 |
|
要关联的容量预留组的 ID。 |
|
要关联的容量预留组的名称。 |
|
要关联的容量预留组的资源组。 |
|
控制 Azure 端点的证书验证行为。默认情况下,所有模块都会验证服务器证书,但是当使用 HTTPS 代理或针对 Azure Stack 时,可能需要通过传递 选项
|
|
Azure 客户端 ID。使用服务主体或托管标识 (msi) 进行身份验证时使用。 也可以通过 |
|
对于美国公共云以外的云环境,可以使用环境名称(由 Azure Python SDK 定义,例如 默认值: |
|
是否创建网络安全组并将其附加到网络接口。 选项
|
|
提供给虚拟机并由 仅在启用 请参考 https://docs.microsoft.com/zh-cn/azure/virtual-machines/linux/using-cloud-init#cloud-init-overview 获取可使用 cloud-init 的映像。 要在 Linux 映像上启用 cloud-init,请按照 https://docs.microsoft.com/zh-cn/azure/virtual-machines/linux/cloudinit-prepare-custom-image 操作。 |
|
描述数据磁盘列表。 使用 azure.azcollection.azure_rm_manageddisk 管理特定磁盘。 |
|
数据磁盘缓存类型。 选项
|
|
数据磁盘的磁盘加密集 ID。 |
|
空白数据磁盘的初始磁盘大小(GB)。 此值不能大于 只有在虚拟机解除分配后才能更改大小。 不确定何时定义了 managed_disk_id。 |
|
数据磁盘的逻辑单元号。 此值用于标识虚拟机中的数据磁盘,因此对于附加到虚拟机的每个数据磁盘,此值必须唯一。 |
|
现有数据磁盘的 ID。 如果指定,将选择附加模式。 |
|
托管数据磁盘类型。 仅当使用托管磁盘创建 OS 磁盘时使用。 选项
|
|
支持创建 VHD Blob 的现有存储帐户的名称。 如果未为新虚拟机指定,则将使用存储类型 仅当使用虚拟硬盘 (VHD) 创建 OS 磁盘时使用。 当未定义 managed_disk_type 时使用。 除非更新 lun,否则无法更新。 |
|
用于保存虚拟机 OS 磁盘映像的存储 Blob 的名称。 必须以“.vhd”结尾。 默认为 name + 时间戳 + lun + ‘.vhd’。 仅当使用虚拟硬盘 (VHD) 创建 OS 磁盘时使用。 当未定义 managed_disk_type 时使用。 除非更新 lun,否则无法更新。 |
|
要在存储帐户中用于存储 VHD Blob 的容器的名称。 如果未指定名称,将创建一个名为“vhds”的默认容器。 仅当使用虚拟硬盘 (VHD) 创建 OS 磁盘时使用。 当未定义 managed_disk_type 时使用。 除非更新 lun,否则无法更新。 默认值: |
|
确定在尝试进行身份验证时是否执行实例发现。将其设置为 true 将完全禁用实例发现和授权验证。此功能旨在用于无法访问元数据端点的情况,例如在私有云或 Azure Stack 中。实例发现过程需要从 https://login.microsoft.com/ 检索授权元数据以验证授权。通过将此值设置为 **True**,将禁用授权验证。因此,务必确保配置的授权主机有效且可信。 通过凭据文件配置文件或 选项
|
|
可以为操作系统磁盘指定的临时磁盘设置的参数。 临时 OS 磁盘仅支持使用托管磁盘的虚拟机实例。 选项
|
|
指定 Azure 竞价型虚拟机的驱逐策略。 需要将优先级设置为“竞价型”。 选项
|
|
在停止虚拟机时使用更大的力度 当 started=false 时设置为 设置为 选项
|
|
虚拟机是否已通用化。 当 state=present 时设置为 通用化虚拟机是不可逆的。 选项
|
|
用于构建虚拟机的映像。 对于自定义映像,为映像的名称。要将搜索范围缩小到特定的资源组,则使用带有键 name 和 resource_group 的字典。 对于社区映像,则使用带有键 community_gallery_image_id 的字典。指定用于虚拟机部署的社区图库映像唯一 ID。 community_gallery_image_id 可以从共享图库映像 GET 调用中获取。 对于 Marketplace 映像,则使用带有键 publisher、offer、sku 和 version 的字典。 将 version=latest 设置为获取给定映像的最新版本。 创建时为必填项。 |
|
映像或磁盘的本地许可。 仅用于包含 Windows Server 操作系统的映像。 要删除所有许可类型设置,请设置为字符串 选项
|
|
指定虚拟机上的 Linux 操作系统设置。 |
|
指定是否应禁用密码身份验证。 选项
|
|
虚拟机的有效 Azure 位置。默认为资源组的位置。 |
|
父参数。 |
|
父参数。 |
|
托管 OS 磁盘类型。 如果定义了,则使用托管磁盘创建 OS 磁盘。 如果未定义,则将使用虚拟硬盘 (VHD) 创建 OS 磁盘。 选项
|
|
指定您愿意为 Azure 竞价型虚拟机/虚拟机规模集支付的最高价格。 此价格以美元为单位。
需要将优先级设置为“竞价型”。 默认值: |
|
虚拟机的名称。 |
|
要添加到虚拟机的网络接口名称。 可以是网络接口的名称字符串或资源 ID。 可以是包含网络接口的 resource_group 和 name 的字典。 如果在创建虚拟机时未提供网络接口名称,则将创建一个默认网络接口。 要创建新的网络接口,必须至少存在一个具有一个子网的虚拟网络。 |
|
当使用虚拟机创建安全组和网络接口时,要在虚拟机的安全组中打开的端口列表。 对于 Linux 主机,默认为允许到端口 22 的入站 TCP 连接。 对于 Windows 主机,默认为打开端口 3389 和 5986。 |
|
OS 磁盘缓存类型。 选项
|
|
OS 磁盘的磁盘加密集 ID。 |
|
OS 磁盘名称。 |
|
OS 磁盘的大小(GB)。 |
|
操作系统的基本类型。 选项
|
|
Active Directory 用户密码。当使用 Active Directory 用户而不是服务主体进行身份验证时使用。 |
|
虚拟机的第三方计费计划。 |
|
计费计划名称。 |
|
产品名称。 |
|
可选的促销代码。 |
|
提供计划的发布者。 |
|
虚拟机的优先级。
选项
|
|
在 ~/.azure/credentials 文件中找到的安全配置文件。 |
|
要关联的邻近放置组的名称或 ID。 |
|
要关联的邻近放置组的 ID。 |
|
要关联的邻近放置组的名称。 |
|
要关联的邻近放置组的资源组。 |
|
虚拟机公共 IP 的分配方法。 仅当未指定网络接口时使用。 当设置为
选项
|
|
当使用 state=absent 删除虚拟机时要删除的关联资源。 要删除与正在删除的虚拟机相关的所有资源,包括自动创建的资源,请设置为 要仅删除在预配正在删除的虚拟机时自动创建的资源,请设置为 要仅删除特定资源,请设置为 任何其他输入将被忽略。 默认值: |
|
包含虚拟机的资源组的名称。 |
|
设置为 选项
|
|
Azure 客户端密钥。当使用服务主体进行身份验证时使用。 |
|
指定虚拟机的安全相关配置文件设置。 |
|
用户可以在请求中使用此属性来启用或禁用虚拟机的宿主机加密。 这将启用所有磁盘的加密,包括宿主机本身的资源/临时磁盘。 选项
|
|
指定虚拟机的 SecurityType。 它设置为 TrustedLaunch 以启用 UefiSettings。 选项
|
|
指定创建虚拟机时使用的安全设置,如安全启动和 vTPM。 |
|
指定是否应在虚拟机上启用安全启动。 选项
|
|
指定是否应在虚拟机上启用 vTPM。 选项
|
|
在内部分配给主机的名称。在 Linux 虚拟机上,这是 创建虚拟机时,short_hostname 默认为 name。 |
|
是否启用或禁用 SSH 密码。 当 os_type=Linux 时,设置为 选项
|
|
对于 os_type=Linux,提供 SSH 密钥列表。 接受一个字典列表,其中每个字典包含两个键,path 和 key_data。 将 path 设置为 authorized_keys 文件的默认位置。例如,path=/home/<admin username>/.ssh/authorized_keys。 将 key_data 设置为公钥的实际值。 |
|
虚拟机是启动还是停止。 设置为 设置为 选项
|
|
虚拟机的状态。 设置为 设置为 不影响电源状态。使用 started/allocated/restarted 参数更改虚拟机的电源状态。 选项
|
|
支持创建 VHD Blob 的存储帐户的名称。 如果未为新虚拟机指定,将使用存储类型 |
|
用于保存虚拟机 OS 磁盘映像的存储 Blob 的名称。 必须以“.vhd”结尾。 如果未指定,则默认为虚拟机名称 + ‘.vhd’。 |
|
要在存储帐户中用于存储 VHD Blob 的容器的名称。 如果未指定,将创建默认容器。 默认值: |
|
虚拟机的子网。 默认为在虚拟网络中找到的第一个子网,或者如果提供了 network_interface_name,则默认为该子网。 如果子网位于另一个资源组中,请使用 virtual_network_resource_group 指定资源组。 |
|
您的 Azure 订阅 ID。 |
|
交换 OS 磁盘参数。 |
|
交换 OS 磁盘的 ID。 |
|
交换 OS 磁盘的名称。 |
|
交换 OS 磁盘的资源组。 |
|
要作为元数据分配给对象的字符串:字符串对的字典。 对象的元数据标记将使用任何提供的值进行更新。 要删除标记,请将 append_tags 选项设置为 false。 目前,Azure DNS 区域和流量管理器服务也不允许在标记中使用空格。 Azure Front Door 不支持使用 Azure Automation 和 Azure CDN 仅支持资源上的 15 个标记。 |
|
Azure 租户 ID。当使用服务主体进行身份验证时使用。 |
|
x509_certificate_path 中指定的私钥的指纹。 当使用服务主体进行身份验证时使用。 如果定义了 x509_certificate_path,则为必填项。 |
|
创建虚拟机时要使用的虚拟网络。 如果未指定,将创建一个新的网络接口并将其分配给资源组中找到的第一个虚拟网络。 与 virtual_network_resource_group 一起使用,将虚拟网络放置在另一个资源组中。 |
|
当使用另一个资源组的虚拟网络创建虚拟机时要使用的资源组。 |
|
虚拟机的标识。 |
|
托管标识的类型 选项
|
|
用户分配的托管标识及其选项 默认值: |
|
如果标识列表必须附加到当前标识 (true),或者如果它必须替换当前标识 (false) 选项
|
|
与虚拟机关联的用户分配的标识 ID 列表 默认值: |
|
有效的 Azure 虚拟机大小值。例如, 选择因订阅和位置而异。检查您的订阅以获取可用的选项。 创建 VM 时是必需的。 |
|
指定虚拟机上的 Windows 操作系统设置。 |
|
指示是否为 Windows 虚拟机启用自动更新。 选项
|
|
指示是否应在虚拟机上预配虚拟机代理。 选项
|
|
虚拟机的 Windows 远程管理配置列表。 |
|
应将证书添加到其中的虚拟机上的证书存储。 指定的证书存储隐式位于 LocalMachine 帐户中。 |
|
已作为机密上传到 Key Vault 的证书的 URL。 |
|
winrm 侦听器的协议。 选项
|
|
包含证书的密钥库的相对 URL。 |
|
用于创建 PEM 格式的服务主体的 X509 证书的路径。 证书必须附加到私钥。 当使用服务主体进行身份验证时使用。 |
|
您的 VM 的可用区列表。 最多可以配置一个可用区。 |
注释
注意
要使用 Azure 进行身份验证,您可以传递参数、设置环境变量、使用存储在 ~/.azure/credentials 中的配置文件,或者在运行任务或 playbook 之前使用
az login
登录。也可以使用服务主体或 Active Directory 用户进行身份验证。
要通过服务主体进行身份验证,请传递 subscription_id、client_id、secret 和 tenant,或者设置环境变量 AZURE_SUBSCRIPTION_ID、AZURE_CLIENT_ID、AZURE_SECRET 和 AZURE_TENANT。
要通过 Active Directory 用户进行身份验证,请传递 ad_user 和 password,或者在环境中设置 AZURE_AD_USER 和 AZURE_PASSWORD。
或者,凭据可以存储在 ~/.azure/credentials 中。这是一个 ini 文件,包含一个 [default] 部分以及以下键:subscription_id、client_id、secret 和 tenant,或者 subscription_id、ad_user 和 password。也可以添加其他配置文件。通过传递 profile 或在环境中设置 AZURE_PROFILE 来指定配置文件。
另请参阅
另请参阅
- 使用 Azure CLI 登录
如何使用
az login
命令进行身份验证。
示例
- name: Create VM with defaults
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm10
admin_username: "{{ username }}"
admin_password: "{{ password }}"
image:
offer: CentOS
publisher: OpenLogic
sku: '7.1'
version: latest
- name: Create an availability set for managed disk vm
azure_rm_availabilityset:
name: avs-managed-disk
resource_group: myResourceGroup
platform_update_domain_count: 5
platform_fault_domain_count: 2
sku: Aligned
- name: Create a VM with managed disk
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: vm-managed-disk
admin_username: "{{ username }}"
availability_set: avs-managed-disk
managed_disk_type: Standard_LRS
image:
offer: 0001-com-ubuntu-server-focal
publisher: canonical
sku: 20_04-lts-gen2
version: latest
vm_size: Standard_D4
- name: Create a VM with existing storage account and NIC
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm002
vm_size: Standard_D4
storage_account: testaccount001
admin_username: "{{ username }}"
ssh_public_keys:
- path: /home/adminUser/.ssh/authorized_keys
key_data: < insert your ssh public key here... >
network_interfaces: testvm001
image:
offer: CentOS
publisher: OpenLogic
sku: '7.1'
version: latest
- name: Create a VM with OS and multiple data managed disks
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm001
vm_size: Standard_D4
managed_disk_type: Standard_LRS
admin_username: "{{ username }}"
ssh_public_keys:
- path: /home/adminUser/.ssh/authorized_keys
key_data: < insert your ssh public key here... >
image:
offer: 0001-com-ubuntu-server-focal
publisher: canonical
sku: 20_04-lts-gen2
version: latest
data_disks:
- lun: 0
managed_disk_id: "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myDisk"
- lun: 1
disk_size_gb: 128
managed_disk_type: Premium_LRS
- name: Create a VM with OS and multiple data storage accounts
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm001
vm_size: Standard_DS1_v2
admin_username: "{{ username }}"
ssh_password_enabled: false
ssh_public_keys:
- path: /home/adminUser/.ssh/authorized_keys
key_data: < insert your ssh public key here... >
network_interfaces: testvm001
storage_container: osdisk
storage_blob: osdisk.vhd
boot_diagnostics:
enabled: true
type: managed
image:
offer: 0001-com-ubuntu-server-focal
publisher: canonical
sku: 20_04-lts-gen2
version: latest
data_disks:
- lun: 0
disk_size_gb: 64
storage_container_name: datadisk1
storage_blob_name: datadisk1.vhd
- lun: 1
disk_size_gb: 128
storage_container_name: datadisk2
storage_blob_name: datadisk2.vhd
- name: Create a VM with a custom image
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm001
vm_size: Standard_DS1_v2
admin_username: "{{ username }}"
admin_password: "{{ password }}"
image: customimage001
- name: Create a VM with a custom image from a particular resource group
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm001
vm_size: Standard_DS1_v2
admin_username: "{{ username }}"
admin_password: "{{ password }}"
image:
name: customimage001
resource_group: myResourceGroup
- name: Create a VM with an image id
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm001
vm_size: Standard_DS1_v2
admin_username: "{{ username }}"
admin_password: "{{ password }}"
image:
id: '{{image_id}}'
- name: Create a VM with spcified OS disk size
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: big-os-disk
admin_username: "{{ username }}"
admin_password: "{{ password }}"
os_disk_size_gb: 512
image:
offer: CentOS
publisher: OpenLogic
sku: '7.1'
version: latest
- name: Create a VM with OS and Plan, accepting the terms
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: f5-nva
admin_username: "{{ username }}"
admin_password: "{{ password }}"
image:
publisher: f5-networks
offer: f5-big-ip-best
sku: f5-bigip-virtual-edition-200m-best-hourly
version: latest
plan:
name: f5-bigip-virtual-edition-200m-best-hourly
product: f5-big-ip-best
publisher: f5-networks
- name: Create a VM with Spot Instance
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm10
vm_size: Standard_D4
priority: Spot
eviction_policy: Deallocate
admin_username: "{{ username }}"
admin_password: "{{ password }}"
image:
offer: CentOS
publisher: OpenLogic
sku: '7.1'
version: latest
- name: Update VM to swap OS disk
azure_rm_virtualmachine:
resource_group: "{{ resource_group }}"
name: "vmforimage{{ rpfx }}"
admin_username: testuser
ssh_password_enabled: false
managed_disk_type: Premium_LRS
ssh_public_keys:
- path: /home/testuser/.ssh/authorized_keys
key_data: "ssh-rsa *******************@qq.com"
vm_size: Standard_D4s_v3
swap_os_disk:
os_disk_name: "{{ os_disk_name }}"
os_disk_resource_group: "{{ os_disk_resource_group }}"
image:
offer: 0001-com-ubuntu-server-focal
publisher: Canonical
sku: 20_04-lts
version: latest
- name: Create VM with cummunity gallery image ID
azure_rm_virtualmachine:
resource_group: "{{ resource_group }}"
name: "communit-image-vm"
admin_username: testuser
ssh_password_enabled: false
managed_disk_type: Premium_LRS
open_ports:
- 33
ssh_public_keys:
- path: /home/testuser/.ssh/authorized_keys
key_data: "ssh-rsa ************* @qq.com"
vm_size: Standard_B1ms
image:
community_gallery_image_id: "/CommunityGalleries/yellowbrick-fc7e81f1-87dd-4989-9ca8-03743762e873/Images/Ubuntu-5.15.0-1035-azure_22.04"
- name: Power Off
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm002
started: false
- name: Deallocate
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm002
allocated: false
- name: Power On
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm002
- name: Restart
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm002
restarted: true
- name: Create a VM with an Availability Zone
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm001
vm_size: Standard_DS1_v2
admin_username: "{{ username }}"
admin_password: "{{ password }}"
image: customimage001
zones: [1]
- name: Create a VM with security profile
azure_rm_virtualmachine:
resource_group: "{{ resource_group }}"
name: "{{ vm_name }}"
vm_size: Standard_D4s_v3
managed_disk_type: Standard_LRS
admin_username: "{{ username }}"
admin_password: "{{ password }}"
security_profile:
uefi_settings:
secure_boot_enabled: true
v_tpm_enabled: true
encryption_at_host: true
security_type: TrustedLaunch
ssh_public_keys:
- path: /home/azureuser/.ssh/authorized_keys
key_data: "ssh-rsa *****"
image:
offer: 0001-com-ubuntu-server-jammy
publisher: Canonical
sku: 22_04-lts-gen2
version: latest
- name: Remove a VM and all resources that were autocreated
azure_rm_virtualmachine:
resource_group: myResourceGroup
name: testvm002
remove_on_absent: all_autocreated
state: absent
返回值
常见返回值记录在此处,以下是此模块特有的字段
键 |
描述 |
---|---|
关于对象当前状态的事实。请注意,事实不是已注册输出的一部分,而是可以直接使用。 返回: 始终 示例: |
|
已删除的 NIC 的列表。 返回: 删除时 示例: |
|
已删除的公共 IP 地址名称的列表。 返回: 删除时 示例: |
|
已删除的虚拟硬盘 URI 的列表。 返回: 删除时 示例: |
|
指示状态是否为 返回: 始终 示例: |