Blog de Florent Appointaire

Blog sur les technologies Microsoft (Windows Server, System Center, Azure, Windows Azure Pack/Azure Stack, etc;)

AzureAutomation

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é:

SNAGHTMLc2d20

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é:

image60image61SNAGHTMLf7287image62

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:

image63

Cliquez sur Add et remplissez chaque champ:

image64

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:

image65

Ajoutez ensuite des variables qui seront utilisées dans votre script PowerShell, dans mon cas, le nom des VMs:

image66

Créez également des planifications si vous voulez lancer automatiquement des runbooks:

image67

Quand vous avez terminé, retournez à la page d’accueil du compte et sélectionnez Runbooks:

image68

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:

image69

Utilisez le script suivant, en adaptant le nom de la commande Get-AutomationPSCredential:

$Cred = Get-AutomationPSCredential -Name ‘SCUGBECred’
Add-AzureAccount -Credential $Cred

Select-AzureSubscription -SubscriptionName “Free Trial”

Cliquez sur Save puis sur Publish:

image70

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:

SNAGHTML6edc9d

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:

image71

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):

image72image73

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.

Facebook Like
Anonymous