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 les 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 Déployer 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. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Installez la Google Cloud CLI.

  3. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  4. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  5. Créez ou sélectionnez un projet Google Cloud .

    Rôles requis pour sélectionner ou créer un projet

    • Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
    • Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un projet Google Cloud  :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud .

  6. Vérifiez que la facturation est activée pour votre projet Google Cloud .

  7. Activez l'API Infrastructure Manager :

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    gcloud services enable config.googleapis.com
  8. Configurez l'authentification :

    1. Assurez-vous de disposer des rôles IAM "Créateur de compte de service" (roles/iam.serviceAccountCreator) et "Administrateur IAM du projet" (roles/resourcemanager.projectIamAdmin). Découvrez comment attribuer des rôles.
    2. Créez le compte de service :

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Remplacez SERVICE_ACCOUNT_NAME par le nom que vous souhaitez donner au compte de service.

    3. Attribuez le rôle IAM roles/config.agent au compte de service.

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

      Remplacez les éléments suivants :

      • SERVICE_ACCOUNT_NAME : nom du compte de service.
      • PROJECT_ID : ID du projet dans lequel vous avez créé le compte de service.
  9. Installez la Google Cloud CLI.

  10. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  11. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  12. Créez ou sélectionnez un projet Google Cloud .

    Rôles requis pour sélectionner ou créer un projet

    • Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
    • Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un projet Google Cloud  :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du projet Google Cloud que vous créez.

    • Sélectionnez le projet Google Cloud que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre projet Google Cloud .

  13. Vérifiez que la facturation est activée pour votre projet Google Cloud .

  14. Activez l'API Infrastructure Manager :

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin), qui contient l'autorisation serviceusage.services.enable. Découvrez comment attribuer des rôles.

    gcloud services enable config.googleapis.com
  15. Configurez l'authentification :

    1. Assurez-vous de disposer des rôles IAM "Créateur de compte de service" (roles/iam.serviceAccountCreator) et "Administrateur IAM du projet" (roles/resourcemanager.projectIamAdmin). Découvrez comment attribuer des rôles.
    2. Créez le compte de service :

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Remplacez SERVICE_ACCOUNT_NAME par le nom que vous souhaitez donner au compte de service.

    3. Attribuez le rôle IAM roles/config.agent au compte de service.

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

      Remplacez les éléments suivants :

      • SERVICE_ACCOUNT_NAME : nom du compte de service.
      • PROJECT_ID : ID du projet dans lequel vous avez créé le compte de service.
  16. 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 choisir n'importe quel emplacement où Infra Manager s'exécute. Pour obtenir la liste des emplacements valides, consultez 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 les autorisations spécifiques aux ressources décrites dans la configuration que vous déployez.

Accordez les autorisations nécessaires pour 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 en exécutant la commande suivante :

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

Lorsque le VPC est provisionné, vous voyez un résultat qui 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é, le message suivant s'affiche :

    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 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 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 qu'aucune modification des ressources ne soit détectée lors de l'exécution d'un aperçu Infra Manager.

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, s'il existe des différences entre le fichier d'état et la configuration Terraform, Infra Manager crée ou supprime des ressources pour correspondre 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. Par conséquent, Infra Manager ne crée ni ne supprime aucune ressource.

Déverrouillez le 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 ont été 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 confirmer 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_NAME \
    --gcs-source gs://import-deployment-configuration \
    --deployment projects/PROJECT_ID/locations/us-central1/deployments/import-deployment \
    --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    --location us-central1
    
  2. Obtenez des informations sur l'aperçu pour vous assurer qu'il s'est terminé correctement.

    gcloud infra-manager previews describe projects/PROJECT_ID/locations/us-central1/previews/IMPORT_DEPLOYMENT_PREVIEW_NAME
    
  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_NAME --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 différences 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 génère la sortie suivante, ce qui confirme qu'Infrastructure Manager ne détecte aucune modification entre l'état du 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

    Supprimer un projet Google Cloud  :

    gcloud projects delete PROJECT_ID

Supprimer des ressources individuelles

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

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

Étapes suivantes