Déployer des machines virtuelles sur votre appareil GPU Azure Stack Edge Pro à l’aide d’Azure CLI et Python
S’APPLIQUE À : Azure Stack Edge Pro : GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Vous pouvez créer et gérer des machines virtuelles sur un appareil Azure Stack Edge à l’aide d’API. Ces API sont des API Azure Resource Manager standard appelées à l’aide du point de terminaison local Azure Stack Edge. Les API Azure Resource Manager fournissent une couche de gestion cohérente qui, en l’occurrence, vous permettent de créer, mettre à jour et supprimer des machines virtuelles dans un abonnement local qui existe sur l’appareil. Vous pouvez vous connecter à Azure Resource Manager exécuté sur Azure Stack Edge par le biais des applets de commande Azure PowerShell.
Ce tutoriel explique comment créer et gérer une machine virtuelle sur votre appareil Azure Stack Edge Pro à l’aide de Python et de l’API Azure.
Workflow du déploiement de machine virtuelle
Le workflow du déploiement est illustré dans le diagramme suivant.
Voici une synthèse globale du workflow de déploiement :
- Se connecter à Azure Resource Manager
- Créer un groupe de ressources
- Créez un compte de stockage.
- Ajouter l’URI d’objet blob au fichier hosts
- Installer des certificats
- Télécharger un disque dur virtuel
- Créer des disques managés à partir du disque dur virtuel
- Créer une image de machine virtuelle à partir de l’image de disque managé
- Créer une machine virtuelle avec des ressources créées précédemment
- Créer un réseau virtuel
- Créer une carte réseau virtuelle à l’aide de l’ID de sous-réseau VNet
Pour obtenir une explication détaillée du diagramme de workflow, consultez Déployer des machines virtuelles sur votre appareil Azure Stack Edge Pro à l’aide d’Azure PowerShell. Pour plus d’informations sur la façon de se connecter à Azure Resource Manager, consultez Se connecter à Azure Resource Manager à l’aide d’Azure PowerShell.
Prérequis
Avant de commencer à créer et à gérer une machine virtuelle sur votre appareil Azure Stack Edge Pro à l’aide d’Azure CLI et de Python, assurez-vous d’avoir effectué les étapes suivantes :
Vous avez appliqué les paramètres réseau sur votre appareil Azure Stack Edge Pro comme décrit dans Étape 1 : Configurer l’appareil Azure Stack Edge Pro.
Vous avez activé une interface réseau pour le calcul. Cette adresse IP d’interface réseau sert à créer un commutateur virtuel pour le déploiement de la machine virtuelle. Les étapes suivantes expliquent comment procéder :
Accédez à Calcul. Sélectionnez l’interface réseau que vous utiliserez pour créer un commutateur virtuel.
Important
Vous ne pouvez configurer qu’un seul port pour le calcul.
Activez le calcul sur l’interface réseau. Azure Stack Edge Pro crée et gère un commutateur virtuel correspondant à cette interface réseau.
Vous avez créé et installé tous les certificats sur votre appareil Azure Stack Edge Pro et dans le magasin approuvé de votre client. Suivez la procédure décrite dans Étape 2 : créer et installer les certificats.
Vous avez créé un certificat .cer encodé en base 64 pour votre appareil Azure Stack Edge Pro. Ce certificat est déjà chargé en tant que chaîne de signature sur l’appareil, et installé dans le magasin racine approuvé sur votre client. Ce certificat est également requis au format pem pour que Python fonctionne sur ce client.
Convertissez ce certificat au format
pem
à l’aide de la commande certutil. Vous devez exécuter cette commande dans le répertoire qui contient votre certificat.certutil.exe <SourceCertificateName.cer> <DestinationCertificateName.pem>
Voici un exemple illustrant l’utilisation de la commande :
PS C:\Certificates> certutil.exe -encode aze-root.cer aze-root.pem Input Length = 2150 Output Length = 3014 CertUtil: -encode command completed successfully. PS C:\Certificates>
Vous ajouterez plus tard ce certificat
pem
au magasin Python.Vous avez affecté l’adresse IP de l’appareil dans votre page Réseau dans l’interface utilisateur web locale de l’appareil. Ajoutez cette adresse IP aux éléments suivants :
- Le fichier d’hôte sur le client, OU,
- configuration du serveur DNS.
Important
Nous vous recommandons de modifier la configuration du serveur DNS pour la résolution des noms de points de terminaison.
Démarrez le Bloc-notes en tant qu’administrateur (des privilèges d’administrateur sont nécessaires pour enregistrer le fichier), puis ouvrez le fichier hosts qui se trouve dans
C:\Windows\System32\Drivers\etc
.Ajoutez les entrées suivantes à votre fichier hosts, en les remplaçant par les valeurs appropriées pour votre appareil :
<Device IP> login.<appliance name>.<DNS domain> <Device IP> management.<appliance name>.<DNS domain> <Device IP> <storage name>.blob.<appliance name>.<DNS domain>
Utilisez l’image suivante pour référence. Enregistrez le fichier hosts.
Téléchargez le script Python utilisé dans cette procédure.
Préparer votre environnement pour Azure CLI :
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
Étape 1 : configurer Azure CLI/Python sur le client
Vérifier le profil et installer Azure CLI
Installez Azure CLI sur votre client. Dans cet exemple, Azure CLI 2.0.80 a été installé. Pour vérifier la version d’Azure CLI, exécutez la commande az --version.
Voici un exemple de sortie pour la commande ci-dessus :
PS C:\windows\system32> az --version azure-cli 2.0.80 command-modules-nspkg 2.0.3 core 2.0.80 nspkg 3.0.4 telemetry 1.0.4 Extensions: azure-cli-iot-ext 0.7.1 Python location 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe' Extensions directory 'C:\.azure\cliextensions' Python (Windows) 3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 02:47:15) [MSC v.1900 32 bit (Intel)] Legal docs and information: aka.ms/AzureCliLegal Your CLI is up-to-date. Please let us know how we are doing: https://aka.ms/clihats PS C:\windows\system32>
Si vous n’avez pas Azure CLI, téléchargez et installez Azure CLI sur Windows. Vous pouvez exécuter Azure CLI à l’aide de l’invite de commandes Windows ou de Windows PowerShell.
Prenez note de l’emplacement Python de l’interface CLI. Vous aurez besoin de l’emplacement Python pour déterminer l’emplacement du magasin de certificats racines approuvés pour Azure CLI.
Pour exécuter l’exemple de script utilisé dans cet article, vous aurez besoin des versions de bibliothèques Python suivantes :
azure-common==1.1.23 azure-mgmt-resource==2.1.0 azure-mgmt-network==2.7.0 azure-mgmt-compute==5.0.0 azure-mgmt-storage==1.5.0 azure-storage-blob==1.2.0rc1 haikunator msrestazure==0.6.2
Pour installer les versions, exécutez la commande suivante :
.\python.exe -m pip install haikunator
L’exemple de sortie suivant montre l’installation de Haikunator :
PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe -m pip install haikunator Collecting haikunator Downloading https://files.pythonhosted.org/packages/43/fa/130968f1a1bb1461c287b9ff35c630460801783243acda2cbf3a4c5964a5/haikunator-2.1.0-py2.py3-none-any.whl Installing collected packages: haikunator Successfully installed haikunator-2.1.0 You are using pip version 10.0.1, however version 20.0.1 is available. You should consider upgrading using the 'python -m pip install --upgrade pip' command. PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
L’exemple de sortie suivant montre l’installation de pip pour
msrestazure
:PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe -m pip install msrestazure==0.6.2 Requirement already satisfied: msrestazure==0.6.2 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (0.6.2) Requirement already satisfied: msrest<2.0.0,>=0.6.0 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from msrestazure==0.6.2) (0.6.10) === CUT =========================== CUT ================================== Requirement already satisfied: cffi!=1.11.3,>=1.8 in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from cryptography>=1.1.0->adal<2.0.0,>=0.6.0->msrestazure==0.6.2) (1.13.2) Requirement already satisfied: pycparser in c:\program files (x86)\microsoft sdks\azure\cli2\lib\site-packages (from cffi!=1.11.3,>=1.8->cryptography>=1.1.0->adal<2.0.0,>=0.6.0->msrestazure==0.6.2) (2.18) You are using pip version 10.0.1, however version 20.0.1 is available. You should consider upgrading using the 'python -m pip install --upgrade pip' command. PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
Approuver le certificat racine d’autorité de certification Azure Stack Edge Pro
Trouvez l’emplacement du certificat sur votre machine. Cet emplacement peut varier en fonction de l’endroit où vous avez installé
az cli
. Exécutez Windows PowerShell en tant qu’administrateur. Basculez vers le chemin oùaz cli
a installé Python :C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe
.Pour obtenir l’emplacement du certificat, tapez la commande suivante :
.\python -c "import certifi; print(certifi.where())"
L’applet de commande retourne l’emplacement du certificat, comme indiqué ci-dessous :
PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python -c "import certifi; print(certifi.where())" C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
Prenez note de cet emplacement, car vous l’utiliserez plus tard -
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\lib\site-packages\certifi\cacert.pem
Pour approuver le certificat racine d’autorité de certification Azure Stack Edge Pro, ajoutez-le au certificat Python existant. Vous fournirez le chemin où vous avez enregistré le certificat PEM plus tôt.
$pemFile = "<Path to the pem format certificate>"
Exemple de chemin : « C:\VM-scripts\rootteam3device.pem »
Ensuite, tapez la série de commandes suivante dans Windows PowerShell :
$root = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $root.Import($pemFile) Write-Host "Extracting required information from the cert file" $md5Hash = (Get-FileHash -Path $pemFile -Algorithm MD5).Hash.ToLower() $sha1Hash = (Get-FileHash -Path $pemFile -Algorithm SHA1).Hash.ToLower() $sha256Hash = (Get-FileHash -Path $pemFile -Algorithm SHA256).Hash.ToLower() $issuerEntry = [string]::Format("# Issuer: {0}", $root.Issuer) $subjectEntry = [string]::Format("# Subject: {0}", $root.Subject) $labelEntry = [string]::Format("# Label: {0}", $root.Subject.Split('=')[-1]) $serialEntry = [string]::Format("# Serial: {0}", $root.GetSerialNumberString().ToLower()) $md5Entry = [string]::Format("# MD5 Fingerprint: {0}", $md5Hash) $sha1Entry= [string]::Format("# SHA1 Fingerprint: {0}", $sha1Hash) $sha256Entry = [string]::Format("# SHA256 Fingerprint: {0}", $sha256Hash) $certText = (Get-Content -Path $pemFile -Raw).ToString().Replace("`r`n","`n") $rootCertEntry = "`n" + $issuerEntry + "`n" + $subjectEntry + "`n" + $labelEntry + "`n" + ` $serialEntry + "`n" + $md5Entry + "`n" + $sha1Entry + "`n" + $sha256Entry + "`n" + $certText Write-Host "Adding the certificate content to Python Cert store" Add-Content "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\CLI2\Lib\site-packages\certifi\cacert.pem" $rootCertEntry Write-Host "Python Cert store was updated to allow the Azure Stack Edge Pro CA root certificate"
Se connecter à Azure Stack Edge Pro
Inscrivez votre environnement Azure Stack Edge Pro en exécutant la commande az cloud register.
Dans certains scénarios, la connectivité Internet sortante directe est acheminée par l'intermédiaire d'un proxy ou d'un pare-feu, qui assure l'interception SSL. Dans ce cas, la commande
az cloud register
peut échouer avec une erreur comme « Impossible d’obtenir les points de terminaison du cloud ». Pour contourner cette erreur, définissez les variables d’environnement suivantes dans Windows PowerShell :$ENV:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION = 1 $ENV:ADAL_PYTHON_SSL_NO_VERIFY = 1
Définissez les variables d’environnement pour le script pour le point de terminaison Azure Resource Manager, l’emplacement où les ressources sont créées et le chemin du disque dur virtuel source. L’emplacement des ressources est fixe sur tous les appareils Azure Stack Edge Pro, et est défini sur
dbelocal
. Vous devez également spécifier les préfixes d’adresse et l’adresse IP privée. Toutes les variables d’environnement suivantes sont des valeurs basées sur vos valeurs, à l’exception deAZURE_RESOURCE_LOCATION
, qui doit être codée en dur sur"dbelocal"
.$ENV:ARM_ENDPOINT = "https://management.team3device.teatraining1.com" $ENV:AZURE_RESOURCE_LOCATION = "dbelocal" $ENV:VHD_FILE_PATH = "C:\Downloads\Ubuntu1604\Ubuntu13.vhd" $ENV:ADDRESS_PREFIXES = "5.5.0.0/16" $ENV:PRIVATE_IP_ADDRESS = "5.5.174.126"
Inscrivez votre environnement. Utilisez les paramètres suivants lors de l’exécution de la commande az cloud register :
Valeur Description Exemple Nom de l’environnement Nom de l’environnement auquel vous essayez de vous connecter. Indiquez un nom, par exemple aze-environ
.Point de terminaison Resource Manager Cette URL est https://Management.<appliancename><dnsdomain>
.
Pour obtenir cette URL, accédez à la page Appareils de l’interface utilisateur web locale de votre appareil.Par exemple : https://management.team3device.teatraining1.com
.az cloud register -n <environmentname> --endpoint-resource-manager "https://management.<appliance name>.<DNS domain>"
L’exemple suivant illustre l’utilisation de la commande ci-dessus :
PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud register -n az-new-env --endpoint-resource-manager "https://management.team3device.teatraining1.com"
Définissez l’environnement actif avec la commande suivante :
az cloud set -n <EnvironmentName>
L’exemple suivant illustre l’utilisation de la commande ci-dessus :
PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud set -n az-new-env Switched active cloud to 'az-new-env'. Use 'az login' to log in to this cloud. Use 'az account set' to set the active subscription. PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
Connectez-vous à votre environnement Azure Stack Edge Pro avec la commande az login. Vous pouvez vous connecter à l’environnement Azure Stack Edge Pro en tant qu’utilisateur ou que principal de service.
Pour vous connecter en tant qu’utilisateur, effectuez les étapes suivantes :
Vous pouvez spécifier directement le nom d’utilisateur et le mot de passe dans la commande
az login
, ou vous authentifier avec un navigateur. Vous devez choisir cette dernière solution si l’authentification multifacteur est activée sur votre compte.L’exemple suivant illustre l’utilisation de
az login
:PS C:\Certificates> az login -u EdgeARMuser
Après l’utilisation de la commande login, vous êtes invité à entrer un mot de passe. Fournissez le mot de passe Azure Resource Manager.
Voici un exemple de sortie pour une connexion réussie après avoir fourni le mot de passe :
PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az login -u EdgeARMuser Password: [ { "cloudName": "az-new-env", "id": "A4257FDE-B946-4E01-ADE7-674760B8D1A3", "isDefault": true, "name": "Default Provider Subscription", "state": "Enabled", "tenantId": "c0257de7-538f-415c-993a-1b87a031879d", "user": { "name": "EdgeArmUser@localhost", "type": "user" } } ] PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
Notez les valeurs
id
ettenantId
, car elles correspondent à votre ID d’abonnement Azure Resource Manager et à l’ID de locataire Azure Resource Manager, respectivement, et qu’elles seront utilisées lors de l’étape suivante.Les variables d’environnement suivantes doivent être définies pour fonctionner en tant que principal de service :
$ENV:ARM_TENANT_ID = "c0257de7-538f-415c-993a-1b87a031879d" $ENV:ARM_CLIENT_ID = "cbd868c5-7207-431f-8d16-1cb144b50971" $ENV:ARM_CLIENT_SECRET - "<Your Azure Resource Manager password>" $ENV:ARM_SUBSCRIPTION_ID = "<Your subscription ID>"
Votre ID de client Azure Resource Manager est codé en dur. Votre ID de locataire Azure Resource Manager et votre ID d’abonnement Azure Resource Manager sont présents dans la sortie de la commande
az login
que vous avez exécutée précédemment. La clé secrète client Azure Resource Manager est le mot de passe Azure Resource Manager que vous avez défini.Pour plus d’informations, consultez Mot de passe Azure Resource Manager.
Remplacez le profil par la version 2019-03-01-hybrid. Pour modifier la version du profil, exécutez la commande suivante :
az cloud update --profile 2019-03-01-hybrid
L’exemple suivant illustre l’utilisation de
az cloud update
:PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> az cloud update --profile 2019-03-01-hybrid PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
Étape 2 : créer une machine virtuelle
Un script Python est fourni afin que vous puissiez créer une machine virtuelle. Selon que vous êtes connecté en tant qu’utilisateur ou défini en tant que principal de service, le script prend l’entrée en conséquence et crée une machine virtuelle.
- Exécutez le script Python à partir du répertoire où Python est installé.
.\python.exe example_dbe_arguments_name_https.py cli
Lorsque le script s’exécute, le chargement du disque dur virtuel prend de 20 à 30 minutes. Pour afficher la progression de l’opération de chargement, vous pouvez utiliser l’Explorateur Stockage Azure ou AzCopy.
Voici un exemple de sortie d’une exécution réussie du script. Le script crée toutes les ressources au sein d’un groupe de ressources, utilise ces ressources pour créer une machine virtuelle, puis supprime le groupe de ressources, notamment toutes les ressources qu’il a créées.
PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2> .\python.exe example_dbe_arguments_name_https.py cli Create Resource Group Create a storage account Uploading to Azure Stack Storage as blob: ubuntu13.vhd Listing blobs... ubuntu13.vhd VM image resource id: /subscriptions/.../resourceGroups/azure-sample-group-virtual-machines118/providers/Microsoft.Compute/images/UbuntuImage Create Vnet Create Subnet Create NIC Creating Linux Virtual Machine Tag Virtual Machine Create (empty) managed Data Disk Get Virtual Machine by Name Attach Data Disk Detach Data Disk Deallocating the VM (to prepare for a disk resize) Update OS disk size Start VM Restart VM Stop VM List VMs in subscription VM: VmName118 List VMs in resource group VM: VmName118 Delete VM All example operations completed successfully! Delete Resource Group Deleted: azure-sample-group-virtual-machines118 PS C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2>
Étapes suivantes
Commandes CLI az courantes pour les machines virtuelles Linux