Applicare le procedure consigliate usando il modulo del toolkit di test
Quando si sviluppano modelli di Azure Resource Manager, è possibile semplificare la creazione di modelli validi e fornire suggerimenti per migliorarne la qualità. Quali sono queste raccomandazioni e perché metterle in pratica può essere vantaggioso per il modello?
I suggerimenti sono applicabili a diversi livelli, dai dati di configurazione, come parametri e variabili, alle risorse. Da un punto di vista generale, l'adesione a queste raccomandazioni può offrire i vantaggi seguenti:
Gestibilità. Quando si sviluppa un modello, dalla creazione all'aggiornamento, mantenerlo pulito e in ordine diventa complesso con il passare del tempo. Man mano che il modello aumenta di dimensione, aumentano anche i parametri e le variabili. È importante comprendere la funzione dei singoli costrutti e come usarli in modo appropriato.
Si immagini uno scenario in cui il nome di un parametro non è ben definito e si ha difficoltà a comprenderne la funzione oppure uno scenario in cui venga usato un valore hardcoded in una posizione non consentita e, in seguito a una modifica, i servizi di Azure vengano interrotti. Tutti questi problemi comportano un maggiore impegno nel dover comprendere gli elementi esaminati ed eventualmente eliminarli. Seguire una convenzione di denominazione corretta e mantenere puliti i modelli può aiutare a ridurre gli effetti di questi scenari.
Correttezza. È possibile provare a assegnare un nome appropriato a tutti gli elementi, ma potrebbero esistere troppe regole di cui tenere traccia. In tali situazioni è necessario disporre di uno strumento in grado di ricordare tutte queste regole e applicarle.
Flessibilità. I modelli dovrebbero essere sufficientemente flessibili da poter essere usati in qualsiasi ambiente. Se i modelli non vengono parametrizzati correttamente, potrebbe non essere possibile riutilizzarli.
Estendibilità. A volte si ha l'esigenza di aggiungere le proprie raccomandazioni. La propria azienda o il team con cui si lavora potrebbe aver definito regole specifiche da applicare.
Nota
La verifica del codice rispetto ai suggerimenti di questo tipo è talvolta definita linting.
Toolkit di test dei modelli di Resource Manager
L'uso di uno strumento di test è utile in quanto consente di concentrarsi sulla creazione con la consapevolezza che lo strumento troverà eventuali problemi e migliorerà i modelli. Uno strumento di questo tipo è disponibile: si tratta del toolkit di test dei modelli di Resource Manager, talvolta denominato ARM-TTK. Il toolkit risolve i problemi descritti sopra eseguendo una serie di test. I test possono essere raggruppati nelle categorie seguenti:
- Verifica dell'intento dell'utente. Questa categoria controlla se vengono usate tutte le variabili e i parametri dichiarati e visualizza un avviso in caso contrario.
- Applicazione delle procedure di sicurezza. Un altro aspetto importante consiste nel verificare che il modello non restituisca alcun dato che potrebbe essere sensibile, ad esempio i segreti delle API.
- Uso di costrutti di linguaggio appropriati. Usare costrutti di linguaggio o funzioni di supporto in modo da evitare di basarsi su valori hardcoded.
Nota
È bene chiarire che si tratta di raccomandazioni, non di requisiti, che tuttavia si consiglia di seguire.
Installazione dello strumento
Lo strumento è un modulo di PowerShell. Per poterlo eseguire, attenersi a questa procedura:
- Installare PowerShell. Questa attività viene eseguita in modo diverso a seconda che si usi Linux, Mac o Windows.
- Scaricare il modulo. Il modulo è ospitato in un repository GitHub. È possibile scaricarlo da GitHub o recuperarlo tramite un comando
git clone
. - Importare il modulo. Questo passaggio è un'istruzione di una sola riga, da immettere in una sessione di PowerShell, che rende disponibili i comandi di ARM-TTK.
Si vedrà come eseguire questa operazione nell'unità successiva. Dopo aver installato lo strumento, si è pronti per eseguire i test sul modello.
Esecuzione dei test
Per l'esecuzione dei test, è necessario richiamare il modulo con i parametri appropriati. -TemplatePath
è un parametro obbligatorio che prevede una stringa che punta alla posizione del file del modello di distribuzione. Il nome file del modello deve essere azuredeploy.json o maintemplate.json. Un'esecuzione dei test tipica può quindi avere un aspetto simile al comando seguente:
Test-AzTemplate -TemplatePath path/to/template
Lo strumento esegue il test del file del modello e anche dei file di modello inclusi nella stessa directory e nelle relative sottocartelle.
Un output tipico di un'esecuzione dei test può essere simile al seguente:
[+] adminUsername Should Not Be A Literal (24 ms)
[+] apiVersions Should Be Recent (18 ms)
[+] artifacts parameter (16 ms)
[+] DeploymentTemplate Schema Is Correct (17 ms)
[+] IDs Should Be Derived From ResourceIDs (15 ms)
[-] Location Should Not Be Hardcoded (41 ms)
azuredeploy.json must use the location parameter, not resourceGroup().location (except when used as a default value in the main template)
I test con esito positivo sono codificati in verde e preceduti da [+]
. I test con esito negativo sono codificati in rosso con il prefisso [-]
.
Configurare l'esecuzione dei test con parametri di test
Si è già visto che il parametro -TemplatePath
è obbligatorio durante l'esecuzione dello strumento. Lo strumento accetta anche parametri facoltativi, che consentono di eseguire file specifici o test specifici. L'uso di questi parametri offre un controllo più granulare sia nella creazione che nel debug dei modelli.
Il parametro -File
viene usato per eseguire un file specifico. Il parametro -Test
consente di specificare uno scenario di test da eseguire.
I parametri possono essere usati nei modi seguenti:
Eseguire test su un solo file. È possibile eseguire test su un solo file su cui si sta attualmente lavorando. In questo modo è più facile concentrarsi sulla creazione di un file modello specifico. Un altro vantaggio è che l'output contiene meno elementi non significativi e mostra solo i dati a cui si è interessati. Usando il parametro
-File
con il percorso di un file (incluso il nome file), è possibile eseguire i test solo sul file.Importante
Il parametro prevede comunque la presenza del file azuredeploy.json o maintemplate.json nella posizione specificata.
Eseguire un singolo tipo di test su tutti i file. A volte è possibile eseguire un singolo tipo di test per verificare che siano soddisfatti i criteri per lo scenario specifico. È possibile eseguire questa attività usando il parametro
-Test
. Per questo parametro è necessario specificare il nome completo del test tra virgolette, ad esempio Resources Should Have Location.