azure.azcollection.azure_rm_virtualmachine 模块 – 管理 Azure 虚拟机
注意
此模块是 azure.azcollection 集合(版本 3.1.0)的一部分。
如果您正在使用 ansible
包,您可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install azure.azcollection
。您需要其他要求才能使用此模块,请参阅 要求 以了解详细信息。
要在剧本中使用它,请指定: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 中添加了 选择
|
|
要将虚拟机添加到的现有可用性集的名称或 ID。availability_set 应与虚拟机位于同一资源组中。 |
|
管理虚拟机的启动诊断设置。 启动诊断包括串行控制台和远程控制台屏幕截图。 |
|
指示是否启用启动诊断的标志。 选择
|
|
存储帐户所在的资源组。 它与 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/en-us/azure/virtual-machines/linux/using-cloud-init#cloud-init-overview。 要在 Linux 映像上启用 cloud-init,请按照 https://docs.microsoft.com/en-us/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**,将禁用授权验证。因此,务必确保配置的授权主机有效且可信。 通过凭据文件配置文件或 选择
|
|
可以为操作系统磁盘指定的临时磁盘设置的参数。 仅支持使用托管磁盘的虚拟机实例的临时操作系统磁盘。 选择
|
|
指定 Azure Spot 虚拟机的逐出策略。 需要将优先级设置为 Spot。 选择
|
|
在停止虚拟机期间使用更多强制力 将 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 Spot VM/VMSS 支付的最高价格。 此价格以美元为单位。
需要将优先级设置为 Spot。 默认值: |
|
虚拟机的名称。 |
|
要添加到虚拟机的网络接口名称。 可以是网络接口的名称或资源 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 客户端密钥。使用服务主体进行身份验证时使用。 |
|
指定虚拟机的安全相关配置文件设置。 |
|
用户可以在请求中使用此属性来启用或禁用虚拟机的主机加密。 这将启用主机本身所有磁盘的加密,包括资源/临时磁盘。 选择
|
|
指定虚拟机的安全类型。 设置为 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。 |
|
交换操作系统磁盘的参数。 |
|
交换操作系统磁盘的 ID。 |
|
交换操作系统磁盘的名称。 |
|
交换操作系统磁盘的资源组。 |
|
要分配为对象元数据的 string:string 键值对的字典。 对象上的元数据标签将使用任何提供的值进行更新。 要删除标签,请将 append_tags 选项设置为 false。 目前,Azure DNS 区域和流量管理器服务也不允许在标签中使用空格。 Azure 前门不支持使用 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 证书的路径。 必须将证书附加到私钥。 使用服务主体进行身份验证时使用。 |
|
虚拟机的可用性区域列表。 最多可配置一个区域。 |
说明
注意
对于使用 Azure 进行身份验证,您可以传递参数,设置环境变量,使用存储在 ~/.azure/credentials 中的配置文件,或者在使用
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
返回值
通用返回值记录在此处,以下是此模块特有的字段
键 |
描述 |
---|---|
有关对象当前状态的事实。请注意,事实不是注册输出的一部分,而是直接可用的。 已返回: 总是 示例: |
|
已删除的网卡列表。 返回值: 在删除时 示例: |
|
已删除的公共 IP 地址名称列表。 返回值: 在删除时 示例: |
|
已删除的虚拟硬盘 URI 列表。 返回值: 在删除时 示例: |
|
指示状态是否为 已返回: 总是 示例: |