Automatiser la protection des nouvelles instances Compute Engine

Cette page explique en détail 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 console Google Cloud , de la 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 rôle tagUser, 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 Backup and DR Compute Engine (roles/backupdr.computeEngineOperator) à l'agent de service du backup vault 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. Assurez-vous que l'un des rôles suivants vous a été 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é qui inclut 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 aide à automatiser l'application d'un plan de sauvegarde à une instance Compute Engine à l'aide de tags. Commencez par créer un mappage des plans de sauvegarde vers les tags dans la console de gestion. Créez ensuite 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 balise de protection dynamique pouvant être utilisées avec vos instances Compute Engine :

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

  2. Cliquez sur Créer un tag de protection dynamique.

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

  4. Dans la liste 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 dynamiques

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 dans la console Google Cloud .

    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. Cette étape est 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 et 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é d'ajouter des valeurs de tag, 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 des tags à une instance Compute Engine. La protection basée sur les 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 aux instances Compute Engine en suivant ces instructions :

  1. Dans la console Google Cloud , 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 souhaités 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 console Google Cloud .

  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 les API, suivez la documentation du SDK pour effectuer les opérations suivantes :

Terraform

Utilisez le modèle Terraform suivant pour commencer à utiliser les tags de protection dynamique. Ce modèle part du principe que vous n'avez pas encore créé de clés de balise de protection dynamique dans la console Google Cloud et 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 le job de protection dynamique planifié s'exécute à 4h du matin ou à 16h, heure locale, pour qu'il prenne effet. Vous pouvez également exécuter un job de protection dynamique à la demande en suivant les étapes décrites dans Exécuter la protection automatique manuellement.

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 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 à l'aide de Google Cloud CLI.

Exécuter la protection automatique manuelle

Bien que le moteur de protection s'exécute tous les jours à 4h et 16h (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 qui commence par "https://bmc-" et se termine 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 du porteur :

    echo "Generating a new bearer token..."
    export BEARER_TOKEN=$(gcloud auth print-access-token)
    echo "Bearer token generated: BEARER_TOKEN=$BEARER_TOKEN"
    
  3. Obtenir 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 du porteur et obtenu un ID de session, vous pouvez déclencher des jobs de protection dynamique pendant une heure, jusqu'à l'expiration de l'ID de session.

  4. Déclencher un job de protection dynamique

    Un job de protection dynamique met à jour toutes les instances Compute Engine avec leurs tags actuels et attribue des forfaits de sauvegarde en fonction des tags. Le job déclenché 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 le gestionnaire de ressources

Vous pouvez utiliser des tags de protection dynamiques avec Resource Manager pour automatiser la protection de vos instances Compute Engine à un niveau organisationnel supérieur. 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 balises

Migrer la protection manuelle vers la protection dynamique

Si vous prévoyez de migrer vos ressources déjà protégées vers une protection dynamique à l'aide de tags, vous devez activer l'indicateur 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 de tags et de ressources assure une protection automatique basée sur 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 qui commence par "https://bmc-" et se termine 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 Activer la migration vers la protection basée sur les 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 les tags, procédez comme suit :

  1. Désactivez l'option Activer la migration vers la protection basée sur les tags.
  2. Confirmez la désactivation de la migration. Cela désactive la migration des instances Compute Engine protégées manuellement vers la protection basée sur les tags.

Événements et notifications

Une fois le moteur de protection dynamique exécuté, vous pouvez examiner 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 jobs de sauvegarde en cours d'exécution et la quantité de stockage utilisée. Pour obtenir les meilleurs résultats possible, tenez compte des points suivants :

  • Augmentez les périodes de sauvegarde. Une période de 6 à 10 heures permet généralement à tous les jobs 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 forfait de sauvegarde. Toutefois, le type de protection passera de la protection basée sur les tags à la 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 la protection basée sur les tags, vous pouvez supprimer le plan de sauvegarde de la protection transférée et déclencher le job de protection dynamique à la demande ou attendre sa prochaine exécution planifiée afin que la protection basée sur les 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, vous pouvez appliquer une liaison de tag à la nouvelle VM de la même manière qu'à la VM source.