Aperçu : Déployez des machines virtuelles sur des hôtes dédiés à l’aide d’Azure CLIPreview: Deploy VMs to dedicated hosts using the Azure CLI

Cet article vous guide dans la création d’un hôte dédié Azure pour héberger vos machines virtuelles.This article guides you through how to create an Azure dedicated host to host your virtual machines (VMs).

Vérifiez que vous avez installé Azure CLI version 2.0.70 ou version ultérieure, et que vous êtes connecté à un compte Azure avec az login.Make sure that you have installed Azure CLI version 2.0.70 or later, and signed in to an Azure account using az login.

Important

Les hôtes dédiés Azure sont actuellement en préversion publique.Azure Dedicated Hosts is currently in public preview. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production.This preview version is provided without a service level agreement, and it's not recommended for production workloads. Certaines fonctionnalités peuvent être limitées ou non prises en charge.Certain features might not be supported or might have constrained capabilities. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.For more information, see Supplemental Terms of Use for Microsoft Azure Previews.

Limitations connues de la préversionKnown preview limitations

  • Actuellement, les hôtes dédiés ne prennent pas en charge les groupes de machines virtuelles identiques.Virtual machine scale sets are not currently supported on dedicated hosts.
  • La préversion initiale prend en charge les séries de machines virtuelles suivantes : DSv3 et ESv3.The preview initial release supports the following VM series: DSv3 and ESv3.

Créer un groupe de ressourcesCreate resource group

Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.An Azure resource group is a logical container into which Azure resources are deployed and managed. Créez le groupe de ressources avec la commande az group create.Create the resource group with az group create. L’exemple suivant crée un groupe de ressources nommé myDHResourceGroup à l’emplacement USA Est.The following example creates a resource group named myDHResourceGroup in the East US location.

az group create --name myDHResourceGroup --location eastus 

Créer un groupe hôteCreate a host group

Un groupe hôte est une ressource qui représente une collection d’hôtes dédiés.A host group is a resource that represents a collection of dedicated hosts. Vous créez un groupe hôte dans une région et une zone de disponibilité, et lui ajoutez des hôtes.You create a host group in a region and an availability zone, and add hosts to it. Lors de la planification de la haute disponibilité, vous pouvez accéder à des options supplémentaires.When planning for high availability, there are additional options. Vous pouvez utiliser l’une des options suivantes, ou les deux, avec vos hôtes dédiés :You can use one or both of the following options with your dedicated hosts:

  • Application sur plusieurs zones de disponibilité.Span across multiple availability zones. Dans ce cas, vous devez disposer d’un groupe hôte dans chacune des zones que vous souhaitez utiliser.In this case, you are required to have a host group in each of the zones you wish to use.
  • Application sur plusieurs domaines d’erreur mappés à des racks physiques.Span across multiple fault domains which are mapped to physical racks.

Dans les deux cas, vous devez fournir le nombre de domaines d’erreur pour votre groupe hôte.In either case, you are need to provide the fault domain count for your host group. Si vous ne souhaitez pas appliquer plusieurs domaines d’erreur dans votre groupe, utilisez un seul domaine d’erreur.If you do not want to span fault domains in your group, use a fault domain count of 1.

Vous pouvez également choisir d’utiliser des zones de disponibilité et des domaines d’erreur.You can also decide to use both availability zones and fault domains.

Dans cet exemple, nous allons utiliser la commande az vm host group create pour créer un groupe hôte à l’aide de zones de disponibilité et de domaines d’erreur.In this example, we will use az vm host group create to create a host group using both availability zones and fault domains.

az vm host group create \
   --name myHostGroup \
   -g myDHResourceGroup \
   -z 1 \
   --platform-fault-domain-count 2 

Autres exemplesOther examples

Vous pouvez également utiliser az vm host group create pour créer un groupe hôte dans la zone de disponibilité 1 (sans domaine d’erreur).You can also use az vm host group create to create a host group in availability zone 1 (and no fault domains).

az vm host group create \
   --name myAZHostGroup \
   -g myDHResourceGroup \
   -z 1 \
   --platform-fault-domain-count 1 

L’exemple suivant exploite la commande az vm host group create pour créer un groupe hôte à l’aide de domaines d’erreur uniquement (à utiliser dans les régions dans lesquels les zones de disponibilité ne sont pas prises en charge).The following uses az vm host group create to create a host group by using fault domains only (to be used in regions where availability zones are not supported).

az vm host group create \
   --name myFDHostGroup \
   -g myDHResourceGroup \
   --platform-fault-domain-count 2 

Créer un hôteCreate a host

À présent, créons un hôte dédié dans le groupe hôte.Now let's create a dedicated host in the host group. En plus d’un nom pour l’hôte, vous devez fournir la référence SKU pour l’hôte.In addition to a name for the host, you are required to provide the SKU for the host. La référence SKU de l’hôte capture la série de machines virtuelles prises en charge, ainsi que la génération du matériel pour l’hôte dédié.Host SKU captures the supported VM series as well as the hardware generation for your dedicated host. Lors de la préversion, nous allons prendre en charge les valeurs de SKU d’hôte suivantes : DSv3_Type1 et ESv3_Type1.During the preview, we will support the following host SKU values: DSv3_Type1 and ESv3_Type1.

Pour en savoir plus sur les références SKU et la tarification des hôtes, consultez la section relative à la tarification des hôtes dédiés Azure.For more information about the host SKUs and pricing, see Azure Dedicated Host pricing.

Utilisez la commande az vm host create pour créer un hôte.Use az vm host create to create a host. Si vous définissez un nombre de domaines d’erreur pour votre groupe hôte, vous êtes invité à spécifier le domaine d’erreur de votre hôte.If you set a fault domain count for your host group, you will be asked to specify the fault domain for your host.

az vm host create \
   --host-group myHostGroup \
   --name myHost \
   --sku DSv3-Type1 \
   --platform-fault-domain 1 \
   -g myDHResourceGroup

Création d'une machine virtuelleCreate a virtual machine

Créez une machine virtuelle dans un hôte dédié à l’aide de la commande az vm create.Create a virtual machine within a dedicated host using az vm create. Si vous avez spécifié une zone de disponibilité lors de la création de votre groupe hôte, vous devez utiliser la même zone quand vous créez la machine virtuelle.If you specified an availability zone when creating your host group, you are required to use the same zone when creating the virtual machine.

az vm create \
   -n myVM \
   --image debian \
   --generate-ssh-keys \
   --host-group myHostGroup \
   --host myHost \
   --generate-ssh-keys \
   --size Standard_D4s_v3 \
   -g myDHResourceGroup \
   --zone 1

Avertissement

Toute machine virtuelle créée sur un hôte qui ne dispose pas d’un nombre de ressources suffisant présente un état ÉCHEC.If you create a virtual machine on a host which does not have enough resources, the virtual machine will be created in a FAILED state.

Vérifier l’état de l’hôteCheck the status of the host

Vous pouvez vérifier l’état d’intégrité de l’hôte et le nombre de machines virtuelles que vous pouvez encore déployer sur l’hôte à l’aide de la commande az vm host get-instance-view.You can check the host health status and how many virtual machines you can still deploy to the host using az vm host get-instance-view.

az vm host get-instance-view \
   -g myDHResourceGroup \
   --host-group myHostGroup \
   --name myHost

Le résultat ressemble à ce qui suit :The output will look similar to this:

{
  "autoReplaceOnFailure": true,
  "hostId": "6de80643-0f45-4e94-9a4c-c49d5c777b62",
  "id": "/subscriptions/10101010-1010-1010-1010-101010101010/resourceGroups/myDHResourceGroup/providers/Microsoft.Compute/hostGroups/myHostGroup/hosts/myHost",
  "instanceView": {
    "assetId": "12345678-1234-1234-abcd-abc123456789",
    "availableCapacity": {
      "allocatableVms": [
        {
          "count": 31.0,
          "vmSize": "Standard_D2s_v3"
        },
        {
          "count": 15.0,
          "vmSize": "Standard_D4s_v3"
        },
        {
          "count": 7.0,
          "vmSize": "Standard_D8s_v3"
        },
        {
          "count": 3.0,
          "vmSize": "Standard_D16s_v3"
        },
        {
          "count": 1.0,
          "vmSize": "Standard_D32-8s_v3"
        },
        {
          "count": 1.0,
          "vmSize": "Standard_D32-16s_v3"
        },
        {
          "count": 1.0,
          "vmSize": "Standard_D32s_v3"
        },
        {
          "count": 1.0,
          "vmSize": "Standard_D48s_v3"
        },
        {
          "count": 0.0,
          "vmSize": "Standard_D64-16s_v3"
        },
        {
          "count": 0.0,
          "vmSize": "Standard_D64-32s_v3"
        },
        {
          "count": 0.0,
          "vmSize": "Standard_D64s_v3"
        }
      ]
    },
    "statuses": [
      {
        "code": "ProvisioningState/succeeded",
        "displayStatus": "Provisioning succeeded",
        "level": "Info",
        "message": null,
        "time": "2019-07-24T21:22:40.604754+00:00"
      },
      {
        "code": "HealthState/available",
        "displayStatus": "Host available",
        "level": "Info",
        "message": null,
        "time": null
      }
    ]
  },
  "licenseType": null,
  "location": "eastus2",
  "name": "myHost",
  "platformFaultDomain": 1,
  "provisioningState": "Succeeded",
  "provisioningTime": "2019-07-24T21:22:40.604754+00:00",
  "resourceGroup": "myDHResourceGroup",
  "sku": {
    "capacity": null,
    "name": "DSv3-Type1",
    "tier": null
  },
  "tags": null,
  "type": null,
  "virtualMachines": [
    {
      "id": "/subscriptions/10101010-1010-1010-1010-101010101010/resourceGroups/MYDHRESOURCEGROUP/providers/Microsoft.Compute/virtualMachines/MYVM",
      "resourceGroup": "MYDHRESOURCEGROUP"
    }
  ]
}

Exporter en tant que modèleExport as a template

Vous pouvez exporter un modèle si vous souhaitez créer un environnement de développement supplémentaire avec les mêmes paramètres, ou un environnement de production correspondant.You can export a template if you now want to create an additional development environment with the same parameters, or a production environment that matches it. Resource Manager utilise des modèles JSON qui définissent tous les paramètres pour votre environnement.Resource Manager uses JSON templates that define all the parameters for your environment. Vous créez des environnements entiers en faisant référence à ce modèle JSON.You build out entire environments by referencing this JSON template. Vous pouvez créer manuellement des modèles JSON ou exporter un environnement existant qui créera le modèle JSON pour vous.You can build JSON templates manually or export an existing environment to create the JSON template for you. Utilisez la commande az group export pour exporter votre groupe de ressources.Use az group export to export your resource group.

az group export --name myDHResourceGroup > myDHResourceGroup.json 

Cette commande crée le fichier myDHResourceGroup.json dans votre répertoire de travail actuel.This command creates the myDHResourceGroup.json file in your current working directory. Quand vous créez un environnement à partir de ce modèle, vous êtes invité à indiquer tous les noms de ressources.When you create an environment from this template, you are prompted for all the resource names. Vous pouvez renseigner ces noms dans votre fichier de modèle en ajoutant le paramètre --include-parameter-default-value à la commande az group export.You can populate these names in your template file by adding the --include-parameter-default-value parameter to the az group export command. Modifiez votre modèle JSON pour spécifier les noms de ressources, ou créez un fichier parameters.json qui les spécifie.Edit your JSON template to specify the resource names, or create a parameters.json file that specifies the resource names.

Pour créer un environnement à partir de votre modèle, utilisez la commande az group deployment create.To create an environment from your template, use az group deployment create.

az group deployment create \ 
    --resource-group myNewResourceGroup \ 
    --template-file myDHResourceGroup.json 

NettoyerClean up

Vous êtes facturé pour vos hôtes dédiés, même si aucune machine virtuelle n’est déployée.You are being charged for your dedicated hosts even when no virtual machines are deployed. Supprimez tous les hôtes non utilisés pour réduire les coûts.You should delete any hosts you are currently not using to save costs.

Vous pouvez supprimer un hôte uniquement lorsqu’il n’est plus utilisé par aucune machine virtuelle.You can only delete a host when there are no any longer virtual machines using it. Supprimez les machines virtuelles avec la commande az vm delete.Delete the VMs using az vm delete.

az vm delete -n myVM -g myDHResourceGroup

Cela fait, vous pouvez supprimer l’hôte, avec la commande az vm host delete.After deleting the VMs, you can delete the host using az vm host delete.

az vm host delete -g myDHResourceGroup --host-group myHostGroup --name myHost 

Une fois que vous avez supprimé tous vos hôtes, utilisez la commande az vm host group delete pour supprimer le groupe hôte.Once you have deleted all of your hosts, you may delete the host group using az vm host group delete.

az vm host group delete -g myDHResourceGroup --host-group myHostGroup  

Vous pouvez également supprimer l’intégralité du groupe de ressources via une seule commande.You can also delete the entire resource group in a single command. Cette opération supprime toutes les ressources créées dans le groupe, y compris l’ensemble des machines virtuelles, des hôtes et des groupes hôtes.This will delete all resources created in the group, including all of the VMs, hosts and host groups.

az group delete -n myDHResourceGroup 

Étapes suivantesNext steps

  • Pour en savoir plus, consultez la page de présentation Hôtes dédiés.For more information, see the Dedicated hosts overview.

  • Le Portail Microsoft Azure permet également de créer des hôtes dédiés.You can also create dedicated hosts using the Azure portal.

  • Un exemple de modèle, trouvé ici, utilise les zones et les domaines d’erreur pour offrir une résilience maximale dans une région.There is sample template, found here, that uses both zones and fault domains for maximum resiliency in a region.