SCBL002
Présentation
Dans cet atelier, vous allez automatiser la création d'instances et de bases de données Spanner à l'aide de Google Cloud SDK, de l'interface de ligne de commande (CLI) et de Terraform.
Objectifs
Dans cet atelier, vous allez apprendre à :
- créer des instances et des bases de données à l'aide de la gcloud CLI ;
- automatiser l'infrastructure Spanner à l'aide de Terraform.
Préparation
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 compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
- vous disposez d'un temps limité ; n'oubliez pas qu'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.
Activer Google Cloud Shell
Google Cloud Shell est une machine virtuelle qui contient des outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.
Google Cloud Shell offre un accès en ligne de commande à vos ressources GCP.
-
Dans la console GCP, dans la barre d'outils située en haut à droite, cliquez sur le bouton Ouvrir Cloud Shell.

-
Cliquez sur Continue (Continuez):

Il faut quelques instants pour mettre en service et se connecter à l'environnement. Lorsque vous êtes connecté, vous êtes déjà authentifié et le projet est défini sur votre PROJECT_ID. Par exemple:

gcloud est l'outil de ligne de commande associé à Google Cloud Platform. Pré-installé sur Cloud Shell, il est également compatible avec la saisie semi-automatique via la touche de tabulation.
Vous pouvez répertorier les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
Résultat :
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Pour répertorier les ID de projet, exécutez la commande suivante :
gcloud config list project
Résultat :
[core]
project = <ID_Projet>
Exemple de résultat :
[core]
project = qwiklabs-gcp-44776a13dea667a6
Tâche 1 : Créer des instances et des bases de données à l'aide de la gcloud CLI
-
Dans la barre de titre de la console Google Cloud, cliquez sur Activer Cloud Shell (
). Si vous y êtes invité, cliquez sur Continuer.
-
Exécutez la commande suivante pour définir l'ID de votre projet :
gcloud config set project {{{project_0.project_id|placeholder_project_id}}}
- Depuis l'invite de commande Cloud Shell, exécutez la commande suivante pour créer une instance Spanner nommée test-spanner-instance.
Notez les paramètres de configuration et de capacité de Spanner. Si vous y êtes invité, autorisez la commande.
gcloud spanner instances create test-spanner-instance --config=regional-{{{project_0.default_region|place_holder_text}}} --description="test-spanner-instance" --processing-units=100
- La commande ne devrait pas prendre beaucoup de temps. Dans la console, accédez au service Spanner et vérifiez que l'instance a bien été créée.
Pour afficher l'instance, vous pouvez également exécuter la commande ci-dessous :
gcloud spanner instances list
- Avant de créer la base de données "Pets", vous devez disposer d'un fichier contenant le code LDD. Saisissez la commande suivante pour créer le fichier et l'ouvrir dans l'éditeur de code nano.
nano pets-db-schema.sql
- Collez le code suivant dans nano. Appuyez sur
Ctrl+X
, puis sur Y
et sur la touche ENTRÉE pour enregistrer le fichier.
CREATE TABLE Owners (
OwnerID STRING(36) NOT NULL,
OwnerName STRING(MAX) NOT NULL
) PRIMARY KEY (OwnerID);
CREATE TABLE Pets (
PetID STRING(36) NOT NULL,
OwnerID STRING(36) NOT NULL,
PetType STRING(MAX) NOT NULL,
PetName STRING(MAX) NOT NULL,
Breed STRING(MAX) NOT NULL,
) PRIMARY KEY (PetID);
- Maintenant que vous avez le fichier de schéma, exécutez la commande suivante pour créer la base de données.
gcloud spanner databases create pets-db --instance=test-spanner-instance --database-dialect=GOOGLE_STANDARD_SQL --ddl-file=./pets-db-schema.sql
- Vous allez maintenant insérer un propriétaire et tous ses chiens. Les clés primaires des tables "Owners" et "Pets" utilisent des UUID. Saisissez la commande suivante afin de créer l'UUID du propriétaire et le stocker dans une variable.
owner_uuid=$(cat /proc/sys/kernel/random/uuid)
echo $owner_uuid
- Insérez le propriétaire "Doug".
Remarque : Le paramètre --data
vous permet de transmettre les champs sous forme de paires nom/valeur.
gcloud spanner rows insert --table=Owners --database=pets-db --instance=test-spanner-instance --data=OwnerID=$owner_uuid,OwnerName=Doug
- Insérez tous les chiens de Doug à l'aide des commandes suivantes.
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Rusty',PetType='Dog',Breed='Poodle'
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Duchess',PetType='Dog',Breed='Terrier'
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Gretyl',PetType='Dog',Breed='Shepherd'
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Gigi',PetType='Dog',Breed='Retriever'
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Noir',PetType='Dog',Breed='Schnoodle'
gcloud spanner rows insert --table=Pets --database=pets-db --instance=test-spanner-instance --data=PetID=$(cat /proc/sys/kernel/random/uuid),OwnerID=$owner_uuid,PetName='Bree',PetType='Dog',Breed='Mutt'
- Vérifiez si l'opération a fonctionné. Exécutez la requête suivante.
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='SELECT o.OwnerName, p.PetName, p.PetType, p.Breed FROM Owners as o JOIN Pets AS p ON o.OwnerID = p.OwnerID'
-
Vous pouvez également accéder à la console et afficher les données. Dans la liste des produits, sélectionnez Spanner. Ensuite, sélectionnez test-spanner-instance > pets-db (sous "Bases de données") > Pets (sous "Tables") > Données dans le menu de gauche.
-
Supprimez la base de données à l'aide de la commande suivante.
gcloud spanner databases delete pets-db --instance=test-spanner-instance
-
Dans la console, vérifiez que la base de données a bien été supprimée.
-
Enfin, supprimez l'instance à l'aide de la commande suivante.
gcloud spanner instances delete test-spanner-instance --quiet
Remarque : Le paramètre --quiet
exécute la commande sans afficher d'invite. Ce paramètre aurait également pu être ajouté à la commande précédente. Il est utile si vous écrivez un pipeline automatisé et qu'aucune confirmation des utilisateurs n'est nécessaire.
- Dans la console, vérifiez que l'instance a bien été supprimée.
Tâche 2 : Automatiser l'infrastructure Spanner à l'aide de Terraform
- Créez un dossier pour vos fichiers Terraform et accédez-y à l'aide des commandes suivantes.
mkdir terraform-spanner
cd terraform-spanner
- Plusieurs fichiers sont nécessaires pour le module Terraform. Pour créer des fichiers vides, exécutez la commande suivante.
touch main.tf provider.tf terraform.tfvars variables.tf
- Cliquez sur le bouton Ouvrir l'éditeur pour ouvrir l'éditeur de code. Dans le volet "Explorateur" sur la gauche, recherchez le dossier
terraform-spanner
que vous venez de créer et développez-le. Sélectionnez le fichier provider.tf
pour l'ouvrir dans l'éditeur, puis ajoutez-y le code suivant :
terraform {
required_providers {
google = {
source = "hashicorp/google"
version = "~> 4.0"
}
}
}
provider "google" {
project = var.project_id
region = var.region
}
Remarque : Le code du bloc Terraform télécharge le fournisseur Google depuis le site Web de HashiCorp. Le code du bloc "provider" configure le fournisseur afin qu'il utilise les bonnes valeurs pour l'ID du projet et la région, que vous définirez plus loin en tant que variables.
- Ouvrez le fichier
main.tf
et ajoutez-y le bloc de ressource suivant. Ce code crée l'instance Spanner.
resource "google_spanner_instance" "db-instance" {
name = "terraform-spanner-instance"
config = "regional-${var.region}"
display_name = "TF Spanner Instance"
processing_units = var.processing_units
force_destroy = var.force_destroy
}
- Sous le code précédent, toujours dans le même fichier, ajoutez le code suivant pour créer la base de données "Pets". Examinez le code LDD qui définit les tables.
resource "google_spanner_database" "test-database" {
instance = google_spanner_instance.db-instance.name
name = "pets-db"
# Can't run destroy unless set to false
deletion_protection = var.deletion_protection
ddl = [
"CREATE TABLE Owners (OwnerID STRING(36) NOT NULL, OwnerName STRING(MAX) NOT NULL) PRIMARY KEY (OwnerID)",
"CREATE TABLE Pets (PetID STRING(36) NOT NULL, OwnerID STRING(36) NOT NULL, PetType STRING(MAX) NOT NULL, PetName STRING(MAX) NOT NULL, Breed STRING(MAX) NOT NULL) PRIMARY KEY (PetID)",
]
}
- Ouvrez le fichier
variables.tf
. Dans ce fichier, vous allez déclarer les variables utilisées dans le module Terraform. Ajoutez le code suivant.
variable "deletion_protection" {
description = "If set to true, you cannot run terraform destroy if there are databases created."
type = bool
default = false
}
variable "force_destroy" {
description = "If set to true, running terraform destroy will delete all backups."
type = bool
default = true
}
variable "processing_units" {
type = number
default = 100
}
variable "project_id" {
description = "The GCP Project ID."
type = string
}
variable "region" {
type = string
}
- Toutes les variables, à l'exception de
project_id
et region
, possèdent des valeurs par défaut. Pour définir les valeurs de ces variables, vous allez utiliser le fichier terraform.tfvars
. Ouvrez ce fichier et ajoutez-y le code suivant.
project_id = "{{{project_0.project_id|placeholder_project_id}}}"
region = "{{{project_0.default_region|place_holder_text}}}"
- Vérifiez si l'opération a fonctionné. Cliquez sur le bouton Ouvrir le terminal. Sachez que vous devrez peut-être d'abord revenir à l'onglet d'origine si l'éditeur a ouvert un nouvel onglet ou une nouvelle fenêtre. Dans l'invite de commande, saisissez ce qui suit.
terraform init
- La commande précédente doit s'être exécutée sans erreur. Saisissez la commande ci-dessous et analysez le résultat. Il doit indiquer que deux ressources vont être ajoutées.
terraform plan
- Enfin, saisissez la commande suivante pour créer l'instance Spanner et la base de données "Pets". Saisissez
yes
à l'invite.
terraform apply
-
Attendez que l'exécution de la commande Terraform soit terminée. Dans la console, accédez au service Spanner, et vérifiez que l'instance et la base de données ont bien été créées. Il n'y a pas de bouton d'actualisation. Vous devrez donc peut-être cliquer sur un autre produit, puis revenir à Spanner pour actualiser la liste des instances.
-
Revenez dans le terminal et saisissez la commande suivante pour supprimer l'instance Spanner.
terraform destroy -auto-approve
Félicitations ! Vous avez appris à automatiser la création d'instances et de bases de données Spanner à l'aide de Google Cloud SDK, de l'interface de ligne de commande (CLI) et de Terraform.
Terminer l'atelier
Une fois l'atelier terminé, cliquez sur End Lab (Terminer l'atelier). Qwiklabs supprime les ressources que vous avez utilisées, puis efface le compte.
Vous avez alors la possibilité de noter votre expérience au cours de l'atelier. Sélectionnez le nombre d'étoiles correspondant à votre note, saisissez un commentaire, puis cliquez sur Submit (Envoyer).
Voici à quoi correspond le nombre d'étoiles que vous pouvez attribuer à un atelier :
- 1 étoile = très insatisfait(e)
- 2 étoiles = insatisfait(e)
- 3 étoiles = ni insatisfait(e), ni satisfait(e)
- 4 étoiles = satisfait(e)
- 5 étoiles = très satisfait(e)
Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.
Pour soumettre des commentaires, suggestions ou corrections, veuillez utiliser l'onglet Support.
Copyright 2024 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms de société et de produit peuvent être des marques des sociétés auxquelles ils sont associés.