Automatiser la protection des nouvelles instances Compute Engine

Cette page présente de manière détaillée comment automatiser les sauvegardes de vos 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 lui 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.

Conditions préalables pour automatiser les sauvegardes

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

Après avoir configuré le service Backup and DR et créé un modèle de plan de sauvegarde, vous êtes prêt à 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 des 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.

Gérer les tags de protection dynamique

Pour créer, mettre à jour et supprimer des balises de protection dynamique, vous devez disposer de l'un des rôles suivants:

  • 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 balises. Commencez par créer un mappage des plans de sauvegarde sur les tags dans la console de gestion. Vous créez ensuite des balises via Identity and Access Management (IAM) en utilisant les mêmes valeurs attribuées dans la console de gestion.

Créer des valeurs de balise de protection dynamique

Suivez ces instructions pour créer des valeurs de balise de protection dynamique à utiliser avec vos instances Compute Engine:

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

  2. Cliquez sur Créer une balise de protection dynamique.

  3. Saisissez une valeur de balise unique qui respecte ces 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 balise.

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

Créer des tags de protection dynamiques

Suivez ces instructions pour créer des balises 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 lesquels vous souhaitez créer une clé de balise.

  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 garantir une automatisation réussie. Veillez à ne pas commettre d'erreurs d'orthographe et à 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 balise.

Ajouter des tags de protection dynamique à une ressource

Maintenant que vous avez créé des valeurs de tag de protection dynamique et 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 balises 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.

Avant de commencer, activez les autorisations appropriées pour votre rôle afin de vous assurer que vous disposez de l'un des rôles suivants:

  • 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

Vous pouvez associer vos balises de protection dynamique à des instances Compute Engine en suivant les instructions ci-dessous:

  1. Dans Google Cloud Console, 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 :

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

  6. 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 les 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 balises de protection dynamique. Ce modèle suppose que vous n'avez pas encore créé de clés de balise de protection dynamique dans la console Google Cloud et qu'il les configurera pour vous. Le modèle crée une instance Compute Engine et l'associe à une balise 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 exécuter une tâche de protection dynamique à la demande en suivant la procédure décrite dans 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 l'backupdr-dynamicprotect pour l'instance.

  7. Cliquez sur Enregistrer.

gcloud

Pour utiliser Google Cloud CLI, consultez la documentation sur l'utilisation de Google Cloud CLI pour dissocier une balise d'une ressource.

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 à l'aide des 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

    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 balises actuelles et attribue des plans de sauvegarde en fonction de ces balises. L'exécution de 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 automatise la protection de vos instances Compute Engine à un niveau organisationnel supérieur. Utilisez Resource Manager pour ajouter des tags aux ressources au niveau du projet ou au-dessus afin de vous assurer que la protection est héritée pour toutes vos ressources. En savoir plus sur l'héritage des balises

Migrer la protection manuelle vers la protection dynamique

Si vous souhaitez migrer vos ressources déjà protégées vers une protection dynamique à l'aide de balises, 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 permet de protéger automatiquement les ressources en fonction du tag et de supprimer 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 permettre la migration des instances Compute Engine protégées manuellement vers une 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 les balises).
  2. Confirmez la boîte de dialogue "Enable Migration" (Activer la migration). Les instances Compute Engine protégées manuellement seront de nouveau protégées à l'aide de la balise définie 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 Enable migration to tag based protection (Activer la migration vers la protection basée sur les tags).
  2. Confirmez la boîte de dialogue "Désactiver 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 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 exécutées et la quantité d'espace de stockage utilisée. Pour obtenir de meilleurs résultats, tenez compte des points suivants:

  • Augmenter les périodes de sauvegarde Un intervalle de 6 à 10 heures peut aider à s'assurer que toutes les tâches sont exécutées jusqu'à leur fin.

  • Réfléchissez aux types d'appareils que vous possédez avant de configurer des balises. Pour de meilleurs résultats, assurez-vous que toutes vos instances Compute Engine taguées se trouvent sur des appareils de sauvegarde/restauration exécutés sur le type d'appareil Standard pour les VM Compute Engine ou les bases de données SAP HANA.

  • Une VM restaurée reprendra la même balise de protection que la VM source, ainsi que le même plan de sauvegarde. Toutefois, le type de protection passera de la protection basée sur les balises à la protection déclenchée par l'utilisateur. La ressource continuera d'être protégée à l'aide du plan de sauvegarde reporté. Pour rétablir le type de protection basé sur les tags, vous pouvez supprimer le plan de sauvegarde de protection reporté et déclencher le job de protection dynamique à la demande ou attendre son prochain exécution planifiée afin que l'application soit à nouveau affectée à la protection basée sur les tags.

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