Exercice : Créer une ressource Azure à l’aide de scripts dans Azure PowerShell

Effectué

Rappelez-vous notre scénario d’origine : la création de machines virtuelles pour tester notre logiciel CRM. Quand une nouvelle build est disponible, nous souhaitons créer rapidement une machine virtuelle afin de pouvoir tester l’expérience d’installation complète à partir d’une image propre. Une fois que nous avons fini, nous voulons supprimer la machine virtuelle.

Essayons les commandes pour créer une machine virtuelle.

Créer une machine virtuelle Linux avec Azure PowerShell

Étant donné que nous utilisons le bac à sable (sandbox) Azure, vous n’avez pas besoin d’un groupe de ressources. Au lieu de cela, utilisez le groupe de ressources [nom du groupe de ressources de bac à sable]. En outre, tenez compte des restrictions d’emplacement.

Nous allons créer une machine virtuelle Azure avec PowerShell.

  1. Utilisez l’applet de commande New-AzVm pour créer une machine virtuelle.

    • Utilisez le groupe de ressources [nom du groupe de ressources de bac à sable].

    • Donnez un nom à la machine virtuelle. Vous voudrez normalement utiliser un nom explicite qui identifie les objectifs, la localisation et (si applicable) le numéro d’instance de la machine virtuelle. Nous utilisons « testvm-eus-01 » pour « Tester la machine virtuelle dans la région USA Est, instance 1 ». Créez votre propre nom en fonction de l’emplacement où vous installez la machine virtuelle.

    • Sélectionnez un emplacement proche de vous dans la liste suivante, disponible dans le bac à sable Azure. Veillez à changer la valeur dans l’exemple de commande suivant si vous effectuez un copier-coller.

      • westus2
      • southcentralus
      • centralus
      • eastus
      • westeurope
      • southeastasia
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • Utilisez « Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest » pour l’image. Cette image est Ubuntu Linux.

    • Utilisez l’applet de commande Get-Credential, puis indiquez les résultats dans le paramètre Credential.

      Important

      Consultez les Questions fréquentes (FAQ) sur la machine virtuelle Linux pour connaître les limitations relatives aux noms d’utilisateurs et aux mots de passe. Les mots de passe doivent comporter entre 12 et 123 caractères, et répondre à trois des quatre exigences de complexité suivantes :

      • Contenir des minuscules
      • Contenir des majuscules
      • Avoir un chiffre
      • Avoir un caractère spécial (correspondance Regex [\W_])
    • Ajoutez le paramètre -OpenPorts et passez « 22 » en tant que port. Ce port nous permet une connexion à la machine en SSH.

    • Créez un nom d’adresse IP publique. Vous utilisez ce nom pour créer et trouver votre adresse IP statique pour vous connecter à la machine.

    New-AzVm -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "testvm-eus-01" -Credential (Get-Credential) -Location "eastus" -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest -OpenPorts 22 -PublicIpAddressName "testvm-eus-01"
    

    Conseil

    Vous pouvez utiliser le bouton Copier pour copier des commandes dans le Presse-papiers. Pour coller, cliquez avec le bouton droit sur une nouvelle ligne dans le terminal Cloud Shell et sélectionnez Coller ou utilisez le raccourci clavier Maj+Inser (⌘+V sur macOS).

  2. Créez un nom d’utilisateur et un mot de passe, puis appuyez sur Entrée. PowerShell commence à créer votre machine virtuelle.

  3. La création de la machine virtuelle prend quelques minutes. Lorsque l’opération est terminée, vous pouvez l’interroger et assigner l’objet de machine virtuelle à une variable ($vm).

    $vm = (Get-AzVM -Name "testvm-eus-01" -ResourceGroupName <rgn>[sandbox resource group name]</rgn>)
    
  4. Interrogez la valeur pour vider les informations sur la machine virtuelle.

    $vm
    

    Vous devriez voir quelque chose comme la sortie suivante :

    ResourceGroupName : <rgn>[sandbox resource group name]</rgn>
    Id                : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rgn>[sandbox resource group name]</rgn>/providers/Microsoft.Compute/virtualMachines/testvm-eus-01
    VmId              : 00000000-0000-0000-0000-000000000000
    Name              : testvm-eus-01
    Type              : Microsoft.Compute/virtualMachines
    Location          : eastus
    Tags              : {}
    HardwareProfile   : {VmSize}
    NetworkProfile    : {NetworkInterfaces}
    OSProfile         : {ComputerName, AdminUsername, LinuxConfiguration, Secrets}
    ProvisioningState : Succeeded
    StorageProfile    : {ImageReference, OsDisk, DataDisks}
    
  5. Vous pouvez accéder à des objets complexes par une notation à base de points (« . »). Par exemple, pour afficher les propriétés de l’objet VMSize associé à la section HardwareProfile, exécutez la commande suivante :

    $vm.HardwareProfile
    
  6. Ou, pour obtenir des informations sur l’un des disques, exécutez la commande suivante :

    $vm.StorageProfile.OsDisk
    
  7. Vous pouvez même passer l’objet de machine virtuelle à d’autres applets de commande. Par exemple, l’exécution de la commande suivante vous montre toutes les tailles disponibles pour votre machine virtuelle :

    $vm | Get-AzVMSize
    
  8. Maintenant, exécutez la commande suivante pour obtenir votre adresse IP publique :

    az vm list-ip-addresses -n testvm-eus-01 -g <rgn>[sandbox resource group name]</rgn>
    
  9. Avec l’adresse IP, vous pouvez vous connecter à la machine virtuelle avec SSH. Par exemple, si vous utilisez le nom d’utilisateur bob et que l’adresse IP est 205.22.16.5, l’exécution de cette commande vous permet de vous connecter à la machine Linux :

    ssh bob@205.22.16.5
    

    Déconnectez-vous en entrant la commande “exit”.

Supprimer une machine virtuelle

Pour essayer quelques commandes supplémentaires, supprimons d’abord la machine virtuelle. Tout d’abord, nous devons l’arrêter (entrez Y si vous y êtes invité pour continuer) :

Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

Une fois la machine virtuelle arrêtée, supprimez-la en exécutant l’applet de commande Remove-AzVM (entrez Y si vous y êtes invité pour continuer) :

Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

Exécutez cette commande pour lister toutes les ressources dans votre groupe de ressources :

Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Format-Table

Vous devriez voir plusieurs ressources (disques, réseaux virtuels, etc.) qui existent toujours.

Microsoft.Compute/disks
Microsoft.Network/networkInterfaces
Microsoft.Network/networkSecurityGroups
Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks

La commande Remove-AzVMsupprime juste la machine virtuelle. Elle ne nettoie pas les autres ressources. À ce stade, nous supprimerions probablement simplement le groupe de ressources lui-même et nous en aurions fini. Cependant, nous allons passer en revue l’exercice pour les nettoyer manuellement. Vous devriez voir un modèle dans les commandes.

  1. Supprimez l’interface réseau :

    $vm | Remove-AzNetworkInterface –Force
    
  2. Supprimez les disques de système d’exploitation managés :

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk -Force
    
  3. Ensuite, supprimez le réseau virtuel :

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork -Force
    
  4. Supprimez le groupe de sécurité réseau :

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup -Force
    
  5. Pour finir, supprimez l’adresse IP publique :

    Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName | Remove-AzPublicIpAddress -Force
    

Nous devrions avoir intercepté toutes les ressources créées. Vérifiez le groupe de ressources pour être sûr. Nous avons exécuté de nombreuses commandes manuelles ici, mais une meilleure approche aurait été d’écrire un script. Ensuite, nous pourrions réutiliser cette logique plus tard pour créer ou supprimer une machine virtuelle. Regardons comment scripter avec PowerShell.