adambrassard.azure_virtualmachine
在 Azure 中创建/更新虚拟机
此角色用于在 Azure 中创建/更新虚拟机。
https://docs.ansible.com/ansible/latest/modules/azure_rm_virtualmachine_module.html
要求
需要 Azure_rm 模块
ansible >= 2.8
在 Ansible 2.13.1 中测试通过
从 Galaxy 安装 Azure 集合:
ansible-galaxy collection install azure.azcollection
从该集合安装 Python 依赖包
sudo pip3 install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements-azure.txt
用户自定义角色变量
# 默认必需变量:
resource_group:
location:
# 虚拟机信息
vm:
- name: # 唯一虚拟机名称
size: # 示例:“Standard_D4s_v3” # 定义要创建的虚拟机的大小
offer: # 示例:“RHEL” # 定义操作系统的特定版本及支持它的公司
publisher: # 示例:“RedHat” # 发布镜像的公司名称
sku_name: # 示例:“7-RAW” # 将使用的操作系统主要版本
sku_version: # 示例:“latest” # 操作系统的特定版本
os_type: # 示例:Windows, Linux
managed_disk_type: # 管理磁盘的存储类型:Standard_LRS 或 Premium_LRS。如果未指定,磁盘将创建为 Standard_LRS
os_disk_caching: # 操作系统磁盘缓存类型。默认设置为“ReadOnly”,也可以为“ReadWrite”。如果希望使用默认值,则无需定义。
os_disk_size_gb: # 操作系统磁盘的大小,Windows 2012 最小要求 127,并且不允许更改为更小。如果希望使用默认值,则无需定义。
vm_username: # 示例:“azureadmin”
vm_password: # 定义密码
avset_name: # 如果需要,定义可用性集合,否则将被忽略
nic_name: # 输入现有网络接口的名称
pubip: # 如果需要公共 IP,则设置为静态或动态,默认值为禁用
subnet_name: # 创建虚拟机的子网名称,每个虚拟机可以有多个不同的子网。虚拟机模块默认使用现有的第一个子网。
依赖项
如果您未定义网络接口名称,它将在资源组中创建一个,只要存在网络。
如果 NIC 之前已存在,您可以定义它的名称。
示例剧本
在一个剧本中创建多个虚拟机
---
- name: Azure 剧本创建多个虚拟机
hosts: localhost
pre_tasks:
- name: 在 1 个资源组中创建多个虚拟机
set_fact:
# 默认必需变量
resource_group: "MyRG"
location: "canadacentral"
# 多个虚拟机输入的虚拟机变量结构
vm:
- name: NewVM
size: "Standard_D4s_v3"
offer: "RHEL"
publisher: "RedHat"
sku_name: "7-RAW"
sku_version: "latest"
os_type: Linux
managed_disk_type: Standard_LRS
os_disk_size_gb: 150
vm_username: "TempAdmin"
vm_password: "YouShouldntUseClearTextPasswords@!"
avset_name: "myavset4"
pubip: "static"
- name: SecondGreatVm
size: "Standard_D4s_v3"
offer: "RHEL"
publisher: "RedHat"
sku_name: "7-RAW"
sku_version: "latest"
os_type: Linux
managed_disk_type: Premium_LRS
os_disk_size_gb: 200
vm_username: "TempAdmin"
vm_password: "YouShouldntUseClearTextPasswords@!"
avset_name: "myavset4"
- name: MyThirdVM
size: "Standard_DS2_v2"
offer: "WindowsServer"
publisher: "MicrosoftWindowsServer"
sku_name: "2019-Datacenter"
sku_version: "latest"
os_type: "Windows"
managed_disk_type: StandardSSD_LRS
os_disk_size_gb: 200
vm_username: "TempAdmin"
vm_password: "YouShouldntUseClearTextPasswords@!"
avset_name: "windowsAVset"
connection: local
roles:
- azure-virtualmachine
使用现有网络接口创建虚拟机
---
- name: Azure 剧本创建多个虚拟机
hosts: localhost
pre_tasks:
- name: 使用现有网络接口和指定操作系统磁盘缓存类型创建虚拟机
set_fact:
# 默认必需变量
resource_group: "MyRG"
location: "canadacentral"
# 虚拟机输入的虚拟机变量结构
vm:
- name: NewVM
size: "Standard_D4s_v3"
offer: "RHEL"
publisher: "RedHat"
sku_name: "7-RAW"
sku_version: "latest"
os_type: Linux
os_disk_caching: "ReadOnly"
managed_disk_type: Standard_LRS
os_disk_size_gb: 150
vm_username: "TempAdmin"
vm_password: "YouShouldntUseClearTextPasswords@!"
avset_name: "myavset4"
nic_name: "oldnic2019"
connection: local
roles:
- azure-virtualmachine
许可证
MIT
作者信息
Adam Brassard: IRC 上的 Abrass