Como administrador de nube, puede aprovechar el complemento de Microsoft Azure para aprovisionar máquinas virtuales basadas en complementos a medida que crea la infraestructura. También puede utilizar aplicaciones auxiliares de asignación para proporcionar lógica de asignación para las máquinas virtuales.

Puede configurar fácilmente sus máquinas virtuales para dar soporte a sus necesidades de infraestructura mediante las propiedades de Azure más recientes. Por ejemplo, si desea habilitar diagnósticos de arranque para su máquina virtual, puede utilizar la propiedad boot_diagnostics en su plantilla de nube.

También puede ejecutar las siguientes operaciones del día 2 en las máquinas virtuales de Azure:
  • Iniciar
  • Apagar
  • Reiniciar
  • Desasignar
Para obtener más información, consulte Acciones que se pueden ejecutar en las implementaciones de Automation Assembler o sus recursos admitidos.

Para obtener más información sobre los complementos y la asignación en VMware Aria Automation, consulte Diseños e implementaciones basados en complementos en Automation Assembler.

Propiedades de máquinas virtuales

Las siguientes propiedades son obligatorias para las máquinas virtuales de Azure basadas en complementos.

Propiedad Descripción
name El nombre específico del complemento para el recurso.

Puede utilizar el mismo valor para la propiedad virtual_machine_name.

virtual_machine_name El nombre de la máquina virtual en el portal de Azure.

Los recursos de Azure que implemente con Automation Assembler deben cumplir las restricciones y las reglas de nomenclatura de Azure. De lo contrario, la implementación presentará errores. Consulte Restricciones de nomenclatura de recursos para obtener más información.

account La cuenta de nube de Microsoft Azure para las regiones de cuentas en las que el equipo implementa plantillas de nube.

Consulte Crear una cuenta de nube de Microsoft Azure en VMware Aria Automation para obtener más información.

location La ubicación en la que se implementará la máquina virtual.
resource_group_name El nombre del grupo de recursos.

Debe crear el grupo de recursos en su portal de Azure.

Aprovisionar una máquina virtual de Azure con un disco de datos

La siguiente plantilla muestra cómo puede aprovisionar una máquina virtual mediante aplicaciones auxiliares de asignación. En este ejemplo, se crea una máquina virtual con un disco de datos asociado.

Antes de implementar esta plantilla, realice los siguientes pasos:

  1. Cree su cuenta de nube de Microsoft Azure en Automation Assembler, cree un proyecto y sus zonas de nube.
  2. Cree un grupo de recursos a través del portal de Azure.
  3. Cree una interfaz de red en el grupo de recursos en el portal de Azure. La interfaz de red debe estar en la región que utilizará para implementar la máquina virtual de 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

Si desea asociar discos adicionales a la máquina virtual, puede actualizar el blueprint del recurso de la máquina virtual y agregar el nuevo disco de datos en la propiedad storage_data_disks.

Aprovisionar una máquina virtual de Azure mediante cloud-init

Las siguientes plantillas muestran cómo aprovisionar una máquina virtual de Azure mediante cloud-init.

En primer lugar, defina el código cloud-init como una entrada en la plantilla de nube y utilice el valor en la propiedad custom_data. La propiedad custom_data solo acepta una cadena con codificación base64, por lo que debe convertir los datos personalizados mediante la función base64_encoded.

El siguiente ejemplo de código muestra cómo debe definir el código cloud-init como una entrada:
inputs:
  init-data:
    type: string
    default: |
      some
      multiline
      
    maxLength: 9999
El siguiente ejemplo de código muestra cómo convertir los datos personalizados a base64:
resources:
  Idem_AZURE_COMPUTE_VIRTUAL_MACHINES_1:
    type: Idem.AZURE.COMPUTE.VIRTUAL_MACHINES
    properties:
      ...
      os_profile:
        ...
        custom_data: ${base64_encode(input.init-data)}