Avvio rapido: distribuire un modello del catalogo di servizi tramite la CLI

Azure Enclave è un servizio di networking cloud che offre alle organizzazioni che gestiscono dati altamente sensibili la possibilità di distribuire e gestire rapidamente carichi di lavoro su larga scala nei cloud Azure commerciali e nei cloud Azure isolati. Questo avvio rapido spiega come:

  • Distribuire un modello di catalogo dei servizi dal catalogo dei servizi usando il interfaccia della riga di comando di Azure.

Note

Questa distribuzione di esempio è solo a scopo dimostrativo e non rappresenta tutte le procedure consigliate per l'amministrazione di rete, sistemi o applicazioni.

Prima di iniziare

Distribuire un modello dal catalogo dei servizi

I modelli di catalogo dei servizi sono disponibili pubblicamente qui in Azure Pubblico:https://veservicecatalogprod.z22.web.core.windows.net/inventory.xml

Scaricare un modello specifico usando il nome trovato nell'inventario precedente (ad esempio, https://veservicecatalogprod.z22.web.core.windows.net/adminVM/deploy-adminVM-1.0.1.json)

  1. Elencare i modelli disponibili nel catalogo dei servizi:

    # Download the XML file
    $xmlUrl = "https://veservicecatalogprod.z22.web.core.windows.net/inventory.xml"
    $xmlContent = Invoke-WebRequest -Uri $xmlUrl -UseBasicParsing
    
    # Load the XML content
    [xml]$xml = $xmlContent.Content
    
    # Extract URLs from the XML file
    $urls = $xml.SelectNodes("//EnumerationResults/Blobs/Blob/Url")
    
    # # List the URLs
    $urls | ForEach-Object { $_.InnerText }
    

    Nomi degli account di archiviazione per ambiente

    • Azure: veservicecatalogprod.z22.web.core.windows.net
    • Azure per enti pubblici: veservicecatalogfairfax.z2.web.core.usgovcloudapi.net
    • Segreto di Azure: veservicecatalogussec.z1.web.core.<SecretDomain>
    • Azure Top Secret: veservicecatalogusnat.z2.web.core.<TopSecretDomain>
  2. Scaricare ogni modello Continuando lo script dal passaggio precedente

    # download all templates
    $urls | ForEach-Object {
        $url = $_.InnerText
        $fileName = Split-Path -Leaf $url
        Invoke-WebRequest -Uri $url -OutFile $fileName
    }
    
  3. Aprire il modello e determinare i parametri per cui è necessario specificare i valori. In questo esempio viene usato "storageAccount/deploy-storage-account-1.0.0.json"

    Si noti quali parametri sono obbligatori e quali parametri hanno valori predefiniti.

    Creare un nuovo file params.json per specificare i valori dei parametri:

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "storageAccountName": {
                "value": ""
            },
            "virtualNetworkName": {
                "value": ""
            },
            "networkResourceGroupName": {
                "value": ""
            },
            "privateLinkSubnetName": {
                "value": ""
            },
            "privateDnsZoneResourceGroupName": {
                "value": ""
            },
            "keyVaultName": {
                "value": ""
            },
            "keyName": {
                "value": ""
            },
            "keyVaultResourceGroupName": {
                "value": ""
            },
            "userAssignedIdentityObject": {
                "value": {
                    "name":"",
                    "id":"",
                    "location":"",
                    "subscriptionName":""
                }
            }
        }
    }
    
  4. Recuperare le risorse dell'enclave per fornire i valori dei parametri seguenti

    • storageAccountName
    • virtualNetworkName
    • nome del gruppo di risorse di rete
    • privateDnsZoneResourceGroupName
    • keyVaultName
    • keyVaultResourceGroupName
    • ID dell'oggetto userAssignedIdentityObject
    az rest --method get --uri "<enclave-resource-id>?api-version=2024-01-01-preview"
    

    Sarà comunque necessario recuperare i valori privateLinkSubnetName, keyName, userAssignedIdentityObject

  5. Elencare le subnet nella rete virtuale (privateLinkSubnetName)

    az network vnet subnet list --resource-group <resource-group-name> --vnet-name <vnet-name> --query "[].name"
    
  6. Recuperare il nome della chiave CMK (keyName)

    az keyvault key list --vault-name <keyvault-name> --query "[].name"
    
  7. Ottenere la posizione di userAssignedIdentityObject (userAssignedIdentityObject.location)

    az resource show --ids <user-assigned-identity-resource-id> --query location
    
  8. Recuperare il nome della sottoscrizione

    az account show --subscription <subscription-id> --query name
    
  9. Implementare il modello

    az deployment group create --resource-group <resource-group-name> --template-file ./<template-downloaded-name> --parameters ./<parameter-file-name>
    

    Questo script è per la distribuzione di un modello dal catalogo dei servizi

    az storage blob list --account-name <storage-account-name> --container-name servicecatalog --query '[].{Name:name}'
    
    az storage blob download --account-name <storag-eaccount-name> --container-name servicecatalog --name <template-to-download-name> --file ./<template-downloaded-name>
    
    az rest --method get --uri "<enclave-resource-id>?api-version=2024-01-01-preview"
    
    az network vnet subnet list --resource-group <resource-group-name> --vnet-name <vnet-name> --query "[].name"
    
    az keyvault key list --vault-name <keyvault-name> --query "[].name"
    
    az resource show --ids <user-assigned-identity-resource-id> --query location
    
    az account show --subscription <subscription-id> --query name
    
    az deployment group create --resource-group <resource-group-name> --template-file ./<template-downloaded-name> --parameters ./<parameter-file-name>
    

Eliminare la distribuzione

Se non prevedi di mantenere queste risorse, elimina quelle non necessarie per evitare addebiti di Azure. Se non esistono altre distribuzioni nel gruppo di risorse, è possibile eliminare l'intero gruppo di risorse.