Utiliser Azure PowerShell pour créer un SQL Server sur une machine virtuelle Azure
S’applique à :SQL Server sur la machine virtuelle Azure
Ce guide couvre les options d’utilisation de PowerShell pour approvisionner un SQL Server sur des machines virtuelles Azure. Pour obtenir un exemple Azure PowerShell simplifié qui repose sur les valeurs par défaut, consultez la section Démarrage rapide SQL Server sur une machine virtuelle Azure PowerShell.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Notes
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.
Configurer votre abonnement
Ouvrez PowerShell et accédez à votre compte Azure en exécutant la commande Connect-AzAccount.
Connect-AzAccount
À 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.
Définir des variables d’image
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.
Emplacement et groupe de ressources
Définissez la région de données et le groupe de ressources dans lesquels vous souhaitez créer les autres ressources de machine virtuelle.
Apportez les modifications souhaitées, puis exécutez ces cmdlets pour initialiser ces variables.
$Location = "SouthCentralUS"
$ResourceGroupName = "sqlvm2"
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 = $ResourceGroupName + "storage"
$StorageSku = "Premium_LRS"
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
Utilisez les variables suivantes pour définir l’image SQL Server à utiliser pour la machine virtuelle.
Tout d’abord, listez toutes les offres d’image SQL Server avec la commande
Get-AzVMImageOffer
. Cette commande dresse la liste des images actuelles disponibles sur le portail Azure, ainsi que des images plus anciennes que vous ne pouvez installer qu'avec PowerShell :Get-AzVMImageOffer -Location $Location -Publisher 'MicrosoftSQLServer'
Notes
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.
Dans le cadre de ce tutoriel, utilisez les variables suivantes pour spécifier SQL Server 2022 sur Windows Server 2022.
$OfferName = "SQL2022-WS2022" $PublisherName = "MicrosoftSQLServer" $Version = "latest"
Ensuite, listez toutes les éditions disponibles pour votre offre.
Get-AzVMImageSku -Location $Location -Publisher 'MicrosoftSQLServer' -Offer $OfferName | Select Skus
Dans le cadre de ce tutoriel, utilisez l’édition Developer de SQL Server 2022 (SQLDEV). La Developer Edition est librement concédée sous licence pour le développement et le test, et vous ne payez que pour le coût d’exécution de la machine virtuelle.
$Sku = "SQLDEV"
Créer un groupe de ressources
Avec le modèle de déploiement Resource Manager, le premier objet que vous créez est le groupe de ressources. 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 créer votre groupe de ressources.
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
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.
$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.
$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.
$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 la connectivité à 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.
$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.
Tout d’abord, créez une règle de groupe de sécurité réseau pour le bureau à distance (RDP) pour autoriser les connexions RDP.
$NsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name "RDPRule" -Protocol Tcp ` -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * ` -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
Configurez une règle de groupe de sécurité réseau qui autorise le trafic sur le port TCP 1433. Celle-ci permet de se connecter à SQL Server par Internet.
$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.
$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.
$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 l’objet de machine virtuelle
Commencez par spécifier la taille de la machine virtuelle. Dans le cadre de ce tutoriel, spécifiez DS13. Utilisez la cmdlet New-AzVMConfig pour créer un objet de machine virtuelle configurable. Spécifiez les variables que vous avez précédemment initialisées pour le nom et la taille.
Exécutez cette applet de commande pour créer l’objet de machine virtuel.
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize
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.
$Credential = Get-Credential -Message "Type the name and password of the local administrator account."
Configurer les propriétés du système d’exploitation de la machine virtuelle
Vous êtes maintenant prêt à définir les propriétés du système d’exploitation de la machine virtuelle avec la cmdlet Set-AzVMOperatingSystem.
- Définissez le type de système d’exploitation Windows.
- Exigez que l’agent de machine virtuelle soit installé.
- Spécifiez que l’applet de commande autorise la mise à jour automatique.
- Spécifiez 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.
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine `
-Windows -ComputerName $ComputerName -Credential $Credential `
-ProvisionVMAgent -EnableAutoUpdate
Ajouter l’interface réseau à la machine virtuelle
Ensuite, utilisez la cmdlet Add-AzVMNetworkInterface pour ajouter l’interface réseau à l’aide de la variable que vous avez précédemment définie.
Exécutez cette applet de commande pour définir l’interface réseau de votre machine virtuelle.
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $Interface.Id
Définir l’emplacement de Blob Storage du disque à utiliser par la machine virtuelle
Ensuite, définissez l’emplacement du stockage d’objets blob pour le disque de la machine virtuelle en utilisant les variables que vous avez définies précédemment.
Exécutez cette applet de commande pour définir l’emplacement du stockage d’objets blob.
$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"
Configurer les propriétés du disque du système d’exploitation de la machine virtuelle
Ensuite, définissez les propriétés du disque du système d’exploitation de la machine virtuelle à l’aide de la cmdlet Set-AzVMOSDisk.
- Spécifiez que le système d’exploitation de la machine virtuelle provient d’une image.
- Définissez une mise en cache en lecture seule (car SQL Server est installé sur le même disque).
- Spécifiez les variables que vous avez précédemment initialisées pour le nom de la machine virtuelle et le disque du système d’exploitation.
Exécutez cette applet de commande pour définir les propriétés du disque du système d’exploitation de votre machine virtuelle.
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name `
$OSDiskName -VhdUri $OSDiskUri -Caching ReadOnly -CreateOption FromImage
Spécifier l’image de plateforme de la machine virtuelle
La dernière étape de configuration consiste à spécifier l’image de plateforme de votre machine virtuelle. Dans le cadre de ce tutoriel, utilisez la dernière image de SQL Server 2016 CTP. Utilisez la cmdlet Set-AzVMSourceImage pour utiliser cette image avec les variables que vous avez définies précédemment.
Exécutez cette applet de commande pour spécifier l’image de plateforme de votre machine virtuelle.
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine `
-PublisherName $PublisherName -Offer $OfferName `
-Skus $Sku -Version $Version
Créer la machine virtuelle SQL
Maintenant que vous avez terminé les étapes de configuration, vous pouvez créer la machine virtuelle. Utilisez la cmdlet New-AzVM pour créer la machine virtuelle à l’aide des variables que vous avez définies.
Conseil
La création de la machine virtuelle peut prendre quelques minutes.
Exécutez cette applet de commande pour créer votre machine virtuelle.
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine
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 ou BYOL par le biais d’Azure Hybrid Benefit. Pour plus d’informations sur les licences, consultez Modèle de licence.
New-AzSqlVM -ResourceGroupName $ResourceGroupName -Name $VMName -Location $Location -LicenseType <PAYG/AHUB>
Il existe trois façons de s’inscrire auprès de 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.
Exemple de script
Le script suivant contient le script PowerShell complet pour ce didacticiel. Nous supposons que vous avez déjà configuré l’abonnement Azure à utiliser avec les commandes Connect-AzAccount et Select-AzSubscription.
# Variables
## Global
$Location = "SouthCentralUS"
$ResourceGroupName = "sqlvm2"
## Storage
$StorageName = $ResourceGroupName + "storage"
$StorageSku = "Premium_LRS"
## Network
$InterfaceName = $ResourceGroupName + "ServerInterface"
$NsgName = $ResourceGroupName + "nsg"
$VNetName = $ResourceGroupName + "VNet"
$SubnetName = "Default"
$VNetAddressPrefix = "10.0.0.0/16"
$VNetSubnetAddressPrefix = "10.0.0.0/24"
$TCPIPAllocationMethod = "Dynamic"
$DomainName = $ResourceGroupName
##Compute
$VMName = $ResourceGroupName + "VM"
$ComputerName = $ResourceGroupName + "Server"
$VMSize = "Standard_DS13"
$OSDiskName = $VMName + "OSDisk"
##Image
$PublisherName = "MicrosoftSQLServer"
$OfferName = "SQL2017-WS2016"
$Sku = "SQLDEV"
$Version = "latest"
# Resource Group
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
# Storage
$StorageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageName -SkuName $StorageSku -Kind "Storage" -Location $Location
# Network
$SubnetConfig = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $VNetSubnetAddressPrefix
$VNet = New-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName -Location $Location -AddressPrefix $VNetAddressPrefix -Subnet $SubnetConfig
$PublicIp = New-AzPublicIpAddress -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod $TCPIPAllocationMethod -DomainNameLabel $DomainName
$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
$Nsg = New-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroupName -Location $Location -Name $NsgName -SecurityRules $NsgRuleRDP,$NsgRuleSQL
$Interface = New-AzNetworkInterface -Name $InterfaceName -ResourceGroupName $ResourceGroupName -Location $Location -SubnetId $VNet.Subnets[0].Id -PublicIpAddressId $PublicIp.Id -NetworkSecurityGroupId $Nsg.Id
# Compute
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize
$Credential = Get-Credential -Message "Type the name and password of the local administrator account."
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $ComputerName -Credential $Credential -ProvisionVMAgent -EnableAutoUpdate #-TimeZone = $TimeZone
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $Interface.Id
$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name $OSDiskName -VhdUri $OSDiskUri -Caching ReadOnly -CreateOption FromImage
# Image
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName $PublisherName -Offer $OfferName -Skus $Sku -Version $Version
# Create the VM in Azure
New-AzVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $VirtualMachine
# Add the SQL IaaS Agent Extension, and choose the license type
New-AzSqlVM -ResourceGroupName $ResourceGroupName -Name $VMName -Location $Location -LicenseType <PAYG/AHUB>
Étapes suivantes
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de l’année 2024, nous abandonnerons progressivement le mécanisme de retour d’information GitHub Issues pour le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez :Soumettre et afficher des commentaires pour