클라우드 관리자는 Microsoft Azure 플러그인을 활용하여 인프라를 구축할 때 플러그인 기반 가상 시스템을 프로비저닝할 수 있습니다. 할당 도우미를 사용하여 VM에 대한 할당 논리를 제공할 수도 있습니다.

최신 Azure 속성을 사용하여 인프라 요구 사항을 지원하도록 VM을 쉽게 구성할 수 있습니다. 예를 들어 VM에 대해 부팅 진단을 사용하도록 설정하려면 클라우드 템플릿에서 boot_diagnostics 속성을 사용하면 됩니다.

Azure VM에서 다음 2일차 작업을 실행할 수도 있습니다.
  • 시작
  • 전원 끄기
  • 다시 시작
  • 할당 해제
자세한 내용은 Automation Assembler 배포 또는 지원되는 리소스에서 실행할 수 있는 작업을 참조하십시오.

VMware Aria Automation의 플러그인 및 할당에 대한 자세한 내용은 Automation Assembler의 플러그인 기반 설계 및 배포를 참조하십시오.

VM 속성

플러그인 기반 Azure VM에는 다음 속성이 필요합니다.

속성 설명
name 리소스의 플러그인별 이름입니다.

virtual_machine_name 속성에 동일한 값을 사용할 수 있습니다.

virtual_machine_name Azure Portal에 있는 VM의 이름입니다.

Automation Assembler를 사용하여 배포하는 Azure 리소스는 Azure 명명 규칙 및 제한 사항을 준수해야 합니다. 그렇지 않으면 배포가 실패합니다. 자세한 내용은 리소스 이름 지정 제한을 참조하십시오.

account 팀에서 클라우드 템플릿을 배포하는 계정 지역에 대한 Microsoft Azure 클라우드 계정입니다.

자세한 내용은 VMware Aria Automation에서 Microsoft Azure 클라우드 계정 생성을 참조하십시오.

location VM이 배포될 위치입니다.
resource_group_name 리소스 그룹의 이름입니다.

Azure Portal에서 리소스 그룹을 생성해야 합니다.

데이터 디스크가 있는 Azure VM 프로비저닝

다음 템플릿은 할당 도우미를 사용하여 가상 시스템을 프로비저닝하는 방법을 보여줍니다. 이 예에서는 연결된 데이터 디스크가 있는 VM을 생성합니다.

이 템플릿을 배포하기 전에 다음 단계를 완료하십시오.

  1. Automation Assembler에서 Microsoft Azure 클라우드 계정을 생성하고 프로젝트를 생성하고 클라우드 영역을 추가합니다.
  2. Azure Portal을 통해 리소스 그룹을 생성합니다.
  3. Azure Portal의 리소스 그룹에 네트워크 인터페이스를 생성합니다. 네트워크 인터페이스는 Azure VM을 배포하는 데 사용할 지역에 있어야 합니다.
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

VM에 추가 디스크를 연결하려는 경우 VM 리소스에 대한 Blueprint를 업데이트하고 storage_data_disks 속성에 새 데이터 디스크를 추가하면 됩니다.

cloud-init를 사용하여 Azure VM 프로비저닝

다음 템플릿은 cloud-init를 사용하여 Azure VM을 프로비저닝하는 방법을 보여줍니다.

먼저 cloud-init 코드를 클라우드 템플릿의 입력으로 정의하고 custom_data 속성의 값을 사용합니다. custom_data 속성은 base64로 인코딩된 문자열만 허용하므로 base64_encoded 함수를 사용하여 사용자 지정 데이터를 변환합니다.

다음 코드 샘플은 cloud-init 코드를 입력으로 정의하는 방법을 보여줍니다.
inputs:
  init-data:
    type: string
    default: |
      some
      multiline
      
    maxLength: 9999
다음 코드 샘플은 사용자 지정 데이터를 base64로 변환하는 방법을 보여줍니다.
resources:
  Idem_AZURE_COMPUTE_VIRTUAL_MACHINES_1:
    type: Idem.AZURE.COMPUTE.VIRTUAL_MACHINES
    properties:
      ...
      os_profile:
        ...
        custom_data: ${base64_encode(input.init-data)}