클라우드 관리자는 Microsoft Azure 플러그인을 활용하여 인프라를 구축할 때 플러그인 기반 가상 시스템을 프로비저닝할 수 있습니다. 할당 도우미를 사용하여 VM에 대한 할당 논리를 제공할 수도 있습니다.
최신 Azure 속성을 사용하여 인프라 요구 사항을 지원하도록 VM을 쉽게 구성할 수 있습니다. 예를 들어 VM에 대해 부팅 진단을 사용하도록 설정하려면 클라우드 템플릿에서 boot_diagnostics
속성을 사용하면 됩니다.
- 시작
- 전원 끄기
- 다시 시작
- 할당 해제
VMware Aria Automation의 플러그인 및 할당에 대한 자세한 내용은 Automation Assembler의 플러그인 기반 설계 및 배포를 참조하십시오.
VM 속성
플러그인 기반 Azure VM에는 다음 속성이 필요합니다.
속성 | 설명 |
---|---|
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을 생성합니다.
이 템플릿을 배포하기 전에 다음 단계를 완료하십시오.
- Automation Assembler에서 Microsoft Azure 클라우드 계정을 생성하고 프로젝트를 생성하고 클라우드 영역을 추가합니다.
- Azure Portal을 통해 리소스 그룹을 생성합니다.
- 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
함수를 사용하여 사용자 지정 데이터를 변환합니다.
inputs: init-data: type: string default: | some multiline maxLength: 9999
resources: Idem_AZURE_COMPUTE_VIRTUAL_MACHINES_1: type: Idem.AZURE.COMPUTE.VIRTUAL_MACHINES properties: ... os_profile: ... custom_data: ${base64_encode(input.init-data)}