Azure IaaS : Gérer votre infrastructure Azure IaaS avec PowerShell

Azure IaaS : Gérer votre infrastructure Azure IaaS avec PowerShell

  • Comments 4
  • Likes

Partie 1 : Initiation à la création des éléments Azure.

Auteur: Jérémy Leflon – Jeremy.Leflon@microsoft.com

 

Microsoft a mis à disposition des exploitants Azure un set de Cmdlet PowerShell permettant la création et la gestion des objets Azure. L’objectif de cet article est de présenter les commandes principales à utiliser par les administrateurs pour la création des machines virtuelles dans les cloud services correspondants.

Cet article se consacre à la gestion des artefacts suivants :

  • Groupes d’affinités,

  • Cloud Services,

  • Comptes de stockage,

  • Machine Virtuelles et groupes de disponibilité

  • Disques de données supplémentaires

 

Prérequis pour l’accès à la souscription Azure

  • Téléchargez et installez le module Windows Azure PowerShell à travers le Microsoft Web Platform Installer (http://azure.microsoft.com/en-us/documentation/articles/install-configure-powershell/).

Plus d’informations sont disponibles sur : http://azure.microsoft.com/en-us/documentation/articles/install-configure-powershell/

 

  • Pour utiliser le module de cmdlets PowerShell pour Azure, il faut ouvrir le raccourci « Windows Azure PowerShell » ou importer le module Azure PowerShell dans votre prompt PowerShell ou ISE par la commande suivante : 

Import-Module "C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\ServiceManagement\Azure\Azure.psd1"

 

  • Être administrateur de la souscription Azure

     

Connexion à la souscription Azure

Source : http://azure.microsoft.com/fr-fr/documentation/articles/install-configure-powershell/

Les opérations de gestion de la souscription nécessite une authentification préalable auprès du service Azure.

Pour cela, il existe deux méthodes d’authentification à la souscription Azure :

  1. Par l’utilisation de la cmdlet « Add-AzureAccount » qui ouvre un prompt demandant les credentials. L’authentification n’est valable qu’à travers le contexte du prompt utilisé et doit être réalisé si la session a expiré.
  2. Par certificat d’authentification
    1. Ouvrir le prompt Azure PowerShell
    2. Exécuter la commande Get-AzurePublishSettingsFile qui ouvrira une page web nécessitant les informations de connexion   Note : il peut être nécessaire de supprimer les cookies existants si vous utilisez plusieurs Microsoft Account.
    3. Téléchargez le fichier de profil
    4. Retournez sur le prompt PowerShell et exécutez la commande suivante :

Import-AzurePublishSettingsFile « Chemin du file-credentials.publishsettings »

 

1            Sélection de la souscription d’exécution

Suite à l’authentification de l’utilisation à la plateforme Azure, il est nécessaire de préciser la souscription d’exécution si vous êtes administrateur de plusieurs plateformes.

Pour sélectionner la souscription, exécutez la cmdlet suivante :

  • Définition Variable prérequis

    • $mySubscription

  • Cmdlet :

select-azureSubscription $mySubscription

Pour connaître la liste des souscriptions Azure disponible pour le compte authentifié, utilisez la cmdlet suivante

Get-AzureSubscription

 

2            Création des artefacts de la souscription

2.1            Création des groupes d’affinités

Les groupes d'affinités permettent de regrouper les services qui doivent fonctionner ensemble afin d'optimiser les performances. Cela permet de réduire la latence et augmente les performances.

Référence : http://msdn.microsoft.com/fr-fr/library/windowsazure/jj156085.aspx

La création d’un groupe d’affinité est un prérequis à la création des Cloud Services.

  • Définition Variable prérequis

$affinityGroupName : nom du groupe d’affinité du service

$location : « West Europe » / « North Europe » …

$label : Label du groupe d’affinité – visible en PowerShell

$description : Description du groupe d’affinité – visible en PowerShell

  • Cmdlet :

   New-AzureAffinityGroup -Name $affinityGroupName -Location $location -Label $label -Description $description

2.2            Création de Cloud Service

Le cloud service Azure est un ensemble regroupant d’autres artefacts azure, joignables par l’intermédiaire du Cloud Service qui porte une adresse publique.

Le nom du service de cloud sera unique et sous la forme {$cloudServiceName}.cloudapp.net

  • Définition Variable prérequis

$cloudServiceName : nom du Cloud Service à créer

$affinityGroupName : nom du groupe d’affinité du service

 

  • Cmdlet :

     

New-AzureService –ServiceName $cloudServiceName –AffinityGroup $affinityGroupName

 

2.3            Création des comptes de stockage

Azure fournit 3 types de comptes de stockage, de façon à laisser le choix en termes de performances et sécurité la main mise sur leur infrastructure :

  • LRS : Locally Redundant Storage : Toutes les données stockées sont répliquées de manière synchrone sur trois nœuds de stockage différents dans la même région

    • 10 Gbps en entrée

    • 15 Gbps en sortie

  • GRS : Geo-Redundant Storage : En plus de la réplication sur trois nœuds de stockage comme sur le LRS, les transactions sont aussi mises en queues pour une réplication asynchrone sur une seconde région où les données sont aussi stockées sur trois autres nœuds de stockage.

    • 5 Gbps en entrée

    • 10 Gbps en sortie

  • RA-GRS : Read-Access Redundant Storage

    • Même capacités de transfert que le GRS.

    • Un accroissement des vitesses de lecture / disponibilité.

Note : Par défaut, les comptes de stockage sont créés en GRS.

  • Définition Variable prérequis

$storageAccountName="nomduStockage"

$storageAccount_Description="Description du Stockage"

$affinityGroupName

  • Cmdlet

new-azurestorageaccount -storageaccountname $storageAccountName -AffinityGroup $affinityGroup 

set-azurestorageaccount -storageaccountname $storageAccountName  -description $storageAccount_Description

Pour définir un compte de stockage en LRS :

 Set-AzureStorageAccount -StorageAccountName $storageAccountName -GeoReplicationEnabled $false 

Informations complémentaires : http://blogs.msdn.com/b/windowsazurestorage/archive/2013/12/04/introducing-read-access-geo-replicated-storage-ra-grs-for-windows-azure-storage.aspx

 

2.4            Création des machines virtuelles

2.4.1        Description des Availability Set

Pour garantir la disponibilité des ressources, Azure met à disposition une fonctionnalité gérant un couche supplémentaire de redondance appelée “Availability Set”.

Ce mécanisme va forcer l’exécution de 2 machines virtuelles opérant les mêmes fonctions ou services sur au moins deux hyperviseurs différents de façon à garantir le niveau de service.

 

Dans le schéma suivant, les machines virtuelles tournent sur 2 « Racks » au sens physiques du terme.

2.4.2        Définition de l’image disque source

Les machines virtuelles sont provisionnées avec une image OS.  La liste des noms des images sources peuvent être récupérées par l’utilisation de la cmdlet :

Get-AzureVmImage

 

 

Pour éviter de parcourir l’ensemble des éléments, il est possible d’utiliser la commande suivante pour variabiliser le nom de la dernière image Windows Server 2012 par exemple :

$imageName=(Get-AzureVMImage -Verbose:$true | Where-Object {$_.label -like “Windows Server 2012 R2 Datacenter*”}| Sort-Object –Descending PublishedDate)[0].ImageName

2.4.3        Création de la configuration de la machine

Avant de provisionner la machine, il est nécessaire de configurer l’élément à l’aide de la cmdlet New-AzureVMConfig sur lequel vous pouvez Piper le cmdlet Add-AzureProvisioningConfig permettant de définir des informations systèmes (nom et mot de passe de l’administrateur), la timezone de la machine.

Il est aussi possible d’y ajouter les informations réseaux tels que le subnet d’appartenance et l’adresse IP fixe de la machine (cas des contrôleurs de domaine).

Note : le currentStorageAccount de la souscription utilisée doit être provisionnée

  • Définition des variables :

#Information de connexion :

$subscription : Souscription de creation de machine

 #information sur la machine à créer

$cloudServiceName : Nom du cloud service pour la machine

$NomVm : nom de la machine virtuelle cible

$storageAccountName : Nom du compte de stockage du disque OS de la machine

$size : taille de la machine : Small / Large / A6/A7/A8

$availSet : nom du groupe de disponibilité de la machine

$imageName=(Get-AzureVMImage -Verbose:$true | Where-Object {$_.label -like “Windows Server 2012 R2 Datacenter*”}| Sort-Object –Descending PublishedDate)[0].ImageName

 #information sur le disque OS

$diskName : nom du disque utilisé pour le stockage

$diskLabel = $diskName + "- OS"

$urlMedia = “https://"+$storageAccountName+”.blob.core.windows.net/vhds/”+$diskName+”.vhd”

 #Information OS Windows

$admUser : nom du compte administrateur local

$admPwd : mot de passe du compte administrateur local

 $timeZone : Nom de la zone time pour la machine ("Romance Standard Time" pour Paris par ex)

 #Information Réseau

$vNET : nom du réseau virtuel d’appartenance

$subnetName : nom du subnet d’appartenance de la machine

$staticIP : adresse IP de la machine

 

 

Le script ci-dessous créé la machine correspondant aux paramètres définis plus haut :

         $VM1 = New-AzureVMConfig -Name $NomVm -InstanceSize $size -ImageName $imageName -DiskLabel $diskLabel –MediaLocation $urlMedia -AvailabilitySetName $availSet `

             | Add-AzureProvisioningConfig -adminUserName $admUser -Password $admPwd -Windows -TimeZone $timeZone `

| Set-AzureSubnet -SubnetNames $subnetName `

             | Set-AzureStaticVNetIP -IPAddress $staticIP

 New-AzureVM -VMs $VM1 -ServiceName $cloudServiceName –VnetName $vNET

 

 

Note : si le currentStorageAccount n’est pas défini, il est possible que le script décrit ne s’exécute pas et l’erreur PowerShell suivante se produit :


 

Pour connaitre la valeur de cet attribut, utilisez la ligne de commande PowerShell suivante :

 Get-AzureSubscription

Pour résoudre cette erreur, tapez la commande suivante :

 

set-AzureSubscription -SubscriptionName $subscription -CurrentStorageAccount $storageAccountName

3            Ajout d’un disque de données

Chaque machine virtuelle créée possède un disque OS et un disque non persistent. Pour ajouter un disque de données persistant supplémentaire, il est possible d’ajouter des volumes par l’utilisation de cmdlet PowerShell.

 

En plus des variables définies précédemment, les variables suivantes doivent être provisionnées :

 

$storageAccountName     : Nom du compte de stoickage Cible

$vmName    : Nom de la machine virtuelle

$cloudServiceName : Nom du cloud Service

$typeDisk :      Type de disque pour information ("DATA"/"LOG"/"BACKUP"...)

$diskSize :      Taille de l’espace disque du volume à créer en Go

$lunID : Index de LUN (3/4/5…)

$diskNameDataDisk= $vmName+ « . » + $typeDisk      Nom du disque généré automatiquement

$urlMediaDataDisk = « https:// » +$storageAccountName+ «.blob.core.windows.net/vhds/”+$diskName+”.vhd”    URI d’accès au fichier VHD généré automatiquement pour le disque supplémentaire

 

Création du disque supplémentaire et rattachement à la VM :

Get-AzureVM -ServiceName $cloudServiceName -Name $vmName `

| Add-AzureDataDisk -CreateNew -DiskSizeInGB $diskSize -LUN $lunID -MediaLocation $urlMediaDataDisk -DiskLabel $diskNameDataDisk`

| Update-AzureVM

 

- Commande Get-AzureVM

  • Le paramètre -ServiceName correspond au nom du Cloud Service

  • Le paramètre -Name correspond au nom de la VM

         

- Commande Add-AzureDataDisk

  • Le paramètre -CreateNew est obligatoire

  • Le paramètre -DiskSiezInGb indique la taille du disque en GB

  • Le paramètre -LUN correspond au numéro d'attachement du disque (cf Raw Device mapping), cet index doit être incrémenté à chaque disque ajouté.

  • Le paramètre -MediaLocation correspond à l'URL du disque virtuel VHD.

                

 

Voilà qui clôture le premier billet sur la création des artefacts IaaS sur Azure.

 

Jérémy Leflon – Jeremy.Leflon@microsoft.com

Comments
  • Merci pour ce post très instructif. Il me sera utile pour tester Azure !

  • Merci pour ce poste très détaillé !

  • Très bon article
    vivement la suite !

  • Très bon article

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment