Automatiser la protection des nouvelles instances Compute Engine

Cette page explique comment automatiser les sauvegardes des instances Compute Engine à l'aide de tags.

Configurer la sauvegarde pour les nouvelles instances Compute Engine

Une instance Compute Engine est une VM hébergée sur Google Cloud. Chaque instance stocke des données sur des disques persistants qui y sont associés. Vous pouvez créer une instance ou créer un groupe d'instances géré à l'aide de la Google Cloud console, de Google Cloud CLI ou de l'API Compute Engine.

Pour en savoir plus, consultez Compute Engine.

Prérequis pour automatiser les sauvegardes

Avant de commencer à automatiser les sauvegardes des instances Compute Engine, lisez les procédures suivantes pour vous préparer aux sauvegardes :

Après avoir configuré le service Backup and DR et créé un modèle de plan de sauvegarde, vous pouvez automatiser la protection de vos instances Compute Engine en appliquant le modèle de plan de sauvegarde à l'instance à l'aide de tags.

Autorisations

Pour créer, mettre à jour et supprimer des définitions de tags pour les ressources Compute Engine , vous devez disposer du rôle Tag Administrator. Pour en savoir plus sur le tagUser rôle, consultez la section Autorisations requises.

Pour utiliser le taggage dynamique afin de sauvegarder une instance Compute Engine, vous devez accorder le rôle IAM Opérateur Compute Engine de sauvegarde et de reprise après sinistre (roles/backupdr.computeEngineOperator) à l'agent de service du coffre de sauvegarde dans le projet Compute Engine.

Administrer les tags de protection dynamique

Pour créer, mettre à jour et supprimer des tags de protection dynamique, vous devez disposer des autorisations appropriées pour votre rôle afin de vous assurer que l'un des rôles suivants vous est attribué :

  • Administrateur des sauvegardes et des DR

  • Utilisateur de sauvegarde (y compris pour la reprise après sinistre)

  • Utilisateur de sauvegarde et de reprise après sinistre V2

  • Éditeur de projet

  • Propriétaire du projet

  • Un rôle personnalisé comprenant les autorisations suivantes :

Autorisations requises

  • backupdr.managementServers.listDynamicProtection
  • backupdr.managementServers.getDynamicProtection
  • backupdr.managementServers.createDynamicProtection
  • backupdr.managementServers.deleteDynamicProtection
  • compute.instances.listEffectiveTags

En savoir plus sur les rôles du service Backup and DR.

Appliquer automatiquement un modèle de plan de sauvegarde à l'aide de tags

Cette section vous explique comment automatiser l'application d'un plan de sauvegarde à une instance Compute Engine à l'aide de tags. Vous devez d'abord créer un mappage des plans de sauvegarde aux tags dans la console de gestion. Ensuite, vous créez des tags via Identity and Access Management (IAM) en utilisant les mêmes valeurs que celles attribuées dans la console de gestion.

Créer des valeurs de tag de protection dynamique

Suivez ces instructions pour créer des valeurs de tag de protection dynamique qui peuvent être utilisées avec vos instances Compute Engine :

  1. Dans la console de gestion Backup and DR, cliquez sur le Backup Plans menu déroulant, puis sélectionnez Dynamic Protection Tags.

  2. Cliquez sur Create Dynamic Protection Tag (Créer un tag de protection dynamique).

  3. Saisissez une valeur de tag unique qui respecte ces exigences de dénomination.

  4. Dans la liste Application type (Type d'application), sélectionnez Compute Engine.

  5. Choisissez un modèle et un profil correspondants à associer à cette valeur de tag.

  6. Cliquez sur Enregistrer. Une valeur de tag de protection dynamique est créée.

Créer des tags de protection dynamique

Suivez ces instructions pour créer des tags de protection dynamique à associer à vos instances Compute Engine afin d'automatiser la protection :

  1. Pour créer, mettre à jour et supprimer des définitions de tag, vous devez disposer du rôle Administrateur de tags ou d'un autre rôle comprenant des autorisations spécifiques.

  2. Ouvrez la page Tags de la Google Cloud console.

    Ouvrir la page Tags

  3. Dans le sélecteur de champ d'application en haut de la page, sélectionnez l' organisation ou le projet sous lequel vous souhaitez créer une clé de tag.

  4. Cliquez sur Créer.

  5. Dans la zone Clé de tag, saisissez backupdr-dynamicprotect comme clé de tag. Il s'agit d'une étape obligatoire pour que l'automatisation fonctionne. Faites attention aux fautes d'orthographe et veillez à inclure le trait d'union.

  6. Facultatif : Dans la zone Description de la clé de tag, saisissez une description de votre clé de tag.

  7. Cliquez sur Ajouter une valeur , puis saisissez chaque valeur de tag que vous venez de créer.

  1. Dans la zone Valeur de tag, saisissez le nom à afficher de votre valeur de tag. Ce nom sera intégré au nom de votre tag dans l'espace de noms.

  2. Dans la zone Description de la valeur de tag, saisissez une description du modèle et du profil associés à cette valeur de tag.

  3. Lorsque vous avez terminé, cliquez sur Créer une clé de tag.

Ajouter des tags de protection dynamique à une ressource

Maintenant que vous avez créé des valeurs de tag de protection dynamique et que vous les avez associées à un tag de protection dynamique, l'étape suivante consiste à attribuer un tag à une instance Compute Engine. La protection basée sur des tags ne fonctionne pas si vos instances sont protégées dans un groupe logique. Supprimez le groupe logique et essayez d'utiliser la protection dynamique.

Vous pouvez associer vos tags de protection dynamique à des instances Compute Engine en suivant ces instructions :

  1. Dans la Google Cloud console, accédez à la page Compute Engine > Instances de VM.

    Accéder à la page Instances de VM

  2. Dans la colonne Nom, cliquez sur le nom de la VM à laquelle vous souhaitez ajouter des tags.

  3. Sur la page des détails de l'instance de VM, procédez comme suit :

    1. Cliquez sur Modifier.
    2. Dans la section Basique, cliquez sur Gérer les tags et ajoutez les tags que vous souhaitez pour l'instance.
  4. Sélectionnez la clé backupdr-dynamicprotect: et une valeur de tag correspondante qui correspond à un modèle et à un profil que vous avez définis dans la Google Cloud console.

  5. Cliquez sur Enregistrer.

Ajouter des tags à une ressource lors de la création de la ressource

Dans certains scénarios, vous pouvez ajouter des tags aux ressources lors de leur création, plutôt qu'après leur création.

Console

  1. Dans la console Google Cloud , accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Sélectionnez le projet et cliquez sur Continuer.

  3. Cliquez sur Créer une instance.

  4. Cliquez sur Gérer les tags et les libellés.

  5. Cliquez sur Ajouter des tags.

  6. Suivez les instructions du panneau latéral pour sélectionner le backupdr-dynamicprotect à ajouter à l'instance.

  7. Cliquez sur Enregistrer.

  8. Suivez les autres étapes de la page Créer et démarrer une instance de VM pour terminer la création de l'instance.

gcloud

Pour utiliser Google Cloud CLI ou des API, suivez la documentation du SDK pour effectuer les opérations suivantes :

Terraform

Utilisez le modèle Terraform suivant pour commencer à utiliser des tags de protection dynamique. Ce modèle suppose que vous n'avez pas encore créé de clés de tag de protection dynamique dans la Google Cloud console et qu'il les configurera pour vous. Le modèle crée une instance Compute Engine et la lie à un tag de protection dynamique. Vous pouvez attendre que la tâche de protection dynamique planifiée s'exécute à 4h00 ou 16h00, heure locale, pour qu'elle prenne effet, ou vous pouvez exécuter une tâche de protection dynamique à la demande en suivant les étapes de la section Exécuter la protection automatique manuelle.

variable "project_id" {
  description = "The ID of the existing Google Cloud project"
  type        = string
}

variable "region" {
  description = "The Google Cloud region where demo-instance should be created"
  type        = string
}

variable "zone" {
  description = "The Google Cloud zone where demo-instance should be created"
  type        = string
}

provider "google" {
  project = var.project_id
  region = var.region
  zone  = var.zone
}

data "google_project" "project" {
  project_id = var.project_id
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_key
resource "google_tags_tag_key" "key" {
  parent = "projects/${var.project_id}"
  short_name = "backupdr-dynamicprotect"
  description = "Tag key for Dynamic Protection."
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_value
resource "google_tags_tag_value" "value" {
  parent = "tagKeys/${google_tags_tag_key.key.name}"
  short_name = "backupdr-gold" # This value should be present in the "Management Console UI" > "Backup Plans" > "Dynamic Protection Tags"
  description = "Tag value for gold plan."
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_instance
# Ensure not to define tag in "resource_manager_tags" block while creating VM instance. It'll destroy the VM
# when tag value is changed/removed later. Instead define a separate tag binding using "google_tags_tag_binding"
# or "google_tags_location_tag_binding" resource. It'll modify just tag binding and VM instance won't be affected.

resource "google_compute_instance" "vm_instance" {
  name         = "demo-instance"
  machine_type = "e2-micro"
  zone         = var.zone

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"

    access_config {
      // Ephemeral public IP
    }
  }
}

# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_tags_location_tag_binding
resource "google_tags_location_tag_binding" "binding" {
    parent    = "//compute.googleapis.com/projects/${data.google_project.project.number}/zones/${var.zone}/instances/${google_compute_instance.vm_instance.instance_id}"
    tag_value = "tagValues/${google_tags_tag_value.value.name}"
    location  = var.zone
}

# Reference for Tag bindings at project/org level: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_binding

Dissocier un tag d'une ressource

Vous pouvez dissocier un tag d'une ressource en supprimant la ressource de liaison de tag.

Pour obtenir des instructions sur la dissociation de tags, consultez la section Dissocier un tag d'une ressource dans la documentation de Resource Manager.

Console

  1. Dans la console Google Cloud , accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Sélectionnez le projet et cliquez sur Continuer.

  3. Dans la colonne Nom, cliquez sur le nom de la VM à laquelle vous souhaitez ajouter des tags.

  4. Sur la page des détails de l'instance de VM, procédez comme suit :

  5. Cliquez sur Modifier.

  6. Dans la section Basique, cliquez sur Gérer les tags et supprimez le backupdr-dynamicprotect pour l'instance.

  7. Cliquez sur Enregistrer.

gcloud

Pour utiliser Google Cloud CLI, suivez la documentation pour dissocier un tag d'une ressource.

Exécuter la protection automatique manuelle

Bien que le moteur de protection s'exécute tous les jours à 4h00 et 16h00, heure locale, vous pouvez également exécuter le moteur de protection dynamique à la demande en suivant les étapes de commande suivantes :

  1. Définissez le point de terminaison de la console de gestion en saisissant une valeur commençant par "https://bmc-" et se terminant par ".com". Par exemple, https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com

    export MC_ENDPOINT="MC_ENDPOINT_edited_value"
    
  2. Générez un jeton porteur :

    echo "Generating a new bearer token..."
    export BEARER_TOKEN=$(gcloud auth print-access-token)
    echo "Bearer token generated: BEARER_TOKEN=$BEARER_TOKEN"
    
  3. Obtenez un nouvel ID de session :

    echo "Generating a new session id..."
    export SESSION_RESPONSE=$(curl -XPOST -H "Authorization: Bearer $BEARER_TOKEN" -d {} "$MC_ENDPOINT/actifio/session" 2>&-)
    export SESSION_ID=$(echo $SESSION_RESPONSE | jq -r '.session_id')
    
    if [ -z ${SESSION_ID} ]
      then echo "Issue with generating a new session id. Response: $SESSION_RESPONSE";
      return 1;
    fi
    
    echo "Session id generated: SESSION_ID=$SESSION_ID"
    

    Une fois que vous avez défini un point de terminaison, généré un jeton porteur et obtenu un ID de session , vous pouvez déclencher des tâches de protection dynamique pendant une heure jusqu'à l'expiration de l'ID de session.

  4. Déclencher une tâche de protection dynamique

    Une tâche de protection dynamique met à jour toutes les instances Compute Engine avec leurs tags actuels et attribue des plans de sauvegarde en fonction des tags. La tâche déclenchée peut prendre quelques minutes en fonction du nombre de modifications en attente pour vos charges de travail.

    echo "Triggering dynamic protection job.."
    
    curl -H "Authorization: Bearer $BEARER_TOKEN" -H "backupdr-management-session: Actifio $SESSION_ID" -H "Content-Type: application/json" -XPOST -d '{}' "$MC_ENDPOINT/actifio/dynamicprotection/job/gceinstance"
    
    echo "Dynamic protection job triggered."
    

Utiliser la protection dynamique avec Resource Manager

Vous pouvez utiliser des tags de protection dynamique avec Resource Manager, ce qui vous permet d'automatiser la protection de vos instances Compute Engine à un niveau organisationnel plus élevé. Utilisez Resource Manager pour taguer les ressources au niveau du projet ou à un niveau supérieur afin de vous assurer que la protection est héritée par toutes vos ressources. En savoir plus sur l'héritage des tags.

Migrer la protection manuelle vers la protection dynamique

Si vous souhaitez migrer vos ressources déjà protégées vers la protection dynamique à l'aide de tags, vous devez activer le flag de migration dans votre projet. Une fois la migration activée, toutes les instances protégées manuellement peuvent désormais utiliser la protection dynamique. L'ajout automatique de tags et de ressources protège en fonction de le tag et supprime la protection manuelle existante.

Bash

Exécutez les commandes suivantes.

  1. Définissez le point de terminaison de la console de gestion en saisissant une valeur commençant par "https://bmc-" et se terminant par ".com". Par exemple, https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com

     #!/bin/bash
    
     export MC_ENDPOINT="MC_ENDPOINT_edited_value"
    
    
  2. Activez la migration.

    curl -H "Authorization: Bearer $BEARER_TOKEN" -H "backupdr-management-session: Actifio $SESSION_ID" -H "Content-Type: application/json" -XPATCH -d '{ "enableMigrationToTagBasedProtection":"true"}' "$MC_ENDPOINT/actifio/dynamicprotection/jobconfig"
    

Console de gestion

Pour activer la migration des instances Compute Engine protégées manuellement vers la protection basée sur des tags, procédez comme suit :

  1. Activez l'option Enable migration to tag based protection (Activer la migration vers la protection basée sur des tags).
  2. Confirmez la boîte de dialogue "Enable Migration" (Activer la migration). Les instances Compute Engine protégées manuellement seront reprotégées à l'aide du tag défini sur la VM.

Pour désactiver la migration des instances Compute Engine protégées manuellement vers la protection basée sur des tags, procédez comme suit :

  1. Désactivez l'option Enable migration to tag based protection (Activer la migration vers la protection basée sur des tags).
  2. Confirmez la boîte de dialogue "Disable Migration" (Désactiver la migration). Cela désactive la migration des instances Compute Engine protégées manuellement vers la protection basée sur des tags.

Événements et notifications

Une fois le moteur de protection dynamique exécuté, vous pouvez consulter la progression à partir des événements de surveillance. La console de gestion reçoit des notifications récapitulatives après avoir effectué des actions de protection dynamique. Des notifications d'erreur sont envoyées si une action de l'utilisateur est requise.

Bonnes pratiques

La protection dynamique peut augmenter le nombre de tâches de sauvegarde en cours d'exécution et la quantité de stockage utilisée. Pour obtenir les meilleurs résultats, tenez compte des points suivants :

  • Augmentez les fenêtres de sauvegarde. Une fenêtre de 6 à 10 heures peut généralement permettre à toutes les tâches de s'exécuter jusqu'à la fin.

  • Une VM restaurée conservera le même tag de protection que la VM source , ainsi que le même plan de sauvegarde. Toutefois, le type de protection passera d'une protection basée sur des tags à une protection initiée par l'utilisateur. La ressource continuera d'être protégée à l'aide du plan de sauvegarde transféré. Pour rétablir le type de protection basé sur des tags, vous pouvez supprimer le plan de sauvegarde de protection transféré et déclencher une tâche de protection dynamique à la demande ou attendre sa prochaine exécution planifiée afin que la protection basée sur des tags soit à nouveau attribuée à l'application.

  • Une VM montée sur un hôte existant ou nouvellement créé ne conservera pas le même tag de protection que la VM source. Elle ne sera donc pas protégée automatiquement après l'opération de montage. Si une VM nouvellement montée doit être protégée, alors vous pouvez appliquer une liaison de tag à la nouvelle VM, semblable à celle de la VM source.