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. Elle gère automatiquement les instances répliquées, la segmentation et le traitement des transactions. Vous pouvez ainsi rapidement effectuer un scaling 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) est testée et prête à évoluer à l'échelle mondiale.
  • Disponibilité de 99,999 %:Cloud Spanner offre une disponibilité de pointe de 99,999 % pour les instances multirégionales, soit 10 fois moins de temps d'arrêt qu'une disponibilité de 99,99 %, et fournit une réplication transparente et synchrone sur les configurations régionales et multirégionales.
  • Segmentation automatique:Cloud Spanner optimise la segmentation automatique des données en fonction de la charge des requêtes et de la taille des données. Vous pouvez ainsi passer moins de temps à vous préoccuper du scaling de votre base de données au lieu de vous concentrer sur le scaling de votre entreprise.

Voir toutes les fonctionnalités

Points abordés

  • Utiliser le fournisseur Google Cloud Terraform
  • Créer des instances et des bases de données Cloud Spanner avec Terraform
  • Modifier des ressources Cloud Spanner à l'aide de Terraform
  • Supprimer des ressources Cloud Spanner à l'aide de Terraform

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 de 300$.

Authentification

Si ce n'est pas déjà fait, installez 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 ce n'est pas déjà fait, installez Terraform.

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

Ensuite, créez un fichier nommé "main.tf". par le contenu suivant, en remplaçant 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 avec 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'une fois l'instance créée, la configuration régionale ne peut plus être modifiée.

48b67416982fa152.png

Une fois l'instance créée, nous allons créer une base de données lors des prochaines étapes. 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"
}

Là encore, exécutez la commande suivante pour appliquer les modifications:

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

En cas de réussite, 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 faire passer le nombre de nœuds à cinq:

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 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 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 terminée, 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 pour Google Cloud
  • Créer des instances et des bases de données Cloud Spanner avec Terraform
  • Modifier des ressources Cloud Spanner à l'aide de Terraform
  • Supprimer des ressources Cloud Spanner à l'aide de Terraform

En savoir plus