Créer un cloud privé VMware Engine

Un cloud privé est une pile VMware isolée constituée d'hôtes ESXi, d'un serveur vCenter et des composants vSAN, NSX-T et HCX. Vous gérez les clouds privés via le portail Google Cloud VMware Engine. Lorsque vous créez un cloud privé, vous obtenez un seul cluster vSphere et toutes les VM de gestion créées dans ce cluster.

VMware Engine déploie les composants de gestion sur le réseau que vous sélectionnez pour les sous-réseaux vSphere/vSAN. La plage d'adresses IP du réseau est divisée en différents sous-réseaux pendant le déploiement.

Avant de commencer

Avant d'effectuer les tâches décrites sur cette page, effectuez les opérations préalables suivantes étapes.

  • Allouez une plage d'adresses IP unique pour les sous-réseaux vSphere/vSAN du cloud privé que vous souhaitez créer.
    • Préfixe de la plage CIDR minimale : /24
    • Préfixe de la plage CIDR maximale : /21
  • Si vous souhaitez effectuer une résolution d'adresses globale à l'aide de Cloud DNS, activez l'API Cloud DNS et terminez la configuration de Cloud DNS avant de créer votre cloud privé.

L'espace d'adressage de sous-réseau vSphere/vSAN ne doit chevaucher aucun réseau qui communique avec le cloud privé, tel que des réseaux sur site et les réseaux de cloud privés virtuels (VPC) Google Cloud. Pour en savoir plus sur les sous-réseaux vSphere ou vSAN, consultez la page VLAN et sous-réseaux sur VMware Engine.

Exigences concernant gcloud et l'API

Pour utiliser l'outil de ligne de commande gcloud ou l'API pour gérer vos ressources VMware Engine, nous vous recommandons de configurer les outils comme décrit ci-dessous.

gcloud

  1. Définissez votre ID de projet par défaut :

    gcloud config set project PROJECT_ID
    
  2. Définissez une région et/ou une zone par défaut:

    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE

Pour en savoir plus sur l'outil gcloud vmware, consultez la documentation de référence du SDK Cloud.

API

Les exemples d'API de cet ensemble de documentation utilisent l'outil de ligne de commande cURL pour interroger l'API. Un jeton d'accès valide est requis dans la requête cURL. Il existe de nombreuses façons d'obtenir un jeton d'accès valide : les étapes suivantes utilisent Outil gcloud pour générer un jeton d'accès:

  1. Se connecter à Google Cloud

    gcloud auth login
    
  2. Générer un jeton d'accès et exporter vers TOKEN

    export TOKEN=`gcloud auth print-access-token`
    
  3. Vérifiez que TOKEN est correctement défini

    echo $TOKEN
    
    Output:
    TOKEN
    

À présent, utilisez le jeton d'autorisation dans vos requêtes à l'API. Exemple :

curl -X GET -H "Authorization: Bearer \"$TOKEN\""  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

Les exemples de code Python de cette documentation utilisent la bibliothèque VMware Engine pour communiquer avec l'API. Pour pouvoir utiliser cette approche, vous devez installer la bibliothèque et configurer les identifiants par défaut de l'application.

  1. Télécharger et installer la bibliothèque Python

     pip install google-cloud-vmwareengine
    
  2. Configurez les informations ADC en exécutant ces commandes dans votre shell.

      gcloud auth application-default login
    

    ou utiliser un fichier de clé de compte de service

      export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Pour en savoir plus sur la bibliothèque, consultez la page de référence ou consultez des exemples de code sur GitHub.

Créer un cloud privé

Console

  1. Accédez au portail Google Cloud VMware Engine.
  2. Sur la page Ressources, cliquez sur Créer un cloud privé.
  3. Sélectionnez un emplacement pour votre cloud privé.
  4. Sélectionnez le nombre de nœuds du cloud privé. Pour les charges de travail de production, créez votre cloud privé avec au moins trois nœuds. VMware Engine supprime les clouds privés qui ne contiennent qu'un seul nœud après 60 jours.
  5. Facultatif : Cliquez sur le bouton d'activation Personnaliser les cœurs si vous souhaitez réduire le nombre de cœurs disponibles pour chaque nœud du cluster de gestion. Pour en savoir plus, consultez la section Nombre de cœurs personnalisé.
  6. Saisissez une plage CIDR pour le réseau de gestion VMware. Pour en savoir plus sur les restrictions de cette plage, consultez la section Avant de commencer.
  7. Saisissez une plage CIDR pour le réseau de déploiement HCX, qui sera utilisée pour déployer les composants HCX. Assurez-vous que la plage CIDR ne chevauche aucun de vos sous-réseaux sur site ou dans le cloud. La plage CIDR doit être /27 ou supérieure.
  8. Sélectionnez Vérifier et créer.
  9. Vérifiez les paramètres. Pour modifier les paramètres, cliquez sur Retour.
  10. Cliquez sur Créer pour commencer à provisionner le cloud privé.

Lorsque VMware Engine crée votre cloud privé, il déploie un certain nombre de composants VMware et divise la plage d'adresses IP fournie en sous-réseaux. La création d'un cloud privé peut prendre de 30 minutes à 2 heures. Une fois le provisionnement terminé, vous recevez un e-mail.

gcloud

  1. [Facultatif] Indiquez les régions et zones disponibles pour votre projet.

    gcloud vmware locations list --project=PROJECT_ID
    
  2. Créez un réseau pour votre cloud privé. Le nom du réseau doit être au format REGION-default.

    gcloud vmware networks create REGION-default --type=LEGACY --location=REGION --description="Legacy network created using gcloud vmware"
    

    La requête renvoie un ID d'opération.

  3. Vérifiez l'état de l'opération. Lorsque l'opération renvoie DONE, Vérifiez la réponse pour voir si l'opération a réussi.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Remplacez OPERATION_ID par l'ID de l'étape précédente.

  4. Créez ensuite un cloud privé à trois nœuds.

    gcloud vmware private-clouds create PC_NAME \
       --location=ZONE --cluster=CLUSTER_NAME\
       --node-type-config=standard-72,count=3 \
       --management-range=192.168.0.0/24 \
       --vmware-engine-network=NETWORK_NAME
    

    Remplacez les éléments suivants :

    • PC_NAME: nom du cloud privé
    • ZONE: zone du cloud privé
    • CLUSTER_NAME : nom du nouveau cluster dans ce cloud privé
    • NETWORK_NAME: nom du réseau concerné. cloud

    La requête renvoie un ID d'opération que vous pouvez utiliser pour vérifier la progression de l'opération.

  5. Vérifiez l'état de l'opération. Lorsque l'opération renvoie DONE, vérifiez la réponse pour voir si l'opération a réussi.

    gcloud vmware operations describe OPERATION_ID \
        --location REGION
    

    Remplacez OPERATION_ID par l'ID de l'étape précédente.

  6. Pour connecter le réseau VMware Engine à votre VPC, procédez comme suit : configurer l'accès aux services privés.

  7. Récupérez les identifiants vCenter et NSX-T.

    gcloud vmware private-clouds vcenter credentials describe \
    --private-cloud=PC_NAME  --location=ZONE
    
    gcloud vmware private-clouds nsx credentials describe \
    --private-cloud=PC_NAME --location=ZONE
    

API

  1. Créer un ancien réseau Le nom du réseau doit être au format REGION-default

    curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks?vmwareEngineNetworkId=REGION-default -d "{"type": "legacy"}"
    

    Remplacez les éléments suivants :

    • TOKEN: jeton d'autorisation pour ce requête.
    • PROJECT_ID: projet concerné par la requête.
    • REGION: région dans laquelle créer ce réseau.

    La requête renvoie un ID d'opération que vous pouvez utiliser pour vérifier la progression de l'opération.

  2. Vérifiez l'état de l'opération. Lorsque l'opération renvoie DONE, vérifiez la réponse pour voir si l'opération a réussi.

    curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

    Remplacez OPERATION_ID par l'ID de l'étape précédente.

  3. Créer un cloud privé à trois nœuds

    curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds?privateCloudId=PC_NAME -d "{
    "networkConfig":{
      "vmwareEngineNetwork":"projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks/REGION-default",
      "managementCidr":"10.241.0.0/22"
       },
    "managementCluster":{
      "clusterId": "CLUSTER_NAME",
      "nodeTypeConfigs": {
      "standard-72": {
        "nodeCount": 3
       }
      }
     }
    }"
    

    Remplacez les éléments suivants :

    • TOKEN: jeton d'autorisation pour ce requête.
    • PROJECT_ID: projet concerné par cette requête
    • ZONE: zone du cloud privé
    • PC_NAME: nom du cloud privé
    • REGION: région du réseau pour ce cloud privé
    • CLUSTER_NAME: nom du nouveau cluster. dans ce cloud privé

    La requête renvoie un ID d'opération que vous pouvez utiliser pour vérifier la progression de l'opération.

  4. Vérifiez l'état de l'opération. Lorsque l'opération renvoie DONE, vérifiez la réponse pour voir si l'opération a réussi.

    curl -X GET -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
    

    Remplacez OPERATION_ID par l'ID de l'étape précédente.

  5. Connectez le réseau VMware Engine à votre VPC en configurant l'accès aux services privés.

  6. Récupérez les identifiants vCenter et NSX-T.

    curl -X GET -H "Authorization: Bearer \"TOKEN"\"  -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds/my-private-cloud:showVcenterCredentials"
    
    curl -X GET -H "Authorization: Bearer \"TOKEN"\"  -H "Content-Type: application/json; charset=utf-8" "https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds/my-private-cloud:showNsxCredentials"
    

Python

  1. Créer un ancien réseau

    from google.cloud import vmwareengine_v1
    
    TIMEOUT = 1200  # 20 minutes
    
    
    def create_legacy_network(
        project_id: str, region: str
    ) -> vmwareengine_v1.VmwareEngineNetwork:
        """
        Creates a new legacy network.
    
        Args:
            project_id: name of the project you want to use.
            region: name of the region you want to use. I.e. "us-central1"
    
        Returns:
            The newly created VmwareEngineNetwork object.
        """
        network = vmwareengine_v1.VmwareEngineNetwork()
        network.description = (
            "Legacy network created using vmwareengine_v1.VmwareEngineNetwork"
        )
        network.type_ = vmwareengine_v1.VmwareEngineNetwork.Type.LEGACY
    
        request = vmwareengine_v1.CreateVmwareEngineNetworkRequest()
        request.parent = f"projects/{project_id}/locations/{region}"
        request.vmware_engine_network_id = f"{region}-default"
        request.vmware_engine_network = network
    
        client = vmwareengine_v1.VmwareEngineClient()
        result = client.create_vmware_engine_network(request, timeout=TIMEOUT).result()
    
        return result
    
    
  2. Créez un cloud privé à trois nœuds.

    from google.api_core import operation
    from google.cloud import vmwareengine_v1
    
    DEFAULT_MANAGEMENT_CIDR = "192.168.0.0/24"
    DEFAULT_NODE_COUNT = 3
    
    
    def create_private_cloud(
        project_id: str, zone: str, network_name: str, cloud_name: str, cluster_name: str
    ) -> operation.Operation:
        """
        Creates a new Private Cloud using VMWare Engine.
    
        Creating a new Private Cloud is a long-running operation and it may take over an hour.
    
        Args:
            project_id: name of the project you want to use.
            zone: the zone you want to use, i.e. "us-central1-a"
            network_name: name of the VMWareNetwork to use for the new Private Cloud
            cloud_name: name of the new Private Cloud
            cluster_name: name for the new cluster in this Private Cloud
    
        Returns:
            An operation object representing the started operation. You can call its .result() method to wait for it to finish.
        """
        request = vmwareengine_v1.CreatePrivateCloudRequest()
        request.parent = f"projects/{project_id}/locations/{zone}"
        request.private_cloud_id = cloud_name
    
        request.private_cloud = vmwareengine_v1.PrivateCloud()
        request.private_cloud.management_cluster = (
            vmwareengine_v1.PrivateCloud.ManagementCluster()
        )
        request.private_cloud.management_cluster.cluster_id = cluster_name
    
        node_config = vmwareengine_v1.NodeTypeConfig()
        node_config.node_count = DEFAULT_NODE_COUNT
    
        # Currently standard-72 is the only supported node type.
        request.private_cloud.management_cluster.node_type_configs = {
            "standard-72": node_config
        }
    
        request.private_cloud.network_config = vmwareengine_v1.NetworkConfig()
        request.private_cloud.network_config.vmware_engine_network = network_name
        request.private_cloud.network_config.management_cidr = DEFAULT_MANAGEMENT_CIDR
    
        client = vmwareengine_v1.VmwareEngineClient()
        return client.create_private_cloud(request)
    
    

    La fonction create_private_cloud renvoie un objet d'opérations que vous pouvez utiliser pour vérifier la progression de l'opération.

  3. Vérifiez l'état de l'opération. Récupère les informations actuelles sur une opération.

    from google.cloud import vmwareengine_v1
    from google.longrunning.operations_pb2 import GetOperationRequest
    
    
    def get_operation_by_name(operation_name: str) -> Operation:
        """
        Retrieve detailed information about an operation.
    
        Args:
            operation_name: name identifying an operation you want to check.
                Expected format: projects/{project_id}/locations/{region}/operations/{operation_id}
    
        Returns:
            Operation object with details.
        """
        client = vmwareengine_v1.VmwareEngineClient()
        request = GetOperationRequest()
        request.name = operation_name
        return client.get_operation(request)
    
    
    def get_operation(project_id: str, region: str, operation_id: str) -> Operation:
        """
        Retrieve detailed information about an operation.
    
        Args:
            project_id: name of the project running the operation.
            region: name of the region in which the operation is running.
            operation_id: identifier of the operation.
    
        Returns:
            Operation object with details.
        """
        return get_operation_by_name(
            f"projects/{project_id}/locations/{region}/operations/{operation_id}"
        )
    
    

    Vous pouvez utiliser la méthode membre .result() de l'objet d'opération pour attendre qu'elle se termine.

  4. Pour connecter le réseau VMware Engine à votre VPC, procédez comme suit : configurer l'accès aux services privés.

  5. Récupérez les identifiants vCenter et NSX-T.

    from google.cloud import vmwareengine_v1
    
    
    def get_vcenter_credentials(
        project_id: str, zone: str, private_cloud_name: str
    ) -> vmwareengine_v1.Credentials:
        """
        Retrieves VCenter credentials for a Private Cloud.
    
        Args:
            project_id: name of the project hosting the private cloud.
            zone: name of the zone hosting the private cloud.
            private_cloud_name: name of the private cloud.
    
        Returns:
            A Credentials object.
        """
        client = vmwareengine_v1.VmwareEngineClient()
        credentials = client.show_vcenter_credentials(
            private_cloud=f"projects/{project_id}/locations/{zone}/privateClouds/{private_cloud_name}"
        )
        return credentials
    
    
    from google.cloud import vmwareengine_v1
    
    
    def get_nsx_credentials(
        project_id: str, zone: str, private_cloud_name: str
    ) -> vmwareengine_v1.Credentials:
        """
        Retrieves NSX credentials for a Private Cloud.
    
        Args:
            project_id: name of the project hosting the private cloud.
            zone: name of the zone hosting the private cloud.
            private_cloud_name: name of the private cloud.
    
        Returns:
            A Credentials object.
        """
        client = vmwareengine_v1.VmwareEngineClient()
        credentials = client.show_nsx_credentials(
            private_cloud=f"projects/{project_id}/locations/{zone}/privateClouds/{private_cloud_name}"
        )
        return credentials
    
    

Étape suivante