En tant qu'administrateur de cloud, vous pouvez exploiter le plug-in Microsoft Azure pour provisionner des machines virtuelles basées sur des plug-ins lors de la création de votre infrastructure. Vous pouvez également utiliser des aides d'allocation pour fournir une logique d'allocation pour vos machines virtuelles.

Vous pouvez facilement configurer vos machines virtuelles pour répondre aux besoins de votre infrastructure à l'aide des dernières propriétés Azure. Par exemple, si vous souhaitez activer les diagnostics de démarrage pour votre machine virtuelle, vous pouvez utiliser la propriété boot_diagnostics dans votre modèle de cloud.

Vous pouvez également exécuter les opérations de jour 2 suivantes sur les machines virtuelles Azure :
  • Démarrer
  • Mettre hors tension
  • Redémarrer
  • Désallouer
Pour plus d'informations, reportez-vous à la section Quelles actions puis-je exécuter sur des déploiements Automation Assembler ou des ressources de support ?

Pour en savoir plus sur les plug-ins et l'allocation dans VMware Aria Automation, reportez-vous à la section Conceptions et déploiements basés sur des plug-ins dans Automation Assembler.

Propriétés de VM

Les propriétés suivantes sont requises pour les machines virtuelles basées sur des plug-ins.

Propriété Description
name Nom spécifique du plug-in de la ressource.

Vous pouvez utiliser la même valeur pour la propriété virtual_machine_name.

virtual_machine_name Nom de la machine virtuelle dans le portail Azure.

Les ressources Azure que vous déployez avec Automation Assembler doivent être conformes aux règles et restrictions d'attribution de nom d'Azure. Sinon, le déploiement échouera. Pour plus d'informations, reportez-vous à la section Restrictions d'attribution de nom des ressources.

account Compte de cloud Microsoft Azure pour les régions de compte vers lesquelles votre équipe déploie des modèles de cloud.

Pour plus d'informations, reportez-vous à la section Création d'un compte de cloud Microsoft Azure dans VMware Aria Automation.

location Emplacement dans laquelle la machine virtuelle sera déployée.
resource_group_name Nom du groupe de ressources.

Vous devez créer le groupe de ressources dans votre portail Azure.

Provisionner une machine virtuelle Azure avec un disque de données

Le modèle suivant montre comment vous pouvez provisionner une machine virtuelle en utilisant les aides d'allocation. Dans cet exemple, vous créez une machine virtuelle avec un disque de données attaché.

Avant de déployer ce modèle, procédez comme suit :

  1. Créez votre compte de cloud Microsoft Azure dans Automation Assembler, créez un projet et ajoutez vos zones de cloud.
  2. Créez un groupe de ressources via le portail Azure.
  3. Créez une interface réseau dans le groupe de ressources du portail Azure. L'interface réseau doit se trouver dans la région que vous utiliserez pour déployer votre VM 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 vous souhaitez attacher des disques supplémentaires à la machine virtuelle, vous pouvez mettre à jour le Blueprint de la ressource de la machine virtuelle et ajouter le nouveau disque de données dans la propriété storage_data_disks.

Provisionner une VM Azure à l'aide de cloud-init

Les modèles suivants montrent comment vous pouvez provisionner une VM Azure à l'aide de cloud-init.

Tout d'abord, vous définissez le code cloud-init en tant qu'entrée dans le modèle de cloud, puis vous utilisez la valeur dans la propriété custom_data. La propriété custom_data n'accepte qu'une chaîne codée en base64, vous convertissez donc les données personnalisées à l'aide de la fonction base64_encoded.

L'exemple de code suivant montre comment vous pouvez définir le code cloud-init en tant qu'entrée :
inputs:
  init-data:
    type: string
    default: |
      some
      multiline
      
    maxLength: 9999
L'exemple de code suivant montre comment convertir les données personnalisées en base64 :
resources:
  Idem_AZURE_COMPUTE_VIRTUAL_MACHINES_1:
    type: Idem.AZURE.COMPUTE.VIRTUAL_MACHINES
    properties:
      ...
      os_profile:
        ...
        custom_data: ${base64_encode(input.init-data)}