Funzionamento dell'esportazione di Azure per Terraform

Questo articolo presenta l'esportazione di Azure per i flussi di lavoro terraform . In questo articolo vengono fornite informazioni sulle linee guida sulle procedure consigliate dello strumento, sulle limitazioni correnti e su come attenuare tali limitazioni.

Modalità interattiva

Per impostazione predefinita, l'esportazione di Azure per Terraform viene eseguita in modalità interattiva. Quando si esegue in modalità interattiva, i tasti di scelta rapida disponibili sono elencati nella parte inferiore dello schermo.

Attività Tasti di scelta rapida
Navigazione
Selezionare l'elemento precedente nell'elenco delle risorse. ^ -or- k
Selezionare l'elemento successivo nell'elenco delle risorse. ^ -or- j
Passare alla pagina precedente nell'elenco di risorse. ← -or- h -or- Page Up
Passare alla pagina successiva nell'elenco di risorse. → -or- l -or- Page Down
Passare all'inizio dell'elenco di risorse. g -or- Home
Passare alla fine dell'elenco di risorse. G -or- End
Selezione delle risorse da ignorare
Ignorare la risorsa (o annullare lo scissione se contrassegnata come "Skip") CANC
Operazioni di filtro
Definire un filtro in base al testo nell'elenco di risorse. /
Cancellare qualsiasi filtro corrente ESC
Operazioni di salvataggio
Salvare un file di mapping dell'elenco di risorse. Il file di output è interessato dall'omissione (ma non dal filtro). s
Esportare le risorse nello stato (se --hcl-only non è specificato) e genera la configurazione. w
Esperienza utente
Visualizzare le raccomandazioni per la risorsa corrente. r
Mostra gli errori di esportazione delle risorse (se presenti). e
Visualizzare la Guida. ?
Smettere
Uscire dalla modalità interattiva. q

Per ogni risorsa, l'esportazione di Azure per Terraform tenta di riconoscere il tipo di risorsa Terraform corrispondente. Se trova una corrispondenza, la riga viene contrassegnata con l'indicatore seguente: 💡.

Se la risorsa non può essere risolta, è necessario immettere l'indirizzo della risorsa Terraform nel formato seguente: <resource type>.<resource name>. Ad esempio, azurerm_linux_virtual_machine.test fa riferimento a un tipo di risorsa Terraform di azurerm_linux_virtual_machine mentre fa test riferimento al nome della macchina virtuale usata nei file di configurazione.

Per visualizzare i tipi di risorsa disponibili per la risorsa selezionata, premere r.

In alcuni casi, sono presenti risorse di Azure che non dispongono di risorse Terraform corrispondenti, ad esempio se la risorsa non supporta Terraform. Alcune risorse potrebbero anche essere create come effetto collaterale del provisioning di un'altra risorsa, ad esempio la risorsa disco del sistema operativo creata durante il provisioning di una macchina virtuale. In questi casi, è possibile ignorare le risorse senza assegnare nulla.

Dopo aver completato tutte le risorse da importare, premere w per iniziare a generare la configurazione terraform e, se --hcl-only non è selezionata, importare nello stato Terraform.

Modalità non interattiva

Per impostazione predefinita, l'esportazione di Azure per Terraform viene eseguita in modalità interattiva. Per specificare che lo strumento deve essere eseguito in modalità non interattiva, specificare il --non-interactive flag .

aztfexport [command] --non-interactive <scope>

Importante

Se la directory in cui si esegue l'esportazione di Azure per Terraform non è vuota, è necessario aggiungere il --overwrite flag per usare il --hcl-only flag .

Procedure consigliate nei flussi di lavoro principali

A livello fondamentale, qualsiasi utente di Esportazione di Azure affronta una decisione tra due opzioni:

Le sottosezioni seguenti forniscono indicazioni su quale opzione prendere in base allo scenario.

Gestione dell'infrastruttura

Potrebbe non essere necessario esportare lo stato se le risorse configurate non sono state verificate nel modo desiderato.

Se si è certi di voler gestire il set di risorse in Terraform con terraform init plan apply flussi di lavoro, l'esportazione nello stato è essenziale.

Se non si è certi di voler gestire ancora le risorse, è consigliabile passare il --hcl-only flag.

Infrastruttura esistente

Negli scenari in cui si esegue l'esportazione in ambienti Terraform esistenti, può essere utile considerare --hcl-only come un piano terraform equivalente, soprattutto prima di accodare gli ambienti esistenti.

Il terraform apply comando equivale all'esportazione delle risorse, durante la quale la configurazione si collega allo stato preesistente. In questo scenario, l'uso di un file di mapping consente di risparmiare tempo di esecuzione per elencare e mappare le risorse.

Individuazione dell'infrastruttura

Se non si è certi delle risorse presenti all'interno di un ambiente, è possibile verificare specificando il --generate-mapping-file flag . Per altre informazioni su questo argomento, vedere Esplorazione della selezione e denominazione delle risorse personalizzate con Esportazione di Azure per Terraform.

Limiti

Esportazione di Azure per Terraform è uno strumento complesso che tenta di convertire l'infrastruttura di Azure in codice e stato terraform. Le limitazioni note correnti sono illustrate nelle sottosezioni seguenti.

Proprietà di sola scrittura

Alcune proprietà all'interno di AzureRM sono di sola scrittura e non sono incluse nel codice generato creato da Azure Export per Terraform. Il problema viene risolto definendo la proprietà dopo l'esportazione nel codice HCL.

Vincoli tra proprietà

Il provider AzureRM può impostare due proprietà in conflitto tra loro. Quando Esportazione di Azure per Terraform legge proprietà in conflitto, può impostare entrambe le proprietà sullo stesso valore nonostante l'utente ne configuri solo una. Ulteriori complicazioni emergono quando esistono più vincoli tra proprietà all'interno della stessa configurazione generata. Per attenuare questo problema, è necessario sapere dove esistono conflitti tra proprietà all'interno della configurazione.

Infrastruttura esterna all'ambito delle risorse

Quando si usa Esportazione di Azure per Terraform per definire come destinazione gli ambiti delle risorse, le risorse necessarie per la configurazione potrebbero esistere al di fuori dell'ambito specificato. Un esempio è un'assegnazione di ruolo. L'utente deve identificare le risorse esterne all'ambito.

Proprietà di sola scrittura

Esportazione di Azure non può generare proprietà di sola scrittura (ad esempio password) all'interno della configurazione. È necessario conoscere le proprietà di sola scrittura e definirle in una configurazione per creare nuovi set di risorse.

Modifica del codice in base agli standard di codifica

Esistono alcune operazioni necessarie se l'utente vuole modificare il codice in modo da rispettare gli standard di codifica. Questi passaggi sarebbero necessari solo se l'utente prevede di usare il codice in ambienti nonandbox.

Risorse definite dalla proprietà

Alcune risorse in Azure possono essere definite come proprietà in una risorsa Terraform padre o come singola risorsa Terraform. Un esempio è una subnet. Esportazione di Azure per Terraform definisce la risorsa come singola risorsa, ma è consigliabile corrispondere alla configurazione di codifica esistente.

Dipendenze esplicite

Esportazione di Azure per Terraform è attualmente in grado di dichiarare solo dipendenze esplicite. È necessario conoscere il mapping delle relazioni tra le risorse per effettuare il refactoring del codice per includere eventuali dipendenze implicite necessarie.

Valori hardcoded

Esportazione di Azure per Terraform genera attualmente stringhe hardcoded. Come procedura consigliata, è consigliabile effettuare il refactoring di questi valori in variabili. Inoltre, quando si usa il --full-properties flag per esporre tutte le proprietà, alcune informazioni riservate (ad esempio segreti) possono essere visualizzate nella configurazione generata. Usare le procedure consigliate per proteggere la visibilità di questo codice.

Passaggi successivi