Je vais aujourd’hui vous montrer comment créer un Runbook sur Azure Automation, avec PowerShell.
Pour démarrer, j’ai une suscription Azure avec un Azure Active Directory lié:
La première étape va être de créer un compte dans cet Azure AD pour exécuter le Runbook PowerShell sur Azure Automation. Ce compte est un utilisateur standard, mais il a les droits administrateur sur la suscription Azure, où le Runbook est exécuté:
Maintenant, déconnecter vous et connectez vous à Azure avec le nouvel utilisateur pour changer son mot de passe. Une fois terminé, naviguez avec votre compte, sur https://portal.azure.com et sélectionnez Automation Accounts:
Cliquez sur Add et remplissez chaque champ:
Quand le compte est créé, déplacez vous à l’intérieur et cliquez sur Assets. Cliquez ensuite sur Credentials > Add a credential pour ajouter un compte qui exécutera le runbook. Utilisez le nom d’utilisateur et le mot de passe du compte Azure AD que vous avez créé auparavant:
Ajoutez ensuite des variables qui seront utilisées dans votre script PowerShell, dans mon cas, le nom des VMs:
Créez également des planifications si vous voulez lancer automatiquement des runbooks:
Quand vous avez terminé, retournez à la page d’accueil du compte et sélectionnez Runbooks:
Créez un nouveau Runbook, avec le nom Connect-AzureSubscription et comme Runbook type, PowerShell. Ce runbook récupèrera les informations de connexion que l’on a créé plus tôt:
Utilisez le script suivant, en adaptant le nom de la commande Get-AutomationPSCredential:
$Cred = Get-AutomationPSCredential -Name ‘SCUGBECred’
Add-AzureAccount -Credential $CredSelect-AzureSubscription -SubscriptionName “Free Trial”
Cliquez sur Save puis sur Publish:
Créez un nouveau runbook, et commez le Get-AzureVM. Collez le script suivant, en l’adaptant avec votre nom de variable:
.\Connect-AzureSubscription.ps1
$VMNames = Get-AutomationVariable -Name ‘VMName’
$VMName = $VMNames.split(“,”);foreach($VM in $VMName){
$serviceName = Get-AzureVM | Where {($_.Name -eq $VM)}
$service = $serviceName.ServiceName
$status = $serviceName.PowerState
Write-Output “The VM $VM with service name $service is $status”}
Sauvegardez. Vous pouvez essayer le script, via le Test pane:
Comme vous pouvez le voir, le test est effectué sur les 2 VM que j’avais renseigné dans ma varibale VMName. Cliquez sur Publish pour publier le runbook pour qu’il puisse être utilisé. Vous pouvez également lié la planification créée précédemment:
Après que l’heure de la tâche soit passée, votre script a dû s’exécuter. Allez dans Jobs pour voir si le job est terminé et vous pouvez cliquez sur Output pour avoir le résultat (si vous avez mis des logs ou autre):
Cette nouvelle fonctionnalité est très intéressante dans le cas de VM de dev. Vous pouvez toutes les arrêter la nuit pour économiser de l’argent.