Objectif du lab: Déployer des machines virtuelles à l’aide de PowerShell pour Azure. Nous essayerons de mettre en place l’architecture ci-dessus.
Etape 1 : Créer votre compte azure gratuitement
Je vous invite à utiliser ce tuto pour créer votre compte azure.
Etape 2 : Connectez-vous à votre tenant Azure à l’aide d’Azure PowerShell
Si vous n’avez pas encore installé Azure PowerShell, visiter ce lien sinon lancer PowerShell depuis votre poste de travail (je préfère utiliser PowerShell ISE)
Saisir la commande suivante pour vous connecter
Entrer les informations d’authentifications à votre compte
Une fois la connexion réussie, les informations de votre tenant s’affichent en dessous
Vous voilà maintenant prêt pour la mise en place du lab 🙂 !
Etape 3 : Définition des variables pour le déploiement des serveurs
#################### Définition des variables ################ #Les variables du script $SubscriptionName = "moncompteazure" #Nom de votre tenant Azure $StorageAccountName = "strgaccnt0508" #Nom de votre compte de stockage qui contiendra les composants Azure que nous allons déployer $ResourceGroupName = "rscgrp0508" #Regroupe toutes les ressources/composants de notre lab (VMs, NICs, IPs...) $Location = "West Europe" #Emplacement géographique de notre tenant Azure $SkuName = "Standard_LRS" $vms = @("WAP01azlab0408","WAP02azlab0408","ADFS01azlab0408","ADFS02azlab0408") #Les noms de nos VMs $VMSize = "Standard_A1" #Taille de la VM $PublisherName = "MicrosoftWindowsServer" $Offer = "WindowsServer" #Type de VMs $Skus = "2016-Datacenter" #Système d'exploitation $Version = "latest" $nicIndex = 1 $intNicId = -1 #Network name $vnetName = "az_demolab_network" #Subnets Names $int = "INT" $lan = "LAN" $subnets = @("int","lan") #Subnets Address Prefixes $vnet_Addr_Prefix = "10.10.0.0/16" $int_Addr_Prefix = "10.10.1.0/24" $lan_Addr_Prefix = "10.10.2.0/24" #Internet IP addresses $wap_intIpName = @("","") ##WAP Network config #NIC config $nic_Lan_WAP01 = "nic_Lan_WAP01" $nic_Lan_WAP02 = "nic_Lan_WAP02" $nic_int_WAP01 = "nic_int_WAP01" $nic_int_WAP02 = "nic_int_WAP02" #lan 10.10.2.1x $lan_ip_WAP01 = "10.10.2.11" $lan_ip_WAP02 = "10.10.2.12" ##FS Network Config #NICs $nic_Lan_FS01 = "nic_Lan_FS01" $nic_Lan_FS02 = "nic_Lan_FS02" #lan 10.10.2.2x $lan_ip_FS01 = "10.10.2.21" $lan_ip_FS02 = "10.10.2.22" #Network security groups $networkSecurityGroupName = "az_demolab$(Get-Random)" $NetworkSecurityRuleConfig_RDP = "az_demolab_NSRCfg_RDP" $NetworkSecurityRuleConfig_HTTP = "az_demolab_NSRCfg_HTTP" [int]$DestinationPortRange_RDP = 3389 [int]$DestinationPortRange_HTTP = 80
Etape 4 : Configuration des composants réseaux
############################# Network Config ########################### #Creating Resource group New-AzureRmResourceGroup -Name $ResourceGroupName -Location $Location #Creating Resource storage New-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -Location $Location -SkuName $SkuName #Create two virtual subnets INT and LAN $subnet_int_Addr_Pr = New-AzureRmVirtualNetworkSubnetConfig -Name $int -AddressPrefix $int_Addr_Prefix $subnet_lan_Addr_Pr = New-AzureRmVirtualNetworkSubnetConfig -Name $lan -AddressPrefix $lan_Addr_Prefix #Create virtual Networks $vnet = New-AzureRmVirtualNetwork -ResourceGroupName $ResourceGroupName -Name $vnetName -AddressPrefix $vnet_Addr_Prefix -Location $Location -Subnet $subnet_int_Addr_Pr,$subnet_lan_Addr_Pr #Create virtual public ips for the WAP Servers $i = 0 Do { $wap_intIpName[$i] = New-AzureRmPublicIpAddress -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod Dynamic -IdleTimeoutInMinutes 4 -Name ("wap0" + ($i+1) + "_intIp") $i +=1 } While ($i -lt 2)
Etape 5 : Création des groupes de sécurité
###################### Network Security Groups config #################### # Create an inbound network security group rule for port 3389 $SecurityRulesRDP = New-AzureRmNetworkSecurityRuleConfig -Name $NetworkSecurityRuleConfig_RDP -Protocol Tcp -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange $DestinationPortRange_RDP -Access Allow # Create an inbound network security group rule for port 80 $SecurityRulesHTTP = New-AzureRmNetworkSecurityRuleConfig -Name $NetworkSecurityRuleConfig_HTTP -Protocol Tcp -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange $DestinationPortRange_HTTP -Access Allow # Create a network security group $NetworkSecurityGroup = New-AzureRmNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Location $Location -Name $networkSecurityGroupName -SecurityRules $SecurityRulesRDP,$SecurityRulesHTTP
Etape 6: Création des Machines Virtuelles
#################### Creating NICs and VMs ######################### #Récupération des informations d'authentification du compte admin local des VMs $cred = Get-Credential ForEach ($vm in $vms) { #Création des interfaces réseaux lan pour les WAP et les FS $lanNic = New-AzureRmNetworkInterface -Name ($vm + "_lanNic" + $nicIndex) -ResourceGroupName $ResourceGroupName -Location $Location -SubnetId $vnet.Subnets[1].Id -NetworkSecurityGroupId $NetworkSecurityGroup.Id #Configuration des VMs WAP if ($vm -ilike "WAP*"){ $intNicId += 1 #Création des interfaces réseaux internet pour les WAP $intNic = New-AzureRmNetworkInterface -Name ($vm + "_intNic" + $nicIndex) -ResourceGroupName $ResourceGroupName -Location $Location -PublicIpAddressId $wap_intIpName[$intNicId].Id -SubnetId $vnet.Subnets[0].Id -NetworkSecurityGroupId $NetworkSecurityGroup.Id $vmConfig = New-AzureRmVMConfig -VMName $vm -VMSize $VMSize | Set-AzureRmVMOperatingSystem -Windows -ComputerName $vm -Credential $cred | Set-AzureRmVMSourceImage -PublisherName $PublisherName -Offer $Offer -Skus $Skus -Version $Version | Add-AzureRmVMNetworkInterface -Id $intNic.Id -Primary $vmconfig = $vmConfig | Add-AzureRmVMNetworkInterface -Id $lanNic.Id } #Configuration des VMs FS else { $vmConfig = New-AzureRmVMConfig -VMName $vm -VMSize $VMSize | Set-AzureRmVMOperatingSystem -Windows -ComputerName $vm -Credential $cred | Set-AzureRmVMSourceImage -PublisherName $PublisherName -Offer $Offer -Skus $Skus -Version $Version | Add-AzureRmVMNetworkInterface -Id $lanNic.Id } #Création de la Machine Virtuelle New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $vmConfig }
…Ps: vous pouvez exécuter toutes ces étapes en une seule fois en collant les bouts de script les uns à la suite des autres 🙂
Etape 7 : Vérification du bon déploiement des serveurs et de leurs composants
#Le groupe de ressources
#Les Machines virtuelles créées
#Les composants réseaux
Nous sommes à la fin de notre déploiement… 🙂
Leave a Reply