adambrassard.azure_virtualmachine
AzureでのVMの作成/更新
この役割は、AzureでVMを作成または更新します。
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情報
vm:
- name: # 一意のVM名
size: # 例: "Standard_D4s_v3" # 作成するVMのサイズを定義
offer: # 例: "RHEL" # OSとその提供会社を指定
publisher: # 例: "RedHat" # イメージを公開した会社名
sku_name: # 例: "7-RAW" # 使用されるOSの主なバージョン
sku_version: # 例: "latest" # OSの特定のバージョン
os_type: # 例: Windows, Linux
managed_disk_type: # マネージドディスクのストレージタイプ: Standard_LRSまたはPremium_LRS。指定しない場合、ディスクはStandard_LRSで作成されます
os_disk_caching: # OSディスクキャッシュのタイプ。デフォルトで'ReadOnly'に設定され、"ReadWrite"にもできます。デフォルトを望む場合は定義する必要はありません。
os_disk_size_gb: # OSが載るディスクのサイズ。Windows 2012は最小127を必要とし、それ以下には設定できません。デフォルトを望む場合は定義する必要はありません。
vm_username: # 例: "azureadmin"
vm_password: # パスワードを定義
avset_name: # 必要であれば可用性セットを定義。そうでなければ無視されます
nic_name: # 既存のNICの名前を入力
pubip: # 公開IPを設定する場合は静的または動的に設定。デフォルトは無効です
subnet_name: # VMを作成するためのサブネットの名前。複数存在でき、各VMごとに異なることもあります。VMモジュールは最初の既存サブネットがデフォルトです。
依存関係
ネットワークインターフェイス名を定義しない場合、リソースグループにネットワークがある限り、新しいものが作成されます。
(NICが既に存在している場合は、その名前を定義できます。)
例プレイブック
1つのプレイブックで複数のVMを作成
---
- name: Azureプレイブックで複数のVMを作成
hosts: localhost
pre_tasks:
- name: 1つのリソースグループで複数のVMを作成
set_fact:
#デフォルトの必須変数
resource_group: "MyRG"
location: "canadacentral"
#複数のVM入力のためのVM変数構造
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
既存のNICを使用してVMを作成
---
- name: Azureプレイブックで複数のVMを作成
hosts: localhost
pre_tasks:
- name: 既存のNICを使用してVMを作成し、OSディスクキャッシングタイプを指定
set_fact:
#デフォルトの必須変数
resource_group: "MyRG"
location: "canadacentral"
#VM入力のためのVM変数構造
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