Replicare le risorse usando il replicatore di sottoscrizioni dell'hub di Azure Stack

È possibile usare lo script powerShell della replica della sottoscrizione dell'hub di Azure Stack per copiare le risorse tra le sottoscrizioni dell'hub di Azure Stack, tra gli hub di Azure Stack o tra l'hub di Azure Stack e Azure. Lo script dell'agente di replica legge e ricompila le risorse di Azure Resource Manager da sottoscrizioni di Azure e hub di Azure Stack diverse. Questo articolo illustra come funziona lo script, come è possibile usare lo script e fornisce un riferimento per le operazioni di script.

È possibile trovare gli script usati in questo articolo nel repository Modelli di Edge intelligenti di Azure GitHub. Gli script si trovano nella cartella del replicatore di sottoscrizione .

Panoramica del replicatore di sottoscrizioni

L'agente di replica delle sottoscrizioni di Azure è stato progettato per essere modulare. Questo strumento usa un processore di base che orchestra la replica delle risorse. Inoltre, lo strumento supporta processori personalizzabili che fungono da modelli per la copia di diversi tipi di risorse.

Il processore di base è costituito dai tre script seguenti:

  • resource_retriever.ps1

    • Genera cartelle per archiviare i file di output.

    • Imposta il contesto sulla sottoscrizione di origine.

    • Recupera le risorse e le passa a resource_processor.ps1.

  • resource_processor.ps1

    • Elabora la risorsa passata da resource_retriever.ps1.

    • Determina il processore personalizzato da usare e passa le risorse.

  • post_process.ps1

    • Dopo aver elaborato l'output generato dal processore personalizzato per prepararlo per essere distribuito nella sottoscrizione di destinazione.

    • Genera il codice di distribuzione per distribuire le risorse nella sottoscrizione di destinazione.

I tre script controllano il flusso di informazioni in modo standard per consentire una maggiore flessibilità. L'aggiunta del supporto per risorse aggiuntive, ad esempio, non richiede di modificare alcun codice nel processore di base.

I processori personalizzati, menzionati in precedenza, sono ps1 file che determinano la modalità di elaborazione di un determinato tipo di risorsa. Il nome di un processore personalizzato viene sempre denominato usando i dati di tipo in una risorsa. Ad esempio, presupponendo $vm che contenga un oggetto macchina virtuale, che esegue $vm. Il tipo restituisce Microsoft.Compute/virtualMachines. Ciò significa che un processore per una macchina virtuale sarà denominato virtualMachines_processor.ps1, il nome deve essere esattamente come viene visualizzato nei metadati delle risorse, come si tratta del modo in cui il processore di base determina il processore personalizzato da usare.

Un processore personalizzato determina il modo in cui una risorsa deve essere replicata determinando quali informazioni sono importanti e dettando come tali informazioni devono essere estratte dai metadati della risorsa. Il processore personalizzato accetta quindi tutti i dati estratti e lo usa per generare un file di parametri che verrà usato in combinazione con un modello di Resource Manager di Azure per distribuire la risorsa nella sottoscrizione di destinazione. Questo file di parametri viene archiviato nel Parameter_Files dopo l'elaborazione da parte di post_process.ps1.

È presente una cartella nella struttura di file replicator denominata Standardized_ARM_Templates. A seconda dell'ambiente di origine, le distribuzioni useranno uno di questi modelli di Azure Resource Manager standardizzati o sarà necessario generare un modello di Azure Resource Manager personalizzato. In questo caso, un processore personalizzato deve chiamare un generatore di modelli di Azure Resource Manager. Nell'esempio avviato in precedenza, il nome di un generatore di modelli di Azure Resource Manager per le macchine virtuali verrebbe denominato virtualMachines_ARM_Template_Generator.ps1. Il generatore di modelli di Azure Resource Manager è responsabile della creazione di un modello di Azure Resource Manager personalizzato in base alle informazioni contenute nei metadati di una risorsa. Ad esempio, se la risorsa macchina virtuale ha metadati che specificano che è membro di un set di disponibilità, il generatore di modelli di Azure Resource Manager creerà un modello di Azure Resource Manager con codice che specifica l'ID del set di disponibilità di cui fa parte la macchina virtuale. In questo modo, quando la macchina virtuale viene distribuita nella nuova sottoscrizione, viene aggiunta automaticamente al set di disponibilità al momento della distribuzione. Questi modelli personalizzati di Azure Resource Manager vengono archiviati nella cartella Custom_ARM_Templates che si trova all'interno della cartella Standardized_ARM_Templates. Il post_processor.ps1 è responsabile della determinazione se una distribuzione deve usare un modello di Azure Resource Manager standardizzato o un modello personalizzato e la generazione del codice di distribuzione corrispondente.

Lo script post-process.ps1 è responsabile della pulizia dei file di parametri e della creazione degli script che l'utente userà per distribuire le nuove risorse. Durante la fase di pulizia, lo script sostituisce tutti i riferimenti all'ID sottoscrizione di origine, all'ID tenant e alla posizione con i valori di destinazione corrispondenti. Restituisce quindi il file di parametri nella cartella Parameter_Files . Determina quindi se la risorsa elaborata usa un modello di Azure personalizzato Resource Manager o meno e genera il codice di distribuzione corrispondente, che usa il cmdlet New-AzResourceGroupDeployment. Il codice di distribuzione viene quindi aggiunto al file denominato DeployResources.ps1 archiviato nella cartella Deployment_Files . Infine, lo script determina il gruppo di risorse a cui appartiene la risorsa e controlla lo script DeployResourceGroups.ps1 per verificare se il codice di distribuzione per distribuire il gruppo di risorse esiste già. Se non lo fa, aggiungerà codice a tale script per distribuire il gruppo di risorse, se non lo fa, non fa nulla.

Recupero api dinamiche

Lo strumento include il recupero di API dinamiche compilato in modo che la versione dell'API del provider di risorse più recente disponibile nella sottoscrizione di origine venga usata per distribuire le risorse nella sottoscrizione di destinazione:

Figure API retrieval

Recupero API figura in resource_processor.ps1.

Tuttavia, è possibile che la versione dell'API del provider di risorse della sottoscrizione di destinazione sia precedente a quella della sottoscrizione di origine e non supporti la versione fornita dalla sottoscrizione di origine. In questo caso viene generato un errore quando viene eseguita la distribuzione. Per risolvere questo problema, aggiornare i provider di risorse nella sottoscrizione di destinazione in modo che corrispondano a quelli nella sottoscrizione di origine.

Distribuzioni parallele

Lo strumento richiede un parametro denominato parallel. Questo parametro accetta un valore booleano che specifica se le risorse recuperate devono essere distribuite in parallelo o meno. Se il valore è impostato su true, ogni chiamata a New-AzResourceGroupDeployment avrà il flag -asJob e i blocchi di codice per attendere che i processi paralleli vengano aggiunti tra set di distribuzioni di risorse in base ai tipi di risorse. Garantisce che tutte le risorse di un tipo siano state distribuite prima di distribuire il tipo di risorsa successivo. Se il valore del parametro parallelo è impostato su false, tutte le risorse verranno distribuite in seriale.

Aggiungere tipi di risorse aggiuntivi

L'aggiunta di nuovi tipi di risorse è semplice. Lo sviluppatore deve creare un processore personalizzato e un modello di azure Resource Manager o un generatore di modelli di Azure Resource Manager. Al termine, lo sviluppatore deve aggiungere il tipo di risorsa al parametro ValidateSet per il parametro $resourceType e la matrice di $resourceTypes in resource_retriever.ps1 . Quando si aggiunge il tipo di risorsa alla matrice di $resourceTypes , deve essere aggiunto nell'ordine corretto. L'ordine della matrice determina l'ordine di distribuzione delle risorse, quindi tenere presente le dipendenze. Infine, se il processore personalizzato usa un generatore di modelli di Azure Resource Manager, è necessario aggiungere il nome del tipo di risorsa alla matrice di $customTypes in post_process.ps1.

Eseguire replicatore di sottoscrizioni di Azure

Per eseguire lo strumento di replicazione della sottoscrizione di Azure (v3) è necessario avviare resource_retriever.ps1, fornendo tutti i parametri. Il parametro resourceType è disponibile un'opzione per scegliere Tutti anziché un tipo di risorsa. Se tutto è selezionato, resource_retriever.ps1 elabora tutte le risorse in un ordine in modo che quando viene eseguita la distribuzione, le risorse dipendenti vengono distribuite prima. Ad esempio, le reti virtuali vengono distribuite prima delle macchine virtuali perché le macchine virtuali richiedono la distribuzione corretta di una rete virtuale.

Al termine dell'esecuzione dello script, saranno presenti tre nuove cartelle, Deployment_Files, Parameter_Files e Custom_ARM_Templates.

Nota

Prima di eseguire uno degli script generati, è necessario impostare l'ambiente corretto e accedere alla sottoscrizione di destinazione (nel nuovo hub di Azure Stack per ex) e impostare la directory di lavoro sulla cartella Deployment_Files .

Deployment_Files conterrà due file DeployResourceGroups.ps1 e DeployResources.ps1. L'esecuzione di DeployResourceGroups.ps1 distribuirà i gruppi di risorse. L'esecuzione di DeployResources.ps1 distribuirà tutte le risorse elaborate. Nel caso in cui lo strumento sia stato eseguito con All o Microsoft.Compute/virtualMachines come tipo di risorsa, DeployResources.ps1 richiederà all'utente di immettere una password di amministratore della macchina virtuale che verrà usata per creare tutte le macchine virtuali.

Esempio

  1. Eseguire lo script.

    Run the script

    Nota

    Non dimenticare di configurare l'evironment di origine e il contesto della sottoscrizione per l'istanza di PS.

  2. Esaminare le cartelle appena create:

    Review the folders

  3. Impostare il contesto sulla sottoscrizione di destinazione, modificare la cartella in Deployment_Files, distribuire i gruppi di risorse (eseguire lo script di DeployResourceGroups.ps1) e quindi avviare la distribuzione delle risorse (eseguire lo script di DeployResources.ps1).

    Configure and start the deployment

  4. Eseguire Get-Job per controllare lo stato. Get-Job | Receive-Job restituirà i risultati.

Eseguire la pulizia

All'interno della cartella replicatorV3 è presente un file denominato cleanup_generated_items.ps1 : rimuoverà i Deployment_Files, iParameter_Files e le cartelle Custom_ARM_Templates e tutti i relativi contenuti.

Operazioni del replicatore di sottoscrizioni

L'agente di replica delle sottoscrizioni di Azure (v3) può attualmente replicare i tipi di risorse seguenti:

  • Microsoft.Compute/availabilitySets

  • Microsoft.Compute/virtualMachines

  • Microsoft.Network/loadBalancers

  • Microsoft.Network/networkSecurityGroups

  • Microsoft.Network/publicIPAddresses

  • Microsoft.Network/routeTables

  • Microsoft.Network/virtualNetworks

  • Microsoft.Network/virtualNetworkGateways

  • Microsoft.Storage/storageAccounts

Quando si esegue lo strumento con All come tipo di risorsa, l'ordine seguente verrà seguito durante la replica e la distribuzione (nell'esempio seguente tutte le risorse hanno la configurazione replicata, ad esempio sku, offerta e così via):

  • Microsoft.Network/virtualNetworks

    • Replica: - Tutti gli spazi indirizzi - Tutte le subnet
  • Microsoft.Network/virtualNetworkGateways

    • Replica: - Configurazione IP pubblico - Configurazione subnet - Tipo di VPN - Tipo di gateway
  • Microsoft.Network/routeTables

  • Microsoft.Network/networkSecurityGroups

    • Replica: - Tutte le regole di sicurezza in ingresso e in uscita
  • Microsoft.Network/publicIPAddresses

  • Microsoft.Network/loadBalancers

    • Replica: - Indirizzi IP privati - Configurazione dell'indirizzo IP pubblico - Configurazione subnet
  • Microsoft.Compute/availabilitySets

    • Replica: - Numero di domini di errore - Numero di domini di aggiornamento
  • Microsoft.Storage/storageAccounts

  • Microsoft.Compute/virtualMachines

    • Replica:
      - Dischi dati (senza dati)
      - Dimensioni macchina virtuale
      - Sistema operativo
      - Configurazione dell'account di archiviazione di diagnostica
      - Configurazione ip pubblico
      - Interfaccia di rete
      - Indirizzo IP privato dell'interfaccia di rete
      - Configurazione del gruppo di sicurezza di rete
      - Configurazione del set di disponibilità

Nota

Crea solo dischi gestiti per dischi del sistema operativo e dischi dati. Attualmente non è disponibile il supporto per l'uso degli account di archiviazione

Limitazioni

Lo strumento può replicare le risorse da una sottoscrizione a un'altra, purché i provider di risorse della sottoscrizione di destinazione supportino tutte le risorse e le opzioni replicate dalla sottoscrizione di origine.

Per garantire la corretta replica, verificare che le versioni del provider di risorse della sottoscrizione di destinazione corrispondano a quelle della sottoscrizione di origine.

Quando si esegue la replica da Azure commerciale ad Azure commerciale o da una sottoscrizione all'interno dell'hub di Azure Stack a un'altra sottoscrizione all'interno dello stesso hub di Azure Stack, si verificano problemi durante la replica degli account di archiviazione. Ciò è dovuto al requisito di denominazione dell'account di archiviazione che tutti i nomi degli account di archiviazione sono univoci in tutte le sottoscrizioni commerciali di Azure o in tutte le sottoscrizioni in un'area o in un'istanza dell'hub di Azure Stack. La replica di account di archiviazione in istanze diverse dell'hub di Azure Stack avrà esito positivo perché gli stack sono aree/istanze separate.

Passaggi successivi

Differenze e considerazioni per la rete dell'hub di Azure Stack