Recentemente il team Azure SDK ha rilasciato la prima versione stabile delle librerie per la gestione delle risorse.
Raccolte sotto lo spazio dei nomi Azure.ResourceManager
queste librerie andranno a sostituire tutte quelle attualmente presenti nello spazio dei nomi Microsoft.Azure.Management
e a differenza delle precedenti saranno suddivide per servizio.
Differenze con Bicep e ARM templates.
Se hai avuto modo di approvvigionare risorse Azure mediante uno di questi due pseudo-linguaggi hai sfruttato gli endpoint REST della risorsa deployments per la creazione dell’infrastruttura richiesta mediante il passaggio di un template in formato JSON strutturato e validato da un JSON Schema.
Le ragioni per cui prendere in considerazione l’utilizzo dei template sono innumerevoli, oltre l’integrazione con Visual Studio Code e Visual Studio è possibile distribuire le risorse ottenendo risultati ripetibili, mantenere uno storico delle distribuzioni e valutare la conformità agli standard aziendali attraverso i criteri di Azure.
Azure.ResourceManager.Resources
non implementa “nativamente” questo concetto ma comunque ne consente l’utilizzo in quanto attraverso la classe ArmDeploymentCollection
abbiamo modo operare sugli stessi endpoint REST utilizzati da Bicep e ARM templates.
Creare una nuova distribuzione.
Per ottenere una nuova distribuzione dobbiamo dotarci di un ArmClient
passandogli un auth token con TokenCredential
.
Che ci consentirà di accedere alla sottoscrizione predefinita, in base alle credenziali fornite, con await client.GetDefaultSubscriptionAsync()
oppure all’ambito desiderato creando un identificativo della risorsa di interesse con ResourceIdentifier
e passandolo ad uno dei metodi client.GetSubscriptionResource(id)
o client.GetManagementGroupResource(id)
o ancora client.GetResourceGroupResource(id)
.
Ad esempio:
Non ci resta che creare un’istanza di ArmDeploymentContent
al quale possiamo passare il link ad un template esistente
oppure utilizzare la proprietà Template
per definire uno nostro.
In questo caso sarà necessario costruire un oggetto di tipo BinaryData
che rappresenti un JSON valido, ad esempio serializzando un dizionario.
|
|
E successivamente effettuare la chiamata al metodo CreateOrUpdate
per ottenere lo scopo.
Riferimenti utili.
- introduzione alla nuova esperienza di sviluppo: comparativa fra le vecchie librerie e le nuove
- principi progettuali alla base dell’SDK utili in caso doveste aprire segnalazioni di problemi incontrati nell’utilizzo
- lista comprensiva delle librerie attualmente in sviluppo: https://azure.github.io/azure-sdk/releases/latest/index.html?search=Azure.ResourceManager.