L'amministratore del cloud può utilizzare il plug-in Microsoft Azure per eseguire il provisioning delle macchine virtuali basate su plug-in durante la creazione dell'infrastruttura. È inoltre possibile utilizzare gli helper di allocazione per specificare la logica di allocazione per le macchine virtuali.

È possibile configurare facilmente le macchine virtuali per supportare le esigenze dell'infrastruttura utilizzando le proprietà di Azure più recenti. Ad esempio, se si desidera abilitare la diagnostica all'avvio per la macchina virtuale, è possibile utilizzare la proprietà boot_diagnostics nel modello cloud.

È inoltre possibile eseguire le seguenti operazioni giorno 2 nelle macchine virtuali di Azure:
  • Avvia
  • Spegni
  • Riavvia
  • Dealloca
Per ulteriori informazioni, vedere Quali azioni è possibile eseguire sulle distribuzioni di Automation Assembler o sulle risorse di supporto.

Per ulteriori informazioni sui plug-in e sull'allocazione in VMware Aria Automation, vedere Progettazioni e distribuzioni basate su plug-in in Automation Assembler

Proprietà delle macchine virtuali

Per le macchine virtuali di Azure basate su plug-in, sono necessarie le proprietà seguenti.

Proprietà Descrizione
name Il nome specifico del plug-in per la risorsa.

È possibile utilizzare lo stesso valore per la proprietà virtual_machine_name.

virtual_machine_name Il nome della macchina virtuale nel portale di Azure.

Le risorse di Azure distribuite con Automation Assembler devono essere conformi alle regole di denominazione e alle restrizioni di Azure. In caso contrario, la distribuzione non riuscirà. Per ulteriori informazioni, vedere Restrizioni di denominazione delle risorse.

account Account cloud di Microsoft Azure per le regioni dell'account in cui il team distribuisce i modelli cloud.

Per ulteriori informazioni, vedere Creazione di un account cloud di Microsoft Azure in VMware Aria Automation.

location La posizione in cui verrà distribuita la macchina virtuale.
resource_group_name Il nome del gruppo di risorse.

È necessario creare il gruppo di risorse nel portale di Azure.

Provisioning di una macchina virtuale di Azure con un disco dati

Il modello seguente illustra come eseguire il provisioning di una macchina virtuale utilizzando gli helper di allocazione. In questo esempio, viene creata una macchina virtuale con un disco dati collegato.

Prima di distribuire questo modello, completare i passaggi seguenti:

  1. Creare l'account cloud di Microsoft Azure in Automation Assembler, creare un progetto e aggiungere le zone cloud.
  2. Creare un gruppo di risorse tramite il portale di Azure.
  3. Creare un'interfaccia di rete nel gruppo di risorse nel portale di Azure. L'interfaccia di rete deve trovarsi nella regione che verrà utilizzata per distribuire la macchina virtuale di Azure.
formatVersion: 1
inputs:
  UUID:
    type: string
    title: UUID
resources:
  Allocations_Compute_1:
    type: Allocations.Compute
    properties: {}
  Allocations_Flavor_1:
    type: Allocations.Flavor
    properties:
      flavor: medium
  Allocations_Image_1:
    type: Allocations.Image
    properties:
      image: ubuntu
  Cloud_Azure_ResourceGroup_1:
    type: Cloud.Azure.ResourceGroup
    properties:
      name: e2e-a8n-RG-${input.UUID}
      useExisting: false
  Idem_NETWORK:
    type: Idem.AZURE.NETWORK.VIRTUAL_NETWORKS
    properties:
      name: e2e-a8n-idem-virtual-net-${input.UUID}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      location: ${resource.Allocations_Compute_1.selectedRegion.id}
      address_space:
        - 10.0.0.0/24
      subnets:
        - name: ${resource.Idem_NETWORK.name}
          address_prefix: 10.0.0.0/24
      resource_group_name: ${resource.Cloud_Azure_ResourceGroup_1.resourceName}
      virtual_network_name: ${resource.Idem_NETWORK.name}
  Idem_NETWORK_INTERFACE:
    type: Idem.AZURE.NETWORK.NETWORK_INTERFACES
    properties:
      name: e2e-a8n-idem-net-interface-${input.UUID}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      location: ${resource.Allocations_Compute_1.selectedRegion.id}
      ip_configurations:
        - primary: true
          name: ipconfig2
          private_ip_address: 10.0.0.13
          private_ip_address_allocation: Static
          private_ip_address_version: IPv4
          subnet_id: ${'/subscriptions/' + resource.Idem_NETWORK.subscription_id + '/resourceGroups/' + resource.Idem_NETWORK.resource_group_name + '/providers/Microsoft.Network/virtualNetworks/' + resource.Idem_NETWORK.name + '/subnets/' + resource.Idem_NETWORK.subnets[0].name}
      resource_group_name: ${resource.Idem_NETWORK.resource_group_name}
      network_interface_name: ${resource.Idem_NETWORK_INTERFACE.name}
  Idem_DATA_DISK:
    type: Idem.AZURE.COMPUTE.DISKS
    properties:
      name: e2e-a8n-idem-data-disk-${input.UUID}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      location: ${resource.Allocations_Compute_1.selectedRegion.id}
      resource_group_name: ${resource.Idem_NETWORK.resource_group_name}
      disk_name: ${resource.Idem_DATA_DISK.name}
      disk_size_gb: 10
      creation_data:
        create_option: Empty
      encryption:
        disk_encryption_set_id: ${'/subscriptions/' + resource.Idem_NETWORK.subscription_id + '/resourceGroups/DND-static-RG-for-automation/providers/Microsoft.Compute/diskEncryptionSets/DND-e2e-a8n-disk-encryption'}
        type: EncryptionAtRestWithCustomerKey
  Idem_VM:
    type: Idem.AZURE.COMPUTE.VIRTUAL_MACHINES
    properties:
      name: e2e-a8n-idem-vm-${input.UUID}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      location: ${resource.Allocations_Compute_1.selectedRegion.id}
      resource_group_name: ${resource.Idem_NETWORK.resource_group_name}
      virtual_machine_name: ${resource.Idem_VM.name}
      network_interface_ids:
        - ${resource.Idem_NETWORK_INTERFACE.resource_id}
      os_profile:
        admin_username: my-admin-username
        computer_name: machine-name
        admin_password: admin
      virtual_machine_size: ${resource.Allocations_Flavor_1.selectedInstanceTypeName}
      storage_image_reference:
        image_sku: ${split(resource.Allocations_Image_1.selectedImageId, ':')[2]}
        image_publisher: ${split(resource.Allocations_Image_1.selectedImageId, ':')[0]}
        image_version: ${split(resource.Allocations_Image_1.selectedImageId, ':')[3]}
        image_offer: ${split(resource.Allocations_Image_1.selectedImageId, ':')[1]}
      storage_os_disk:
        storage_account_type: Standard_LRS
        disk_name: e2e-a8n-idem-os-disk-${input.UUID}
        disk_caching: ReadWrite
        disk_size_in_GB: 30
        disk_create_option: FromImage
        disk_delete_option: Delete
      storage_data_disks:
        - disk_id: ${resource.Idem_DATA_DISK.resource_id}
          disk_logical_unit_number: 3
          disk_create_option: Attach
          disk_delete_option: Delete
          disk_size_in_GB: 10
          disk_name: ${resource.Idem_DATA_DISK.disk_name}
  Cloud_Service_Azure_SQL_Server_1:
    type: Cloud.Service.Azure.SQL.Server
    properties:
      name: e2e-a8n-db-server-puca-${input.UUID}
      region: ${resource.Allocations_Compute_1.selectedRegion.id}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      version: ''
      administrator_login: [email protected]
      resource_group_name: ${resource.Cloud_Azure_ResourceGroup_1.resourceName}
      administrator_login_password: admin
  Idem_AZURE_SQL_DATABASE_DATABASES_1:
    type: Idem.AZURE.SQL_DATABASE.DATABASES
    properties:
      name: e2e-a8n-idem-sql-db-${input.UUID}
      database_name: e2e-a8n-idem-sql-db-${input.UUID}
      server_name: ${resource.Cloud_Service_Azure_SQL_Server_1.name}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      location: ${resource.Allocations_Compute_1.selectedRegion.id}
      tags:
        tag-key: tag-value
      sku:
        name: GP_Gen5
        tier: GeneralPurpose
        family: Gen5
        capacity: 2
      requested_backup_storage_redundancy: Local
      resource_group_name: ${resource.Idem_NETWORK.resource_group_name}
      read_scale: Disabled
  Idem_AZURE_STORAGE_RESOURCE_PROVIDER_STORAGE_ACCOUNTS_1:
    type: Idem.AZURE.STORAGE_RESOURCE_PROVIDER.STORAGE_ACCOUNTS
    dependsOn:
      - Idem_NETWORK
    properties:
      name: e2ea8nidemstacct${input.UUID}
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      location: ${resource.Allocations_Compute_1.selectedRegion.id}
      sku_name: Standard_LRS
      account_name: e2ea8nidemstacct${input.UUID}
      resource_group_name: ${resource.Cloud_Azure_ResourceGroup_1.resourceName}
      identity:
        type: UserAssigned
        user_assigned_identities:
          /subscriptions/svpvln45-brk0-mzca-7yxh-dla7h19zxyn3/resourceGroups/DND-static-RG-for-automation/providers/Microsoft.ManagedIdentity/userAssignedIdentities/DND-user-assigned-managed-identity: {}
      encryption_service:
        encryption_key_source: Microsoft.Keyvault
        blob_encryption_key_type: Account
        file_encryption_key_type: Account
      customer_managed_key:
        key_name: DND-e2e-a8n-key
        key_vault_uri: https://dnd-e2e-a8n-key-vault.vault.azure.net/
        key_version: ''
        user_assigned_identity_id: ${'/subscriptions/' + resource.Idem_NETWORK.subscription_id + '/resourceGroups/DND-static-RG-for-automation/providers/Microsoft.ManagedIdentity/userAssignedIdentities/DND-user-assigned-managed-identity'}
      immutability_policy:
        allow_protected_append_writes: true
        period_since_creation_in_days: 5
        state: Unlocked

Se si desidera collegare altri dischi alla macchina virtuale, è possibile aggiornare il blueprint per la risorsa della macchina virtuale e aggiungere il nuovo disco dati nella proprietà storage_data_disks.

Eseguire il provisioning di una macchina virtuale Azure utilizzando cloud-init

I seguenti modelli mostrano come è possibile eseguire il provisioning di una macchina virtuale Azure utilizzando cloud-init.

Innanzitutto, si definisce il codice cloud-init come input nel modello cloud e si utilizza il valore nella proprietà custom_data. La proprietà custom_data accetta solo una stringa con codifica base64, pertanto è possibile convertire i dati personalizzati utilizzando la funzione base64_encoded.

L'esempio di codice seguente mostra come definire il codice cloud-init come input:
inputs:
  init-data:
    type: string
    default: |
      some
      multiline
      
    maxLength: 9999
L'esempio di codice seguente illustra come convertire i dati personalizzati in base64:
resources:
  Idem_AZURE_COMPUTE_VIRTUAL_MACHINES_1:
    type: Idem.AZURE.COMPUTE.VIRTUAL_MACHINES
    properties:
      ...
      os_profile:
        ...
        custom_data: ${base64_encode(input.init-data)}