Importer des images système à partir de dispositifs virtuels


Utilisez une image système pour stocker la totalité de la configuration, des métadonnées, des autorisations et des données d'un ou plusieurs disques pour une instance de VM exécutée sur Compute Engine. Pour savoir quand et comment utiliser des images système, consultez la page Images système.

Ce document décrit les étapes à suivre pour importer une image système à partir d'un dispositif virtuel.

Avant de commencer

  • Si le projet dans lequel vous souhaitez importer l'image système possède un règlement relatif aux images de confiance, ajoutez projects/compute-image-import et projects/compute-image-tools à la liste des éditeurs autorisés.
  • Si vous importez un dispositif virtuel à partir d'un autre projet, consultez la section Importer à partir d'un autre projet.
  • Consultez les exigences concernant la VM source et les fichiers OVF dans le guide "Importer des dispositifs virtuels" de Compute Engine.
  • Pour savoir comment satisfaire les exigences avant d'importer des images de machines, consultez la section Conditions préalables à l'importation et à l'exportation d'images de VM.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    gcloud

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
    2. Définissez une région et une zone par défaut.

    REST

    Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init

Limites et restrictions

  • Vous pouvez partager une image système entre plusieurs projets. Toutefois, notez que les réseaux VPC partagés ne sont pas compatibles.
  • Cette fonctionnalité n'est pas disponible pour les projets protégés par VPC Service Controls.
  • Les images système ne peuvent pas être créées à partir de VM sources auxquelles plus de 200 To de disques sont associés.

Systèmes d'exploitation compatibles

Pour en savoir plus sur la compatibilité des systèmes d'exploitation, consultez la page Détails des systèmes d'exploitation.

Importer des images système

Vous pouvez importer des images système à partir de dispositifs virtuels à l'aide de Google Cloud CLI ou de REST.

gcloud

Exécutez la commande gcloud compute machine-images import pour importer une image système à partir de dispositifs virtuels.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=gs:SOURCE_URI \
    --os=OS

Remplacez l'élément suivant :

  • MACHINE_IMAGE_NAME : nom de l'image système que vous souhaitez importer.
  • SOURCE_URI : chemin d'accès à votre fichier OVA ou OVF dans Cloud Storage.
  • OS : système d'exploitation du fichier OVA. Cette option est par défaut facultative, mais elle peut être obligatoire dans certains cas. Nous vous recommandons de la renseigner.

Exemple

Par exemple, vous pouvez utiliser la commande gcloud suivante pour importer une image système appelée my-machine-image à partir d'un fichier source OVA appelé my-ova, qui est stocké dans le répertoire gs://my-bucket et exécute centos-7 :

gcloud compute machine-images import my-machine-image  \
    --source-uri=gs://my-bucket/my-ova/ \
    --os=centos-7

REST

  1. Importez le dispositif virtuel dans Cloud Storage.

  2. Envoyez une requête POST à l'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
     "timeout": "7200s",
     "steps":[
       {
         "args":[
           "-machine-image-name=MACHINE_IMAGE_NAME",
           "-ovf-gcs-path=SOURCE_URI",
           "-os=OS",
           "-client-id=api",
           "-timeout=7000s"
         ],
         "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
         "env":[
           "BUILD_ID=$BUILD_ID"
         ]
       }
     ],
     "tags":"gce-ovf-machine-image-import"
    }
    

    Remplacez l'élément suivant :

    • PROJECT_ID : ID du projet dans lequel vous souhaitez importer le fichier OVA.
    • MACHINE_IMAGE_NAME : nom de l'image système à importer. Exemple :my-machine-image
    • SOURCE_URI : URI du fichier OVA ou d'un répertoire contenant des packages OVF, hébergé dans Cloud Storage. Exemple :gs://my-bucket/my-instance.ova
    • OS : système d'exploitation du fichier OVA. Exemple : ubuntu-1604. Cette option est par défaut facultative, mais elle peut être obligatoire dans certains cas. Nous vous recommandons de la renseigner.

    Pour consulter les autres valeurs args que vous pouvez spécifier, reportez-vous à la section des options facultatives de la page GitHub dédiée à l'importation OVF dans Compute Engine.

Importer des images système avec des remplacements OVF

CPU et mémoire personnalisés

gcloud

Pour remplacer la configuration du processeur ou de la mémoire spécifiée dans le fichier OVF, suivez les étapes décrites dans Google Cloud CLI pour importer une image système et spécifiez les options --custom-cpu et --custom-memory.

Exemple

Les remplacements suivants sont appliqués aux paramètres du fichier OVF pour une image système nommée my-machine-image :

  • Système d'exploitation : Ubuntu 1404
  • Processeur : 2 CPUs
  • Mémoire : 2048 MB

Pour importer my-machine-image avec ces remplacements, exécutez la commande suivante :

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \
    --custom-cpu=2 --custom-memory=2048MB

REST

Pour remplacer la configuration du processeur ou de la mémoire spécifiée dans le fichier OVF, suivez les étapes d'importation d'une image système de l'API Compute Engine en spécifiant l'argument -machine-type. Cette option -machine-type représente un type de machine prédéfini ou personnalisé à utiliser.

Exemple

Les remplacements suivants sont appliqués aux paramètres du fichier OVF pour une image système nommée my-machine-image :

  • Système d'exploitation : Ubuntu 1404
  • Processeur : 2 CPUs
  • Mémoire : 2048 MB

Pour importer my-machine-image avec ces remplacements, envoyez la requête suivante à l'API Compute Engine.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-machine-type=custom-2-2048",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Remplacez PROJECT_ID par l'ID du projet.

Réseaux personnalisés

gcloud

Pour configurer un réseau personnalisé, suivez les étapes de Google Cloud CLI pour importer une image système et spécifiez l'option --network. Si le réseau est configuré en mode sous-réseau personnalisé, vous devez également spécifier les options --subnet et --zone.

Exemple

Les remplacements suivants sont appliqués aux paramètres du fichier OVF pour une image système nommée my-machine-image :

  • Système d'exploitation : Ubuntu 1404
  • Réseau : custom-vpc-network
  • Sous-réseau : company-vpc-us-east1-c
  • Zone : us-east1-c

Pour importer my-machine-image avec ces remplacements, exécutez l'exemple de commande suivant :

gcloud compute machine-images import my-machine-image \
    --os=ubuntu-1404 \
    --source-uri=gs://my-bucket/Ubuntu.ova \
    --network=custom-vpc-network \
    --subnet=company-vpc-us-east1-c \
    --zone=us-east1-c

REST

Pour utiliser un réseau personnalisé, suivez les étapes d'importation d'une image système de l'API Compute Engine en spécifiant l'argument -network. Si le réseau est configuré en mode sous-réseau personnalisé, vous devez également spécifier des arguments -subnet et -zone.

Exemple

Les remplacements suivants sont appliqués aux paramètres du fichier OVF pour une image système nommée my-machine-image :

  • Système d'exploitation : Ubuntu 1404
  • Réseau : custom-vpc-network
  • Sous-réseau : company-vpc-us-east1-c
  • Zone : us-central1-c

Pour importer my-machine-image avec ces remplacements, envoyez la requête suivante à l'API Compute Engine.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=my-machine-image",
        "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova",
        "-os=ubuntu-1404",
        "-zone=us-central1-c",
        "-network=custom-vpc-network",
        "-subnet=company-vpc-us-east1-c",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUsILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Remplacez PROJECT_ID par l'ID du projet.

Importer une image système dans un réseau n'autorisant pas les adresses IP externes

Pour importer une image système à l'aide d'un réseau qui n'autorise pas les adresses IP externes, procédez comme suit :

  1. Ajoutez le dispositif virtuel dans Cloud Storage.

  2. Le processus d'importation nécessite que les gestionnaires de packages soient installés sur le système d'exploitation de l'image système. Ces gestionnaires de packages peuvent avoir besoin d'envoyer des requêtes à des dépôts de packages en dehors de Google Cloud. Pour autoriser l'accès à ces mises à jour, vous devez configurer Cloud NAT. Pour en savoir plus, consultez la page Créer une configuration NAT à l'aide de Cloud Router.

  3. Configurez l'accès privé à Google. Pour plus d'informations, consultez la page Configurer l'accès privé à Google.

  4. Importez l'image système à l'aide de Google Cloud CLI ou de l'API Cloud Build.

    Lorsque vous importez une image système à partir d'un dispositif virtuel, des VM temporaires sont créées dans votre projet. Pour vous assurer que ces VM temporaires ne se voient pas attribuer d'adresses IP externes, vous devez spécifier une option ou un argument supplémentaire.

    Pour plus d'informations sur l'option ou l'argument requis, cliquez sur les onglets suivants :

gcloud

Exécutez la commande gcloud compute machine-images import avec l'option --no-address.

gcloud compute machine-images import MACHINE_IMAGE_NAME \
    --source-uri=SOURCE_URI \
    --os=OS \
    --zone=ZONE \
    --no-address

Remplacez l'élément suivant :

  • MACHINE_IMAGE_NAME : nom de l'image système que vous souhaitez importer.
  • SOURCE_URI : l'URI de votre fichier OVA ou OVF sur Cloud Storage. Exemple : gs://my-bucket/Ubuntu.ova.
  • OS : système d'exploitation du fichier OVA. Cette option est par défaut facultative, mais elle peut être obligatoire dans certains cas. Nous vous recommandons de la renseigner. Pour obtenir la liste des valeurs acceptées, examinez les options --os de la commande gcloud compute machine-images import.
  • ZONE : zone dans laquelle importer l'image système. Si vous ne renseignez pas ce champ, la zone par défaut du projet est utilisée.

REST

Utilisez l'API Cloud Build et spécifiez l'argument -no-external-ip.

 POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
 {
  "timeout":"7200s",
  "steps":[
    {
      "args":[
        "-machine-image-name=MACHINE_IMAGE_NAME",
        "-ovf-gcs-path=SOURCE_URI",
        "-os=OS",
        "-zone=ZONE",
        "-no-external-ip",
        "-client-id=api",
        "-timeout=7000s"
      ],
      "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":"gce-ovf-machine-image-import"
}

Remplacez l'élément suivant :

  • PROJECT_ID0160: ID du projet dans lequel vous souhaitez importer l'image système.
  • MACHINE_IMAGE_NAME : nom de l'image système à importer. Exemple :my-machine-image
  • SOURCE_URI : l'URI du fichier OVA stocké dans Cloud Storage. Exemple : gs://my-bucket/my-machine.ova.
  • OS : le système d'exploitation du fichier OVA. Par exemple, ubuntu-1604. Cette option est par défaut facultative, mais elle peut être obligatoire dans certains cas. Nous vous recommandons de la renseigner. Pour obtenir la liste des valeurs acceptées, examinez les options --os de la commande gcloud compute instances import.
  • ZONE : zone dans laquelle importer l'image système.

Importer une image système à l'aide de comptes de service personnalisés

Lors de l'importation d'une image système, des instances de machine virtuelle (VM) temporaires sont créées dans votre projet. L'outil d'importation sur ces VM temporaires doit être authentifié.

Un compte de service est une identité associée à une VM. Les jetons d'accès au compte de service sont accessibles via le serveur de métadonnées de VM et permettent d'authentifier l'outil d'importation sur la VM.

Par défaut, le processus d'importation utilise le compte de service Compute Engine par défaut. Toutefois, si le compte de service Compute Engine par défaut est désactivé dans votre projet ou si vous souhaitez utiliser un compte de service Compute Engine personnalisé, vous devez créer un compte de service et le spécifier pour le processus d'importation.

gcloud

  1. Ajoutez le dispositif virtuel dans Cloud Storage.

  2. Créez un compte de service et attribuez les rôles minimaux. Pour en savoir plus sur la création des comptes de service, consultez la page Créer et gérer des comptes de service.

    Au minimum, le compte de service Compute Engine spécifié doit avoir les rôles suivants :

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    Ces rôles minimaux sont nécessaires pour le compte de service spécifié pour l'option --compute-service-account. Pour plus d'informations, consultez la section Attribuer les rôles requis au compte de service Compute Engine.

  3. Exécutez la commande gcloud compute machine-images import pour importer une image système à partir de dispositifs virtuels.

    gcloud compute machine-images import MACHINE_IMAGE_NAME \
        --source-uri=gs:SOURCE_URI \
        --os=OS \
        --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \
        --service-account=SERVICE_ACCOUNT_EMAIL \
        --scopes=SCOPES
    

    Remplacez l'élément suivant :

    • MACHINE_IMAGE_NAME : nom de l'image système que vous souhaitez importer.
    • SOURCE_URI : chemin d'accès à votre fichier OVA ou OVF dans Cloud Storage.
    • OS : système d'exploitation du fichier OVA. Cette option est par défaut facultative, mais elle peut être obligatoire dans certains cas. Nous vous recommandons de la renseigner.
    • TEMP_SERVICE_ACCOUNT_EMAIL : adresse e-mail associée au compte de service personnalisé créé à l'étape précédente. Ce compte de service est utilisé par les VM temporaires. S'il n'est pas spécifié, la VM utilise le compte de service Compute Engine par défaut.
    • SERVICE_ACCOUNT_EMAIL : adresse e-mail associée au compte de service personnalisé qui doit être associé à toute VM créée à partir de cette image système. Il n'existe aucune restriction d'autorisations pour ce compte de service. Vous pouvez le personnaliser si nécessaire. S'il n'est pas spécifié, le compte de service Compute Engine par défaut est associé à la VM.
    • SCOPES : spécifiez le niveau d'accès de l'option --service-account. Si aucune valeur n'est spécifiée, les champs d'application par défaut sont utilisés. Pour en savoir plus, consultez la section concernant l'option --scopes.

REST

  1. Ajoutez le dispositif virtuel dans Cloud Storage.

  2. Créez un compte de service et attribuez les rôles minimaux. Pour en savoir plus sur la création des comptes de service, consultez la page Créer et gérer des comptes de service.

    Au minimum, le compte de service Compute Engine spécifié doit avoir les rôles suivants :

    • roles/compute.storageAdmin
    • roles/storage.objectViewer

    Ces rôles minimaux sont nécessaires pour le compte de service spécifié pour l'argument -compute-service-account. Pour plus d'informations, consultez la section Attribuer les rôles requis au compte de service Compute Engine.

  3. Envoyez une requête POST à l'API Cloud Build.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
    "timeout":"7200s",
    "steps":[
      {
        "args":[
          "-machine-image-name=MACHINE_IMAGE_NAME",
          "-ovf-gcs-path=SOURCE_URI",
          "-os=OS",
          "-zone=ZONE",
          "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL",
          "-service-account=SERVICE_ACCOUNT_EMAIL",
          "-client-id=api",
          "-timeout=7000s"
        ],
        "name":"gcr.io/compute-image-tools/gce_ovf_import:release",
        "env":[
          "BUILD_ID=$BUILD_ID"
        ]
      }
    ],
    "tags":"gce-ovf-machine-image-import"
    }
    

    Remplacez l'élément suivant :

    • PROJECT_ID0160: ID du projet dans lequel vous souhaitez importer l'image système.
    • MACHINE_IMAGE_NAME : nom de l'image système à importer. Exemple :my-machine-image
    • SOURCE_URI : l'URI du fichier OVA stocké dans Cloud Storage. Exemple : gs://my-bucket/my-machine.ova.
    • OS : le système d'exploitation du fichier OVA. Par exemple, ubuntu-1604. Cette option est par défaut facultative, mais elle peut être obligatoire dans certains cas. Nous vous recommandons de la renseigner. Pour obtenir la liste des valeurs acceptées, examinez les options --os de la commande gcloud compute instances import.
    • ZONE : zone dans laquelle importer l'image système.
    • TEMP_SERVICE_ACCOUNT_EMAIL : adresse e-mail associée au compte de service personnalisé créé à l'étape précédente. Ce compte de service est utilisé par les VM temporaires. S'il n'est pas spécifié, la VM utilise le compte de service Compute Engine par défaut.
    • SERVICE_ACCOUNT_EMAIL : adresse e-mail associée au compte de service personnalisé qui doit être associé à toute VM créée à partir de cette image système. Il n'existe aucune restriction d'autorisations pour ce compte de service. Vous pouvez le personnaliser si nécessaire. S'il n'est pas spécifié, le compte de service Compute Engine par défaut est associé à la VM.
    • SCOPES : spécifiez le niveau d'accès de l'option --service-account. Si aucune valeur n'est spécifiée, les champs d'application par défaut sont utilisés. Pour en savoir plus, consultez la section concernant l'option --scopes.

Étape suivante