Aujourd’hui, nous allons nous pencher sur le service Azure Automation Account (AA) et plus particulièrement sur l’utilisation des variables qui sont très utiles au sein des runbooks, qui sont comparables à des scripts.
Azure Automation Account : Mais qu’est-ce donc ?
En se rendant sur la page officielle du service, Azure Automation Account est décrit comme :
Un service d’automatisation et de configuration cloud prenant en charge une gestion cohérente de vos environnements Azure et non-Azure. Il comprend l’automatisation des processus, la gestion de la configuration, la gestion des mises à jour, les fonctionnalités partagées et les fonctionnalités hétérogènes.
Pour faire simple, cela permet de déporter :
- L’exécution de scripts (Powershell ou Python) dans Azure
- La gestion de configurations – Desired State Configuration – DSC (Installation de logiciels, définition de configurations (DNS, proxy, …)
- La gestion des mises à jour
- …
Afin de répondre à nos besoins, des ressources partagées (Cf. lien ci-dessus) sont mises à notre disposition. Cet article sera l’occasion d’aborder les variables, inhérentes à tous scripts.
Cas d’usage :
Nous allons créer un AA, dans lequel un runbook de type Powershell sera exécuté pour arrêter une VM de manière programmatique, c’est à dire avec un Service Principal Name.
Création d’un Service Principal Name – SPN
Lors de la création d’un AA, il est possible de créer un SPN qui aura automatiquement le rôle de Contributeur sur l’ensemble de la souscription. Mais pour éviter d’avoir une multitude de SPN à gérer, je fais le choix d’en créer un en amont, qui pourra être utilisé (ou non) par plusieurs services, mais l’intérêt est surtout de lui attribuer uniquement les droits nécessaires à son utilisation.
Pour utiliser un SPN au sein d’Azure, il faudra récupérer certains éléments au cours des prochaines étapes comme :
- L’ ID de la souscription Azure (SubscriptionId)
- L’ID de votre tenant (TenantId)
- L’ID du SPN (ApplicationId/ClientId)
- L’ID du mot de passe du SPN (SecretId)
Dans le menu Azure AD
On crée le nouveau SPN
Il suffit de définir un nom et un scope sur lequel le SPN pourra intervenir. Ne disposant que d’une seule souscription je choisis la première option
On génère un mot de passe
La génération du mot de passe appelé secret, est primordiale, car une fois effectuée et la fenêtre fermée, il ne sera plus visible par la suite, donc pensez bien à l’enregistrer sinon il faudra un créer un nouveau, qu’il faudra penser à enregistrer sinon … (Boucle infinie ;))
Une fois mon SPN créé, sp-demo-onag, nous lui attribuons les droits nécessaires Virtual Machine Contributor au niveau de la souscription qui lui permettront en autres, d’arrêter la VM, et nous en profitons pour récupérer l’Id de la souscription.
La création du SPN est maintenant terminée, nous allons pouvoir passer à la création de la VM.
Création de la VM
Passons maintenant à la création de l’AA.
Création de l’Automation Account
Import des modules Powershell
Maintenant que l’AA est créé et comme nous allons exécuter un script Powershell, nous allons devoir importer les modules nécessaires à sa bonne execution, à savoir :
Az.Accounts : Pour nous authentifier avec le SPN créé précédemment. C’est aussi un pré-requis pour l’installation du module suivant
Az.Compute : Pour interagir avec la VM, notamment pour l’arrêter.
Une fois les 2 modules installés (Cf. leur status), nous passons à la partie qui nous intéresse vraiment, les variables.
Définition des variables
- L’ ID de la souscription Azure (SubscriptionId)
- L’ID de votre tenant (TenantId)
- L’ID du SPN (ApplicationId/ClientId)
- L’ID du mot de passe du SPN (SecretId)
- Le Ressource Groupe de la VM (ResourceGroup)
- Le Nom de la VM (VmName)
Normalement, nous devrions avoir toutes ces informations à disposition, nous pouvons donc débuter la définition de nos variables.
Toutes les variables seront créées de la même manière, seule spécificité, on cochera l’option « Encrypted » pour la variable SecretId
Création du runbook
Maintenant les variables définies, nous pouvons lancer la création d’un runbook Powershell, notre script.
Pour rappel, l’idée est d’avoir un petit script qui permette de s’authentifier à Azure au travers du SPN créé précédemment et d’arrêter une VM définie.
Une fois le runbook créé, une nouvelle fenêtre s’ouvre, dans laquelle je copie mon script, il ne restera plus qu’à déclarer les variables précédemment créés. Pour cela, il suffit de se positionner à l’endroit ou l’on souhaite définir la valeur de notre variable, cliquer sur les … et sélectionner Add « Get Variable » to canvas.
Je répète l’opération pour l’ensemble des variables et termine en cliquant sur Save et Publish.
Attention : Les paramètres Get variable et Set variable ne sont pas utilisables dans un script Powershell standard mais uniquement dans un script powershell dans un Automation Account.
Exécution du runbook
Ne reste plus qu’à tester notre script en cliquant sur Start.
L’onglet Output nous fournira les éléments de sorties.
Et si tout se passe bien, on voit que notre VM a été arrêté par le SPN sp-demo-onag que nous avions créé à cet effet.
Conclusion :
L’utilisation des variables dans le cadre de l’Automation Account n’est donc pas très compliqué et plutôt pratique pour éviter de stocker des informations critiques au sein même de son script.
Pour aller plus loin :
Vous pouvez vous exercer à :
- Associer un schedule à un runbook
- Utiliser d’autres ressources partagées
- Tester le DSC
- Tester la gestion des mises à jour OS
- En apprendre d’avantage sur les modules de l’AA