Importer des ressources déployées dans Infrastructure Manager


Ce tutoriel explique comment importer des ressources Google Cloud dans un déploiement Infrastructure Manager. Vous ne pouvez importer que des ressources provisionnées à l'aide de Terraform.

Si vous disposez d'une configuration Terraform et que vous ne l'avez pas encore déployée surGoogle Cloud, consultez la section Déploiement d'une infrastructure à l'aide d'Infrastructure Manager.

Ce tutoriel commence par le déploiement d'un cloud privé virtuel (VPC) surGoogle Cloud à l'aide de la CLI Terraform. Ce tutoriel explique ensuite comment importer ces ressources déployées dans Infrastructure Manager afin qu'elles puissent être gérées en tant que déploiement Infrastructure Manager.

Vous pouvez utiliser l'exemple de ce tutoriel pour comprendre comment importer d'autres ressourcesGoogle Cloud dans Infra Manager. Pour importer le déploiement dans Infra Manager, la configuration Terraform utilisée pour provisionner les ressources doit respecter les contraintes, et les ressources doivent avoir été provisionnées à l'aide d'une version Terraform compatible.

Coûts

Ce tutoriel utilise les composants facturables suivants de Google Cloud:

Avant de commencer

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Install the Google Cloud CLI.
  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Infrastructure Manager API:

    gcloud services enable config.googleapis.com
  7. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. Grant the roles/config.agent IAM role to the service account:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  11. Make sure that billing is enabled for your Google Cloud project.

  12. Enable the Infrastructure Manager API:

    gcloud services enable config.googleapis.com
  13. Set up authentication:

    1. Create the service account:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Replace SERVICE_ACCOUNT_NAME with a name for the service account.

    2. Grant the roles/config.agent IAM role to the service account:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent

      Replace the following:

      • SERVICE_ACCOUNT_NAME: the name of the service account
      • PROJECT_ID: the project ID where you created the service account
  14. Installez une version compatible de Terraform.

Déployer des ressources sur Google Cloud

La ressource Google Cloud que vous déployez dans ce tutoriel est un VPC. Cette section vous explique comment déployer la ressource à utiliser comme exemple pour importer des ressources déployées dans Infra Manager.

Ce tutoriel utilise la région us-central1. Si vous souhaitez utiliser une autre région, vous pouvez utiliser n'importe quel emplacement où Infra Manager s'exécute. Pour obtenir la liste des emplacements valides, consultez la section Emplacements Infrastructure Manager.

Accorder des autorisations pour les ressources de la configuration

Vous avez accordé les autorisations nécessaires pour exécuter Infra Manager, mais vous devez également accorder des autorisations spécifiques aux ressources décrites dans la configuration que vous déployez.

Accordez des autorisations pour pouvoir créer le réseau VPC, qui est la ressource définie dans la configuration Terraform:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/compute.networkAdmin

Remplacez les éléments suivants :

  • SERVICE_ACCOUNT_NAME : nom du compte de service.
  • PROJECT_ID : ID de votre projet.

Déployer des ressources à l'aide de la CLI Terraform

  1. Créez un réseau VPC à l'aide de la configuration Terraform suivante. Pour ce faire, exécutez la commande suivante :

    mkdir vpc_to_import
    cd vpc_to_import
    cat <<EOF > main.tf
    variable "project_id" {
      type = string
    }
    
    resource "google_compute_network" "vpc_network" {
      name = "my-custom-mode-network"
      project = var.project_id
    }
    EOF
    
  2. Déployez la configuration à l'aide de la CLI Terraform à l'aide de la commande suivante:

    terraform init
    echo "**************  TERRAFORM APPLY  ******************"
    terraform apply -var="project_id=PROJECT_ID" -auto-approve
    cd ..
    

Lorsque le VPC est provisionné, la sortie commence par le texte Creation complete.

Le VPC défini dans la configuration Terraform est désormais déployé sur Google Cloud. Terraform crée un fichier d'état, qui se trouve dans le système de fichiers à côté du fichier main.tf.

Créer un déploiement d'espace réservé dans Infrastructure Manager

Pour importer des ressources dans Infra Manager, vous devez disposer d'un déploiement existant dans Infra Manager.

Ce tutoriel utilise un bucket de stockage pour stocker la configuration Terraform. Si vous utilisez ce tutoriel pour comprendre comment importer d'autres déploiements dans Infra Manager, vous pouvez stocker la configuration Terraform dans un bucket de stockage, un dépôt Git public ou sur votre machine locale.

  1. Ajoutez une configuration Terraform vide au bucket de stockage:

    gcloud storage buckets create gs://import-deployment-configuration --project=PROJECT_ID
    
    mkdir placeholder_deployment
    cd placeholder_deployment
    cat <<EOF > main.tf
    EOF
    
    gcloud storage cp main.tf gs://import-deployment-configuration
    cd ..
    
  2. Créez un déploiement à l'aide d'Infra Manager.

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
    --gcs-source gs://import-deployment-configuration \
    --input-values project_id=PROJECT_ID \
    --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT
    

    Une fois le déploiement terminé, les éléments suivants s'affichent:

    Creating the deployment...done
    

Vous disposez désormais d'un déploiement Infra Manager. Ensuite, vous devez ajouter le fichier d'état et la configuration Terraform à ce déploiement afin qu'il gère le VPC.

Importer le fichier d'état et la configuration Terraform

Pour gérer la ressource déployée (le VPC) à l'aide d'Infra Manager, vous devez ajouter le fichier d'état et la configuration Terraform à Infra Manager.

Verrouiller le déploiement

Verrouillez le déploiement d'Infra Manager pour pouvoir modifier son état.

LOCK_ID=$(gcloud infra-manager deployments lock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment --format="get(lockId)")

Importer le fichier d'état Terraform dans Infra Manager

Importez le fichier d'état de vos ressources déployées. Ce fichier d'état a été créé par Terraform lorsque vous avez déployé le VPC à l'aide de la CLI Terraform.

Importez le fichier d'état Terraform dans le déploiement d'Infra Manager.

SIGNED_STATE_UPLOAD_URL=$(gcloud infra-manager deployments import-statefile projects/PROJECT_ID/locations/us-central1/deployments/import-deployment --lock-id ${LOCK_ID} --format="get(signedUri)")
cd vpc_to_import
curl -s -X PUT --upload-file terraform.tfstate $SIGNED_STATE_UPLOAD_URL

Importer la configuration Terraform dans le bucket Cloud Storage

Maintenant que vous avez importé le fichier d'état Terraform, vous devez également importer la configuration Terraform que vous avez utilisée pour créer le réseau VPC. Infra Manager a besoin du fichier d'état Terraform pour que, lorsqu'un aperçu Infra Manager est exécuté, il ne détecte aucune modification apportée aux ressources.

Importez la configuration Terraform dans Cloud Storage à l'aide de la commande suivante:

gcloud storage cp main.tf gs://import-deployment-configuration

Déverrouiller le déploiement

Si vous utilisez ce tutoriel pour comprendre comment importer des ressources dans Infra Manager, assurez-vous que le fichier d'état et la configuration Terraform ne présentent aucune différence. S'il existe des différences entre le fichier d'état et la configuration Terraform, assurez-vous que le fichier d'état décrit les ressources que vous souhaitez déployer. Lorsque vous déverrouillez le déploiement, si des différences existent entre le fichier d'état et la configuration Terraform, Infra Manager crée ou supprime des ressources pour qu'elles correspondent au fichier d'état.

Vous devez déverrouiller le déploiement pour pouvoir gérer les ressources à l'aide d'Infra Manager. Dans ce tutoriel, le fichier d'état et la configuration Terraform décrivent la même configuration. Infra Manager ne crée ni ne supprime donc aucune ressource.

Libérez le verrouillage du déploiement en exécutant la commande suivante.

gcloud infra-manager deployments unlock projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
--project PROJECT_ID \
--location us-central1 \
--lock-id ${LOCK_ID}

Maintenant que le fichier d'état et la configuration Terraform sont ajoutés à votre déploiement Infra Manager, vous avez terminé d'importer les ressources déployées. Le VPC déployé est désormais géré par Infra Manager.

Prévisualiser les modifications apportées aux ressources

Exécutez un aperçu du déploiement pour vérifier que l'état Terraform et les ressources déployées sur Google Cloud sont synchronisés.

  1. Créez un aperçu à l'aide de la commande suivante:

    gcloud infra-manager previews create projects/PROJECT_ID/locations/us-central1/previews/import-deployment-preview \
    --gcs-source gs://import-deployment-configuration \
    --input-values project_id=PROJECT_ID \
    --deployment projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
    --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    
  2. Obtenez les détails de l'aperçu pour vous assurer qu'il a bien été effectué.

    gcloud infra-manager previews describe projects/PROJECT_ID/locations/us-central1/previews/import-deployment-preview
    
  3. Exportez l'aperçu pour examiner les modifications.

    SIGNED_BIN_PLAN_URL=$(gcloud infra-manager previews export projects/PROJECT_ID/locations/us-central1/previews/import-deployment-preview --format "get(result.binarySignedUri)")
    curl -X GET --output tfplan.out $SIGNED_BIN_PLAN_URL
    
  4. Assurez-vous que la configuration est présente localement et initialisée avec la commande suivante:

    terraform init
    
  5. Exécutez Terraform show pour examiner les modifications entre l'état de déploiement d'Infrastructure Manager et la configuration.

    terraform show tfplan.out
    

Si la ressource VPC sur Google Cloud et le fichier d'état sont synchronisés, terraform show affiche le résultat suivant, ce qui confirme que Infrastructure Manager ne voit aucune modification entre l'état de déploiement et la configuration. Un résultat semblable aux lignes suivantes s'affiche:

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.

Vous avez maintenant importé les ressources déployées afin qu'elles soient gérées par Infra Manager. Par exemple, vous pouvez désormais utiliser Infra Manager pour mettre à jour le déploiement.

Vous pouvez également mettre à jour le déploiement pour vérifier qu'il a bien été importé dans Infra Manager.

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Supprimer le projet

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

Supprimer des ressources individuelles

Supprimez le VPC et les métadonnées du déploiement:

gcloud infra-manager deployments delete projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment

Étape suivante