Créer une machine Windows Azure avec PowerShell

Envoyer

Sommaire

 

 

Introduction

Passer par PowerShell va permettre d’automatiser la création et le provisionnement de machines virtuelles sur Windows Azure. Il sera même, dans certains cas, impératif de l’utiliser  pour palier à  des contraintes techniques.

Nous allons voir donc voir comment créer une machine virtuelle sous Windows Azure avec PowerShell.

 

 

Les prérequis

Il va falloir récupérer le module PowerShell de Windows Azure (disponible ICI) et l’installer.

Une fois le module PowerShell installé, il va falloir ensuite récupérer le certificat permettant d’accéder à votre plateforme Windows Azure. Pour cela :

  • Lancez PowerShell
  • Importez le module PowerShell Windows Azure à l'aide de la commande « Import-Module 'C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure\Azure.psd1' »
  • Saisissez la commande « Get-AzurePublishSettingsFile »

 

Votre navigateur va automatiquement se connecter au site Microsoft, générer le fichier de certificat et vous proposer de le télécharger.

Attention !!! Stockez-le dans un endroit sécurisé car il contient toutes les informations d’accès à votre plateforme.

Si vous avez besoin de récupérer une nouvelle fois le certificat, il vous suffit de vous connecter sur le portail Windows Azure, de vous rendre dans « Paramètres » et de cliquer sur « Télécharger » situé en bas du portail.

 

 

 

 

 

 

 

 

 

Le script de création

Le script que vous nous proposons a été récupéré depuis l’article Microsoft « Install a new Active Directory forest in Windows Azure » avec quelques modifications. Il faudra adapter les variables à votre environnement et à vos besoins.

 
# Import du module PowerShell Windows Azure
Import-Module 'C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure\Azure.psd1'
 
# Import du certificat de connexion
Import-AzurePublishSettingsFile 'C:\temp\MyWindowsAzureService.publishsettings'
 
# Defini la souscription Azure à utiliser
#Set-AzureSubscription -SubscriptionName "Services de la plateforme Windows Azure pour Visual Studio Profe" -CurrentStorageAccount alexwinner
Select-AzureSubscription -SubscriptionName "Services de la plateforme Windows Azure pour Visual Studio Profe"
 
# Nom de la VM
$VMComputerName = 'MYVM-01'
 
# Précise un nom de service
$CloudServiceName = 'AAR-DC-SVC11'
 
# Le groupe d'affinité à utiliser
$AffinityGroupName = 'GroupeAffinite1'
 
# Le réseau virtuel à utiliser
$NetworkName = 'ReseauCloud'
 
# Référence VHD de système d'exploitation
$ImageName = 'a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-Datacenter-201212.01-en.us-30GB.vhd'
 
# Création  des serveurs DNS utilisés par la VM
$PrimaryDNS = New-AzureDNS -Name 'AARDNS' -IPAddress '192.168.150.100'
$SecondaryDNS = New-AzureDNS -Name 'AARDNS1' -IPAddress '127.0.0.1'
 
# Génére la configuration de la VM
$MyVM = New-AzureVMConfig -name $VMComputerName -InstanceSize 'Small' -ImageName $ImageName |
 Add-AzureProvisioningConfig -Windows -Password 'Test1234!' |
 Set-AzureSubnet -SubnetNames 'ReseauAD'
 
# Création de la VM
New-AzureVM -ServiceName $CloudServiceName -AffinityGroup $AffinityGroupName -VMs $MyVM -DnsSettings @($PrimaryDNS,$SecondaryDNS) -VNetName $NetworkName
 

 


Explication du script ligne par ligne

Nous importons en tout premier lieu le module PowerShell Windows Azure avec la commande « Import-Module 'C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShell\Azure\Azure.psd1' ».

 

Nous spécifions le certificat de connexion à utiliser avec la commande « Import-AzurePublishSettingsFile [CERTPATH] ».

 

Il faut que nous sélectionnons la souscription Windows Azure à l’aide de la commande « Select-AzureSubscription -SubscriptionName [NAME] ». Pour obtenir la liste des souscriptions ou ne serait-ce que le nom de votre souscription, vous pouvez utiliser la commande « Get-AzureSubscription | Select SubscriptionName ».

 

Il faut ensuite définir les paramètres généraux de la machine virtuelle par le biais de variables :

  • Le nom de la machine : $VMComputerName = [NAME]
  • Le service « Cloud » (nom d’hôte qui peut être partagé pour assurer la répartition de charge et de la tolérance de panne): $CloudServiceName = [NAME]
  • Le réseau virtuel : $NetworkName = [NAME]
  • Le groupe d’affinité (de préférence le même groupe que celui associé au réseau virtuel) : $AffinityGroupName = [NAME]

Remarque : vous pouvez utiliser la commande « Test-AzureName –Service [NAME] » pour vérifier la disponibilité du nom de votre service Cloud.


Il s’agit de définir désormais le type de système d’exploitation que vous allez utiliser. Pour cela, vous devrez spécifier au sein d’une variable le nom de l’une des images proposées au sein de Windows Azure. Il faut donc au préalable avoir la liste des images disponibles. Pour cela, saisissez la commande « Get-AzureVMImage | ft –Property ImageName,Label -Wrap -AutoSize ».

 

Il ne reste plus qu’à récupérer la valeur de la propriété ImageName au sein d’une variable (dans notre exemple nous avons décidé de déployer l’image de Windows Server 2012).

 

Etape facultative : Un des avantages de passer par PowerShell pour la création de notre VM est de pouvoir associer un paramétrage DNS tout en conservant l’adressage automatique impérativement nécessaire au sein de Windows Azure. Cela est particulièrement intéressant pour le déploiement de contrôleurs de domaine qui doivent disposer d’une configuration spécifique. Nous allons créer deux objets contenant les paramètres DNS pour définir un serveur DNS préféré et un serveur DNS secondaire par le biais des deux commandes suivantes :

  • $PrimaryDNS = New-AzureDNS –Name [NAME]-IPAddress [ADRESSEIP]
  • $SecondaryDNS = New-AzureDNS –Name [NAME] -IPAddress [ADRESSEIP]


Nous allons maintenant générer la configuration de notre machine virtuelle à l’aide des cmdlets suivantes :

  • New-AzureVMConfig : pour spécifier l’image à déployer et définir la taille de la machine virtuelle (ExtraSmall, Small, Medium, Large, ExtraLarge).
  • Add-AzureProvisioningConfig : pour préciser le mot de passe du compte « administrator ».
  • Set-AzureSubnet : pour attacher la machine virtuelle à un des sous-réseaux associés à notre réseau virtuel $NetworkName.

 

La commande  PowerShell est donc la suivante : $MyVM = New-AzureVMConfig -name $VMComputerName -InstanceSize 'Small' -ImageName $ImageName | Add-AzureProvisioningConfig -Windows -Password '*****' | Set-AzureSubnet -SubnetNames 'ReseauAD'


 

L’ultime étape est donc la création de la machine virtuelle. Il suffit juste de saisir la commande suivante : « New-AzureVM -ServiceName $CloudServiceName -AffinityGroup $AffinityGroupName -VMs $MyVM -DnsSettings @($PrimaryDNS,$SecondaryDNS) -VNetName $NetworkName »

Remarque : Supprimer le paramètre « DnsSettings » si vous n’avez pas à définir de serveurs DNS spécifiques.

 

 

 

How to Find Active Directory Schema Update History by Using PowerShell

Mise à jour le Lundi, 28 Janvier 2013 11:55