arrow_back

Éliminer les disques persistants inutilisés et orphelins

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Éliminer les disques persistants inutilisés et orphelins

Lab 1 heure universal_currency_alt 5 crédits show_chart Intermédiaire
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP648

Google Cloud – Ateliers adaptés au rythme de chacun

Présentation

Dans cet atelier, vous allez identifier et éliminer les ressources cloud inutilisées à l'aide de Cloud Functions et de Cloud Scheduler. Vous allez planifier la fonction Cloud pour identifier et éliminer les disques persistants non installés et orphelins.

Objectifs de l'atelier

  • Créer deux disques persistants
  • Créer une VM qui utilise l'un de ces disques
  • Dissocier le disque de la VM
  • Examiner le code de la fonction Cloud
  • Déployer la fonction Cloud
  • Tester la fonction Cloud à l'aide des jobs Cloud Scheduler

Architecture

Le diagramme suivant présente l'architecture utilisée dans la première section de cet atelier, où vous allez identifier et éliminer les disques persistants inutilisés et orphelins grâce à la planification d'une fonction Cloud.

Schéma de l'architecture

Prérequis

Dans cette section, vous allez configurer l'infrastructure et les identités requises pour réaliser l'atelier.

Avant de cliquer sur le bouton "Démarrer l'atelier"

Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.

Pour réaliser cet atelier :

  • vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
Remarque : Ouvrez une fenêtre de navigateur en mode incognito/navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le temporaire étudiant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
  • vous disposez d'un temps limité ; une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier afin d'éviter que des frais supplémentaires ne vous soient facturés.

Démarrer l'atelier et se connecter à la console Google Cloud

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :

    • Le bouton Ouvrir la console Google
    • Le temps restant
    • Les identifiants temporaires que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier
  2. Cliquez sur Ouvrir la console Google. L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue Se connecter. Cliquez sur Suivant.

  4. Copiez le mot de passe inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue de bienvenue. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis dans le panneau de gauche. Ne saisissez pas vos identifiants Google Cloud Skills Boost. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
  5. Accédez aux pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas aux essais offerts.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Vous pouvez afficher le menu qui contient la liste des produits et services Google Cloud en cliquant sur le menu de navigation en haut à gauche. Icône du menu de navigation

Activer Cloud Shell

Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.

  1. Cliquez sur Activer Cloud Shell Icône Activer Cloud Shell en haut de la console Google Cloud.

Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Le résultat contient une ligne qui déclare YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  1. (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
  1. Cliquez sur Autoriser.

  2. Vous devez à présent obtenir le résultat suivant :

Résultat :

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project = <ID_Projet>

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.

Tâche 1 : Activer les API et cloner le dépôt

  1. Dans Cloud Shell, activez l'API Cloud Scheduler :

    gcloud services enable cloudscheduler.googleapis.com
  2. Clonez le dépôt :

    gsutil cp -r gs://spls/gsp648 . && cd gsp648
  3. Définissez des variables d'environnement et utilisez le dossier de dépôt comme répertoire de travail $WORKDIR. C'est d'ici que vous exécuterez toutes les commandes de cet atelier :

    export PROJECT_ID=$(gcloud config list --format 'value(core.project)' 2>/dev/null) WORKDIR=$(pwd)
  4. Définissez la région du projet pour cet atelier :

    gcloud config set compute/region {{{project_0.default_region | "REGION"}}}
  5. Créez une variable pour la région :

    export REGION={{{project_0.default_region | Region}}}
  6. Créez une variable pour la zone :

    export ZONE={{{project_0.default_zone | Zone}}}

Pour en savoir plus, consultez la documentation sur les régions et les zones.

Remarque : Lorsque vous exécutez gcloud sur votre propre machine, les paramètres de configuration sont conservés d'une session à l'autre. En revanche, dans Cloud Shell, vous devez définir ces paramètres à chaque nouvelle session ou reconnexion.

Tâche 2 : Créer des disques persistants

  1. Dans Cloud Shell, accédez au répertoire des disques persistants non installés :

    cd $WORKDIR/unattached-pd
  2. Exportez les noms des disques en tant que variables :

    export ORPHANED_DISK=orphaned-disk export UNUSED_DISK=unused-disk
  3. Créez deux disques :

    gcloud compute disks create $ORPHANED_DISK --project=$PROJECT_ID --type=pd-standard --size=500GB --zone=$ZONE gcloud compute disks create $UNUSED_DISK --project=$PROJECT_ID --type=pd-standard --size=500GB --zone=$ZONE

    Cet atelier utilise la région , mais vous pouvez en choisir une autre et y faire référence de manière systématique dans le reste de l'atelier.

  4. Vérifiez que les deux disques ont bien été créés :

    gcloud compute disks list

    Le résultat doit ressembler à ce qui suit :

    NAME LOCATION LOCATION_SCOPE SIZE_GB TYPE STATUS orphaned-disk {{{project_0.default_zone | Zone}}} zone 500 pd-standard READY unused-disk {{{project_0.default_zone | Zone}}} zone 500 pd-standard READY

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à créer un disque persistant, vous recevez une note d'évaluation.

Créer un disque persistant

Tâche 3 : Créer une VM et inspecter les disques

  1. Dans Cloud Shell, créez une instance :

    gcloud compute instances create disk-instance \ --zone=$ZONE \ --machine-type=n1-standard-1 \ --disk=name=$ORPHANED_DISK,device-name=$ORPHANED_DISK,mode=rw,boot=no
  2. Inspectez le disque qui a été installé sur la VM :

    gcloud compute disks describe $ORPHANED_DISK --zone=$ZONE --format=json | jq

    Le résultat ressemble à ce qui suit :

    { "creationTimestamp": "2019-06-12T12:21:25.546-07:00", "id": "7617542552306904666", "kind": "compute#disk", "labelFingerprint": "42WmSpB8rSM=", "lastAttachTimestamp": "2019-06-12T12:24:53.989-07:00", "name": "orphaned-disk", "physicalBlockSizeBytes": "4096", "selfLink": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}/disks/orphaned-disk", "sizeGb": "500", "status": "READY", "type": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}/diskTypes/pd-standard", "users": [ "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}/instances/disk-instance" ], "zone": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}" }

    Dans l'exemple de code précédent, les éléments suivants sont importants :

    • users identifie la VM sur laquelle le disque est installé.
    • lastAttachTimestamp indique la dernière fois que le disque a été installé sur une VM.

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à déployer une instance de VM avec disque persistant, vous recevez une note d'évaluation.

Créer une instance de VM avec disque persistant
  1. Dissociez le disque orphelin de la VM :

    gcloud compute instances detach-disk disk-instance --device-name=$ORPHANED_DISK --zone=$ZONE
  2. Inspectez le disque orphelin :

    gcloud compute disks describe $ORPHANED_DISK --zone=$ZONE --format=json | jq

    Le résultat ressemble à ce qui suit :

    { "creationTimestamp": "2019-06-12T12:21:25.546-07:00", "id": "7617542552306904666", "kind": "compute#disk", "labelFingerprint": "42WmSpB8rSM=", "lastAttachTimestamp": "2019-06-12T12:24:53.989-07:00", "lastDetachTimestamp": "2019-06-12T12:34:56.040-07:00", "name": "orphaned-disk", "physicalBlockSizeBytes": "4096", "selfLink": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}/disks/orphaned-disk", "sizeGb": "500", "status": "READY", "type": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}/diskTypes/pd-standard", "zone": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}" }

    Dans l'exemple de code précédent, les éléments suivants sont importants :

    • Le disque n'a pas de users répertoriés, ce qui indique qu'il n'est actuellement pas utilisé.
    • L'entrée lastDetachTimestamp s'affiche, précisant quand le disque a été dissocié d'une VM, c'est-à-dire quand il a été utilisé pour la dernière fois.
    • Le champ lastAttachTimestamp est toujours présent.

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à dissocier le disque orphelin de la VM, vous recevez une note d'évaluation.

Dissocier le disque orphelin de la VM

Tâche 4 : Examiner le code de la fonction Cloud

  1. Dans Cloud Shell, affichez la section du code qui récupère tous les disques persistants du projet :

    cat $WORKDIR/unattached-pd/main.py | grep "(request)" -A 12

    Le résultat est le suivant :

    def delete_unattached_pds(request): # get list of disks and iterate through it: disksRequest = compute.disks().aggregatedList(project=project) while disksRequest is not None: diskResponse = disksRequest.execute() for name, disks_scoped_list in diskResponse['items'].items(): if disks_scoped_list.get('warning') is None: # got disks for disk in disks_scoped_list['disks']: # iterate through disks diskName = disk['name'] diskZone = str((disk['zone'])).rsplit('/',1)[1] print (diskName) print (diskZone)

    La fonction utilise la méthode aggregatedList pour afficher la liste de tous les disques persistants du projet Google Cloud dans lequel elle s'exécute et effectue une itération sur chacun des disques.

  2. Affichez la section du code qui vérifie que le champ lastAttachTimestamp existe et qui supprime le disque si ce n'est pas le cas :

    cat $WORKDIR/unattached-pd/main.py | grep "handle never" -A 11

    Le résultat est le suivant :

    # handle never attached disk - delete it # lastAttachedTimestamp is not present try: if disk["lastAttachTimestamp"] is None: print ("none!") except KeyError: print ("disk " + diskName + " was never attached - deleting") deleteRequest = compute.disks().delete(project=project, zone=diskZone, disk=diskName) deleteResponse = deleteRequest.execute() waitForZoneOperation(deleteResponse, project, diskZone) print ("disk " + diskName + " was deleted") continue

    Cette section supprime le disque si lastAttachTimestamp n'existe pas, ce qui signifie que le disque n'a jamais été utilisé.

  3. Affichez la section du code qui calcule l'âge du disque s'il est orphelin, puis crée un instantané et le supprime :

    cat $WORKDIR/unattached-pd/main.py | grep "handle detached" -A 32

    Le résultat est le suivant :

    # handle detached disk - snapshot and delete # lastAttachTimestamp is present AND users is not present try: if disk['users'] is None and disk['lastDetachTimestamp'] is not None: print ("users is none") except KeyError: print ("disk " + diskName + " has no users and has been detached") detachTimestamp = dateutil.parser.parse(disk['lastDetachTimestamp']) detachedFor = pytz.utc.localize(datetime.utcnow()) - detachTimestamp print ("disk has been detached for " + str(detachedFor)) # update this for your preferred age if detachedFor.days > -1: # take a snapshot snapShotName = diskName + str(int(time.time())) print ("taking snapshot: " + snapShotName) snapshotBody = { "name": snapShotName } snapshotRequest = compute.disks().createSnapshot(project=project, zone=diskZone, disk=diskName, body=snapshotBody) snapshotResponse = snapshotRequest.execute() waitForZoneOperation(snapshotResponse, project, diskZone) print ("snapshot completed") # delete the disk print ("deleting disk " + diskName) deleteRequest = compute.disks().delete(project=project, zone=diskZone, disk=diskName) deleteResponse = deleteRequest.execute() waitForZoneOperation(deleteResponse, project, diskZone) print ("disk " + diskName + " was deleted") continue

    Cette section de code est utilisée lorsque des utilisateurs sont listés pour le disque et que le champ lastDetachTimestamp existe, ce qui signifie que le disque n'est actuellement pas utilisé, mais qu'il l'a été par le passé. Dans ce cas, la fonction Cloud crée un instantané du disque pour conserver les données, puis supprime le disque.

  4. Dans Cloud Shell, cliquez sur Ouvrir l'éditeur pour pouvoir modifier le fichier main.py dans l'éditeur Cloud Shell.

Remarque : Si vous y êtes invité, cliquez sur Ouvrir dans une nouvelle fenêtre.
  1. Accédez à gsp648/unattached-pd.

  2. Ouvrez le fichier main.py.

  3. Modifiez la ligne 15 du fichier et remplacez automating-cost-optimization par l'ID de votre projet (le résultat doit ressembler à ceci) :

    project = 'qwiklabs-gcp-b5dbc291a25a68db'
  4. Enregistrez le fichier en cliquant sur Fichier > Enregistrer.

Tâche 5 : Déployer la fonction Cloud

  1. Dans Cloud Shell, déployez la fonction Cloud (cliquez sur Ouvrir le terminal, si nécessaire) :

    gcloud functions deploy delete_unattached_pds --trigger-http --runtime=python39 --region {{{project_0.default_region | Region}}} Remarque : Saisissez y lorsque ce message s'affiche : Allow unauthenticated invocations of new function [delete_unattached_pds]? (y/N) ? (Autoriser les appels non authentifiés de la nouvelle fonction [delete_unattached_pds] ? [O/N] ?) Remarque : Le déploiement d'une fonction Cloud peut prendre deux à cinq minutes selon la région.
  2. Enregistrez l'URL du déclencheur de la fonction Cloud en tant que variable d'environnement :

    export FUNCTION_URL=$(gcloud functions describe delete_unattached_pds --format=json --region {{{project_0.default_region | Region}}} | jq -r '.httpsTrigger.url')

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à déployer une fonction Cloud, vous recevez une note d'évaluation.

Déployer la fonction Cloud

Tâche 6 : Planifier et tester la fonction Cloud

  1. Dans Cloud Shell, créez une application App Engine pour utiliser Cloud Scheduler :
gcloud app create --region={{{project_0.startup_script.app_region | REGION}}}
  1. Dans Cloud Shell, créez une tâche Cloud Scheduler permettant d'exécuter la fonction Cloud à 2 h toutes les nuits :

    gcloud scheduler jobs create http unattached-pd-job \ --schedule="* 2 * * *" \ --uri=$FUNCTION_URL \ --location=$REGION

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à créer une tâche Cloud Scheduler pour exécuter une fonction Cloud, vous recevez une note d'évaluation.

Créer une tâche Cloud Scheduler pour exécuter la fonction Cloud
  1. Testez le job en le déclenchant manuellement :

    gcloud scheduler jobs run unattached-pd-job \ --location=$REGION
  2. Vérifiez que l'instantané du disque orphelin a bien été créé :

    gcloud compute snapshots list

    Le résultat ressemble à ce qui suit :

    NAME DISK_SIZE_GB SRC_DISK STATUS orphaned-disk1560455894 500 {{{project_0.default_zone | Zone}}}/disks/orphaned-disk READY
  3. Vérifiez que le disque inutilisé et le disque orphelin ont bien été supprimés :

    gcloud compute disks list

    Le résultat ressemble à ce qui suit :

    NAME LOCATION LOCATION_SCOPE SIZE_GB TYPE STATUS disk-instance {{{project_0.default_zone | Zone}}} zone 10 pd-standard READY

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à tester le job en le déclenchant manuellement, vous recevez une note d'évaluation.

Tester le job en le déclenchant manuellement

Félicitations !

Dans cet atelier, vous avez effectué les tâches suivantes :

  • Vous avez créé deux disques persistants.
  • Vous avez créé une VM qui utilise l'un de ces disques.
  • Vous avez dissocié le disque de la VM.
  • Vous avez examiné le code de la fonction Cloud.
  • Vous avez déployé la fonction Cloud.
  • Vous avez testé la fonction Cloud à l'aide de jobs Cloud Scheduler.

Terminer votre quête

Cet atelier d'auto-formation fait partie de la quête Optimizing your Google Cloud Costs. Une quête est une série d'ateliers associés qui constituent un parcours de formation. Si vous terminez cette quête, vous obtenez un badge attestant de votre réussite. Vous pouvez rendre publics les badges que vous recevez et ajouter leur lien dans votre CV en ligne ou sur vos comptes de réseaux sociaux. Inscrivez-vous à cette quête ou à une autre quête contenant cet atelier pour obtenir immédiatement les crédits associés. Découvrez toutes les quêtes disponibles dans le catalogue Google Cloud Skills Boost.

Atelier suivant

Continuez sur votre lancée en suivant l'atelier Niveaux de service – Optimisation des dépenses associées au réseau ou consultez ces suggestions :

Formations et certifications Google Cloud

Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.

Dernière modification du manuel : 20 octobre 2023

Dernier test de l'atelier : 20 octobre 2023

Copyright 2024 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.