Cloud Spanner avec Terraform

1. Présentation

Dernière mise à jour : 23/07/2020

Qu'est-ce que Cloud Spanner ?

Google Cloud Spanner est une base de données distribuée à l'échelle mondiale et conforme à la norme ACID, qui gère automatiquement les instances répliquées, la segmentation et le traitement des transactions. Vous pouvez ainsi la faire évoluer rapidement pour vous adapter aux différents modèles d'utilisation et garantir la réussite de vos produits.

Principales fonctionnalités

  • Base de données relationnelle conçue pour évoluer : tout ce que vous attendez d'une base de données relationnelle (schémas, requêtes SQL et transactions ACID), largement éprouvée et prête à évoluer à l'échelle mondiale.
  • Disponibilité de 99,999 % : Cloud Spanner offre une disponibilité de premier ordre de 99,999 % pour les instances multirégionales, soit 10 fois moins de temps d'arrêt que pour une disponibilité de 99,99 %. Il assure également une réplication transparente et synchrone pour les configurations régionales et multirégionales.
  • Segmentation automatique : Cloud Spanner optimise ses performances en segmentant automatiquement les données selon la charge des requêtes et la taille des données. Vous pouvez ainsi vous concentrer davantage sur l'évolutivité de votre entreprise plutôt que sur celle de votre base de données.

Afficher toutes les fonctionnalités

Points abordés

  • Utiliser le fournisseur Terraform Google Cloud
  • Utiliser Terraform pour créer des instances et des bases de données Cloud Spanner
  • Utiliser Terraform pour modifier les ressources Cloud Spanner.
  • Utiliser Terraform pour supprimer des ressources Cloud Spanner

2. Préparation

Configuration de l'environnement au rythme de chacun

Si vous ne possédez pas encore de compte Google (Gmail ou Google Apps), vous devez en créer un. Connectez-vous à la console Google Cloud Platform ( console.cloud.google.com) et créez un projet :

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID tout au long de cet atelier de programmation.

Vous devez ensuite activer la facturation dans la console Cloud pour pouvoir utiliser les ressources Google Cloud.

Suivre cet atelier de programmation ne devrait pas vous coûter plus d'un euro. Cependant, cela peut s'avérer plus coûteux si vous décidez d'utiliser davantage de ressources ou si vous n'interrompez pas les ressources (voir la section "Effectuer un nettoyage" à la fin du présent document).

Les nouveaux utilisateurs de Google Cloud Platform peuvent bénéficier d'un essai sans frais avec 300$de crédits.

Authentification

Si ce n'est pas déjà fait, veuillez installer l'outil de ligne de commande gcloud. Une fois gcloud installé, activez les identifiants par défaut de l'application en exécutant la commande suivante dans votre terminal :

$ gcloud auth application-default login

Terraform

Si vous n'avez pas encore installé Terraform, installez-le.

3. Fournisseur Terraform pour Google Cloud

Le fournisseur Terraform pour Google Cloud fournit quatre ressources Cloud Spanner :

Dans cet atelier de programmation, nous allons créer et gérer des instances et des bases de données Cloud Spanner.

Environment

Dans votre environnement de développement, créez un répertoire pour vos fichiers de configuration Terraform.

$ mkdir ~/terraform-spanner
$ cd ~/terraform-spanner

Créez ensuite un fichier nommé "main.tf" avec le contenu suivant et remplacez PROJECT_ID par votre propre ID de projet Google Cloud :

$ cat >> main.tf <<'EOF'
provider "google" {
  project = "PROJECT_ID"
}
EOF

Dans la suite de cet atelier de programmation, nous allons modifier ce fichier et appliquer les modifications.

4. Créer des instances et des bases de données

Modifiez le fichier main.tf en y ajoutant le contenu suivant pour ajouter une instance Cloud Spanner :

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

Exécutez la commande suivante pour appliquer les modifications :

$ terraform apply
# ...
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes
# ...
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Une fois les modifications appliquées, vous pourrez voir l'instance dans la console Google Cloud. Veuillez noter qu'il n'est pas possible de modifier la configuration régionale une fois l'instance créée.

48b67416982fa152.png

Après avoir créé l'instance, nous allons créer une base de données dans les étapes suivantes. Modifiez main.tf avec le contenu suivant :

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

resource "google_spanner_database" "database" {
  instance = google_spanner_instance.main.name
  name     = "my-first-database"
}

Utilisez à nouveau la commande suivante pour appliquer les modifications :

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Si l'opération réussit, my-first-database sera disponible sous l'instance :

9962a71c6b2a3aff.png

5. Modifier une instance

Comme indiqué dans la section précédente, toutes les propriétés des instances ne sont pas modifiables. Toutefois, vous pouvez augmenter ou diminuer le nombre de nœuds pour ajuster les ressources utilisées par l'instance. L'instance créée comportait trois nœuds. En modifiant le fichier main.tf, nous allons augmenter le nombre de nœuds à 5 :

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 5
}

resource "google_spanner_database" "database" {
  instance = google_spanner_instance.main.name
  name     = "my-first-database"
}

L'étape suivante consiste à appliquer les modifications :

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

Une fois l'opération réussie, l'instance utilisera cinq nœuds.

6. Supprimer une base de données

Vous pouvez supprimer définitivement une base de données lorsque vous n'en avez plus besoin. Il vous suffit de supprimer la base de données de main.tf et d'appliquer les modifications.

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 5
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

Une fois l'opération terminée, la base de données sera définitivement supprimée.

7. Supprimer une instance

Vous pouvez supprimer définitivement une instance lorsque vous n'en avez plus besoin. Il vous suffit de supprimer l'instance de main.tf et d'appliquer les modifications.

provider "google" {
  project = "PROJECT_ID"
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

Une fois l'opération réussie, l'instance sera définitivement supprimée.

8. Félicitations !

Vous avez créé, modifié et supprimé des ressources Cloud Spanner à l'aide de Terraform.

Points abordés

  • Utiliser le fournisseur Terraform de Google Cloud
  • Utiliser Terraform pour créer des instances et des bases de données Cloud Spanner
  • Utiliser Terraform pour modifier les ressources Cloud Spanner.
  • Utiliser Terraform pour supprimer des ressources Cloud Spanner

En savoir plus