Guide de création d’une machine virtuelle SQL Server avec PowerShell
S’applique à : Machine virtuelle SQL Server sur Azure
Ce guide couvre les options d’utilisation de PowerShell pour créer une machine virtuelle SQL Server sur Azure. Pour obtenir un exemple simplifié d’Azure PowerShell qui s’appuie sur des valeurs par défaut, consultez Démarrage rapide : créer une machine virtuelle SQL Server sur Azure avec PowerShell. Si vous souhaitez obtenir un script de bout en bout, consultez Créer une machine virtuelle SQL Server avec un script PowerShell.
Prérequis
Pour suivre ce guide, vous devez disposer des éléments suivants :
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
- La version la plus récente d’Azure PowerShell
Remarque
Cet article utilise le module Azure Az PowerShell, qui est le module PowerShell recommandé pour interagir avec Azure. Pour démarrer avec le module Az PowerShell, consulter Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.
Définir des variables
Pour réutiliser des valeurs et simplifier la création de scripts, commencez par définir quelques variables. Modifiez les valeurs des paramètres comme vous le souhaitez, mais sachez que des restrictions s’appliquent à la longueur des noms et aux caractères spéciaux en cas de modification des valeurs fournies.
Commencez par définir les paramètres utilisés tout au long du script, comme l’emplacement, le nom du groupe de ressources, l’image SQL Server et le compte de stockage, ainsi que les propriétés du réseau et de la machine virtuelle.
Emplacement et groupe de ressources
Définissez la région de données, le groupe de ressources et l’abonnement dans lesquels vous souhaitez créer votre machine virtuelle SQL Server et les ressources associées.
Apportez les modifications souhaitées, puis exécutez ces cmdlets pour initialiser ces variables.
$SubscriptionId = "<Enter Subscription ID>"
$Location = "<Enter Location>"
$ResourceGroupName = "<Enter Resource Group Name>"
$userName = "<Enter User Name for the virtual machine"
Propriétés de stockage
Définissez le compte de stockage et le type de stockage que la machine virtuelle doit utiliser.
Apportez les modifications souhaitées, puis exécutez la cmdlet suivante pour initialiser ces variables. Nous vous recommandons d'utiliser des disques SSD Premium pour les charges de travail de production.
$StorageName = "sqlvm" + "storage"
$StorageSku = "Premium_LRS"
Remarque
Le nom du compte de stockage doit être compris entre 3 et 24 caractères et comporter uniquement des chiffres et des lettres minuscules. Vérifiez donc que le nom de votre groupe de ressources ne contient aucun caractère spécial ou modifiez le nom du compte de stockage pour utiliser un nom différent de $ResourceGroupName.
Propriétés réseau
Définissez les propriétés que le réseau doit utiliser dans la machine virtuelle.
- interface réseau
- Méthode d’allocation TCP/IP
- Nom du réseau virtuel
- Nom du sous-réseau virtuel
- Plage d’adresses IP du réseau virtuel
- Plage d’adresses IP du sous-réseau
- Étiquette de nom de domaine public
Apportez les modifications souhaitées, puis exécutez cette cmdlet pour initialiser ces variables.
$InterfaceName = $ResourceGroupName + "ServerInterface"
$NsgName = $ResourceGroupName + "nsg"
$TCPIPAllocationMethod = "Dynamic"
$VNetName = $ResourceGroupName + "VNet"
$SubnetName = "Default"
$VNetAddressPrefix = "10.0.0.0/16"
$VNetSubnetAddressPrefix = "10.0.0.0/24"
$DomainName = $ResourceGroupName
Propriétés de machine virtuelle
Définissez les propriétés suivantes :
- Nom de la machine virtuelle
- Nom de l’ordinateur
- Taille de la machine virtuelle
- Nom du disque du système d’exploitation pour la machine virtuelle
Apportez les modifications souhaitées, puis exécutez cette cmdlet pour initialiser ces variables.
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"
Choisir une image SQL Server
Avec PowerShell, il est possible de déployer une image plus ancienne de SQL Server qui n’est pas disponible sur le Portail Azure.
Utilisez les variables suivantes pour définir l’image SQL Server à utiliser pour la machine virtuelle.
Listez toutes les offres d’images SQL Server avec la commande Get-AzVMImageOffer. Vous obtenez les images actuellement disponibles dans le Portail Azure ainsi que les images plus anciennes que vous ne pouvez déployer qu’avec PowerShell :
Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
Remarque
SQL Server 2008 et SQL Server 2008 R2 ne bénéficient plus d’une prise en charge étendue et ne sont plus disponibles depuis la Place de marché Azure.
Listez les éditions disponibles pour votre offre avec la commande Get-AzVMImageSku.
Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
Pour ce tutoriel, utilisez l’édition Développeur de SQL Server 2022 (SQLDEV-GEN2) sur Windows Server 2022. L’édition Développeur est concédée sous licence gratuite à des fins de développement et de test, et seul le coût d’exécution de la machine virtuelle vous est facturé :
$OfferName = "SQL2022-WS2022"
$PublisherName = "MicrosoftSQLServer"
$Version = "latest"
$Sku = "SQLDEV-GEN2"
$License = 'PAYG'
# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
-AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
Créer un groupe de ressources
Ouvrez PowerShell, accédez à votre compte Azure en exécutant la commande Connect-AzAccount, puis définissez votre contexte d’abonnement avec Set-AzContext. À l’invite, entrez vos informations d’identification. Utilisez l'adresse électronique et le mot de passe que vous utilisez pour vous connecter au portail Azure.
Une fois que vous avez établi le contexte d’abonnement, le premier objet que vous créez est le groupe de ressources. Utilisez la commande Connect-AzAccount pour vous connecter à Azure, puis définissez votre contexte d’abonnement avec Set-AzContext. Utilisez la cmdlet New-AzResourceGroup pour créer un groupe de ressources Azure et ses ressources. Spécifiez les variables que vous avez précédemment initialisées pour le nom et l’emplacement du groupe de ressources.
Exécutez cette applet de commande pour vous connecter à Azure, établir le contexte d’abonnement et créer votre groupe de ressources :
# Set subscription context
Connect-AzAccount
$subscriptionContextParams = @{
SubscriptionId = $SubscriptionId
}
Set-AzContext @subscriptionContextParams
# Create a resource group
$resourceGroupParams = @{
Name = $resourceGroupName
Location = $Location
Tag = @{Owner="SQLDocs-Samples"}
}
$resourceGroup = New-AzResourceGroup @resourceGroupParams
Créez un compte de stockage.
La machine virtuelle nécessite des ressources de stockage pour le disque du système d’exploitation ainsi que pour les données et fichiers journaux de SQL Server. Pour plus de simplicité, vous allez créer un seul disque pour les deux. Vous pourrez attacher des disques supplémentaires ultérieurement, à l’aide de l’applet de commande Add-Azure Disk, pour placer vos données et fichiers journaux SQL Server sur des disques dédiés. Utilisez la cmdlet New-AzStorageAccount pour créer un compte de stockage standard dans votre nouveau groupe de ressources. Spécifiez les variables que vous avez précédemment initialisées pour le nom du compte de stockage, le nom de la référence SKU de stockage et l’emplacement.
Exécutez cette applet de commande pour créer votre compte de stockage :
# Create storage account
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName `
-Name $StorageName -SkuName $StorageSku `
-Kind "Storage" -Location $Location
Conseil
La création du compte de stockage peut prendre quelques minutes.
Créer des ressources réseau
La machine virtuelle requiert plusieurs ressources réseau pour la connectivité réseau.
- Chaque machine virtuelle requiert un réseau virtuel.
- Un réseau virtuel doit avoir au moins un sous-réseau.
- Une interface réseau doit être définie avec une adresse IP privée ou publique.
Créer une configuration de sous-réseau de réseau virtuel
Commencez par créer une configuration de sous-réseau pour votre réseau virtuel. Dans le cadre de ce tutoriel, créez un sous-réseau par défaut à l’aide de la cmdlet New-AzVirtualNetworkSubnetConfig. Spécifiez les variables que vous avez précédemment initialisées pour le nom du sous-réseau et le préfixe d’adresse.
Notes
Vous pouvez définir des propriétés supplémentaires dans la configuration de sous-réseau de réseau virtuel à l’aide de cette applet de commande, mais cela sort du cadre de ce didacticiel.
Exécutez cette applet de commande pour créer votre configuration de sous-réseau virtuel.
# Create a subnet configuration
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
Créez un réseau virtuel
Ensuite, créez votre réseau virtuel dans votre nouveau groupe de ressources à l’aide de la cmdlet New-AzVirtualNetwork. Spécifiez les variables que vous avez précédemment initialisées pour le nom, l’emplacement et le préfixe d’adresse. Utilisez la configuration de sous-réseau que vous avez définie à l’étape précédente.
Exécutez cette applet de commande pour créer votre réseau virtuel :
# Create a virtual network
$VNet = New-AzVirtualNetwork -Name $VNetName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
Créer une adresse IP publique
Maintenant que votre réseau virtuel est défini, vous devez configurer une adresse IP pour vous connecter à la machine virtuelle. Dans le cadre de ce tutoriel, créez une adresse IP publique à l’aide de l’adressage IP dynamique pour prendre en charge la connectivité Internet. Utilisez la cmdlet New-AzPublicIpAddress pour créer l’adresse IP publique dans votre nouveau groupe de ressources. Spécifiez les variables que vous avez précédemment initialisées pour le nom, l’emplacement, la méthode d’allocation et l’étiquette du nom de domaine DNS.
Notes
Vous pouvez définir des propriétés supplémentaires de l’adresse IP publique à l’aide de cette applet de commande, mais cela sort du cadre de ce didacticiel. Vous pouvez également créer une adresse privée ou une adresse avec une adresse statique, mais cela sort du cadre de ce didacticiel.
Exécutez cette applet de commande pour créer votre adresse IP publique.
# Create a public IP address
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
Créer le groupe de sécurité réseau
Pour sécuriser le trafic de la machine virtuelle et de SQL Server, créez un groupe de sécurité réseau.
Créez deux règles de groupe de sécurité réseau avec New-AzNetworkSecurityRuleConfig : une règle pour le protocole RDP (Remote Desktop Protocol) autorisant les connexions RDP et une règle autorisant le trafic sur le port TCP 1433. Celle-ci permet de se connecter à SQL Server par Internet.
# Create a network security group rule $NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp ` -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * ` -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow $NsgRuleSQL = New-AzNetworkSecurityRuleConfig -Name "MSSQLRule" -Protocol Tcp ` -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * ` -DestinationAddressPrefix * -DestinationPortRange 1433 -Access Allow
Créez le groupe de sécurité réseau à l’aide de New-AzNetworkSecurityGroup.
# Create a network security group $Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName ` -Location $Location -Name $NsgName ` -SecurityRules $NsgRuleRDP,$NsgRuleSQL
Créer l’interface réseau
Vous êtes maintenant prêt à créer l’interface réseau de votre machine virtuelle. Utilisez la cmdlet New-AzNetworkInterface pour créer l’interface réseau dans votre nouveau groupe de ressources. Spécifiez le nom, l’emplacement, le sous-réseau et l’adresse IP publique précédemment définis.
Exécutez cette applet de commande pour créer votre interface réseau.
# Create a network interface
$Interface = New-AzNetworkInterface -Name $InterfaceName `
-ResourceGroupName $ResourceGroupName -Location $Location `
-SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id `
-NetworkSecurityGroupId $Nsg.Id
Configurer un objet de machine virtuelle
Maintenant que les ressources réseau et de stockage sont définies, vous pouvez définir les ressources de calcul de la machine virtuelle.
- Spécifiez la taille de la machine virtuelle et diverses propriétés de système d’exploitation.
- Spécifiez l’interface réseau que vous avez précédemment créée.
- Définissez le stockage d’objets blob.
- Spécifiez le disque du système d’exploitation.
Créer la machine virtuelle SQL Server
Pour créer votre machine virtuelle SQL Server, commencez par créer un objet d’informations d’identification, puis créez la machine virtuelle.
Créer un objet d’informations d’identification pour stocker le nom et le mot de passe de l’administrateur local
Avant de définir les propriétés du système d’exploitation de la machine virtuelle, vous devez indiquer les informations d’identification du compte d’administrateur local sous la forme d’une chaîne de caractères sécurisée. Pour ce faire, utilisez l’applet de commande Get-Credential.
Exécutez l’applet de commande suivante. Vous devez taper le nom et le mot de passe de l’administrateur local de la machine virtuelle dans la fenêtre de demande d’informations d’identification de PowerShell.
# Define a credential object
$SecurePassword = ConvertTo-SecureString '<strong password>' `
-AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
Définir des propriétés et créer la machine virtuelle
Vous êtes maintenant prêt à définir les propriétés du système d’exploitation de la machine virtuelle avec New-AzVMConfig, à créer la machine virtuelle avec New-AzVM et à utiliser l’applet de commande Add-AzVMNetworkInterface pour ajouter l’interface réseau avec la variable définie précédemment.
L’exemple de script effectue les opérations suivantes :
- Exigez que l’agent de machine virtuelle soit installé.
- Spécifie que l’applet de commande active la mise à jour automatique.
- Spécifie les variables que vous avez précédemment initialisées pour le nom de la machine virtuelle, le nom de l’ordinateur et les informations d’identification.
Exécutez cette applet de commande pour définir les propriétés du système d’exploitation de votre machine virtuelle.
# Create a virtual machine configuration
$VMName = $ResourceGroupName + "VM"
$VMConfig = New-AzVMConfig -VMName $VMName -VMSize $VMSize |
Set-AzVMOperatingSystem -Windows -ComputerName $VMName -Credential $Cred -ProvisionVMAgent -EnableAutoUpdate |
Set-AzVMSourceImage -PublisherName $PublisherName -Offer $OfferName -Skus $Sku -Version $Version |
Add-AzVMNetworkInterface -Id $Interface.Id
# Create the VM
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VMConfig
La machine virtuelle est créée.
Notes
Si vous obtenez une erreur liée aux diagnostics de démarrage, vous pouvez l’ignorer. Un compte de stockage standard est créé pour les diagnostics de démarrage, car le compte de stockage spécifié pour le disque de la machine virtuelle est un compte de stockage Premium.
Installer l’extension SQL IaaS Agent
Les machines virtuelles SQL Server prennent en charge les fonctionnalités de gestion automatisées avec l’Extension de l’Agent IaaS SQL Server. Pour inscrire votre instance SQL auprès de l’extension, exécutez la commande New-AzSqlVM après la création de la machine virtuelle. Spécifiez le type de licence pour votre machine virtuelle SQL Server, en choisissant entre le paiement à l’utilisation (PAYG
), BYOL (apportez votre propre licence) via Azure Hybrid Benefit (AHUB
) et la récupération d’urgence (DR
) pour activer la licence de réplica DR gratuite. Pour plus d’informations sur les licences, consultez Modèle de licence.
Pour inscrire votre machine virtuelle SQL Server auprès de l’extension Agent IaaS de SQL Server, inscrivez d’abord votre abonnement auprès du fournisseur de ressources en utilisant Register-AzResourceProvider, puis inscrivez votre machine virtuelle SQL Server auprès de l’extension Agent IaaS de SQL Server en utilisant New-AzSqlVM :
# Register the SQL IaaS Agent extension to your subscription
Register-AzResourceProvider -ProviderNamespace Microsoft.SqlVirtualMachine
# Register SQL Server VM with the extension
New-AzSqlVM -Name $VMName -ResourceGroupName $ResourceGroupName -Location $Location `
-LicenseType $License
Il existe trois possibilités d’inscription à l’extension :
- Automatiquement pour toutes les machines virtuelles actuelles et futures dans un abonnement
- Manuellement pour une seule machine virtuelle
- Manuellement pour plusieurs machines virtuelles en bloc
Arrêter ou supprimer une machine virtuelle
Si vous n’avez pas besoin que la machine virtuelle fonctionne en permanence, vous pouvez éviter les frais inutiles en l’arrêtant quand vous ne vous en servez pas. La commande suivante arrête la machine virtuelle, tout en la laissant disponible pour une utilisation future.
Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroupName
Vous pouvez aussi supprimer définitivement toutes les ressources associées à la machine virtuelle à l’aide de la commande Remove-AzResourceGroup. Dans la mesure où cette commande supprime la machine virtuelle de façon définitive, utilisez-la avec précaution.
Script complet
Pour obtenir un script PowerShell complet qui offre une expérience de bout en bout, consultez Déployer une machine virtuelle SQL Server sur Azure avec PowerShell.
Contenu connexe
Une fois la machine virtuelle créée, vous pouvez :
- Vous connecter à la machine virtuelle à l’aide du protocole RDP (Remote Desktop Protocol)
- Configurez les paramètres de SQL Server dans le portail de votre machine virtuelle, notamment :
- Configurer la connectivité
- Connecter des clients et applications à la nouvelle instance de SQL Server