Points de contrôle
Create Cloud SQL instance using Terraform script
/ 100
Utiliser Cloud SQL avec Terraform
GSP234
Présentation
Dans cet atelier pratique, vous allez apprendre à créer des instances Cloud SQL avec Terraform, puis à configurer le proxy Cloud SQL et à tester la connexion avec le client MySQL.
Objectifs
- Créer une instance Cloud SQL
- Installer le proxy Cloud SQL
- Tester la connectivité avec le client MySQL à l'aide de Cloud Shell
Prérequis
Avant de cliquer sur le bouton Start Lab (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 Start Lab (Démarrer l'atelier), indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique Qwiklabs 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. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.
Conditions requises
Pour réaliser cet atelier, vous devez :
- avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
- disposer de suffisamment de temps pour réaliser l'atelier en une fois.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier.
Remarque : Si vous utilisez un appareil Chrome OS, exécutez cet atelier dans une fenêtre de navigation privée.
Démarrer l'atelier et se connecter à la console Google Cloud
-
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
-
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. -
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.
-
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. -
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.
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
Cloud SQL
Cloud SQL est un service de base de données entièrement géré qui facilite la configuration, la maintenance, la gestion et l'administration de vos bases de données relationnelles sur Google Cloud Platform. Vous pouvez utiliser Cloud SQL avec MySQL ou PostgreSQL.
Vérifier la version Terraform
Vérifiez la version Terraform préinstallée dans Cloud Shell :
terraform version
Exemple de résultat :
Terraform v0.12.x
Télécharger les fichiers nécessaires
Créez un répertoire et extrayez les scripts Terraform requis à partir du bucket Cloud Storage en exécutant les commandes suivantes :
mkdir sql-with-terraform
cd sql-with-terraform
gsutil cp -r gs://spls/gsp234/gsp234.zip .
Décompressez le contenu téléchargé :
unzip gsp234.zip
Comprendre le code
Examinez le contenu du fichier main.tf
:
cat main.tf
Exemple de résultat :
...
resource "google_sql_database_instance" "master" {
name = "example-mysql-${random_id.name.hex}"
project = var.project
region = var.region
database_version = var.database_version
master_instance_name = var.master_instance_name
settings {
tier = var.tier
activation_policy = var.activation_policy
authorized_gae_applications = var.authorized_gae_applications
disk_autoresize = var.disk_autoresize
dynamic "backup_configuration" {
for_each = [var.backup_configuration]
content {
binary_log_enabled = lookup(backup_configuration.value, "binary_log_enabled", null)
enabled = lookup(backup_configuration.value, "enabled", null)
start_time = lookup(backup_configuration.value, "start_time", null)
}
}
dynamic "ip_configuration" {
for_each = [var.ip_configuration]
content {
ipv4_enabled = lookup(ip_configuration.value, "ipv4_enabled", true)
private_network = lookup(ip_configuration.value, "private_network", null)
require_ssl = lookup(ip_configuration.value, "require_ssl", null)
dynamic "authorized_networks" {
for_each = lookup(ip_configuration.value, "authorized_networks", [])
content {
expiration_time = lookup(authorized_networks.value, "expiration_time", null)
name = lookup(authorized_networks.value, "name", null)
value = lookup(authorized_networks.value, "value", null)
}
}
}
}
...
Exécuter Terraform
La commande terraform init
permet d'initialiser un répertoire de travail contenant les fichiers de configuration Terraform.
Cette commande exécute plusieurs étapes d'initialisation en vue de préparer le répertoire de travail à utiliser. Vous pouvez l'exécuter à plusieurs reprises pour actualiser ce répertoire en fonction des modifications apportées à la configuration.
terraform init
La commande terraform plan
est une commande facultative, mais toutefois recommandée, qui permet de créer un plan d'exécution. Terraform procède à une actualisation (sauf si cette fonctionnalité a été explicitement désactivée), puis détermine les actions requises pour obtenir l'état spécifié dans les fichiers de configuration.
Cette commande vous permet de vérifier facilement si le plan d'exécution d'un ensemble de modifications répond à vos attentes sans nécessiter l'apport de changements aux ressources réelles ou à l'état. Par exemple, vous pouvez exécuter "terraform plan" avant de valider une modification du contrôle des versions pour vous assurer que vous obtiendrez le résultat souhaité.
terraform plan -out=tfplan
Vous pouvez utiliser l'argument -out
facultatif pour enregistrer le plan généré dans un fichier en vue de l'exécuter ultérieurement à l'aide de la commande terraform apply
.
La commande terraform apply
permet d'appliquer les modifications requises pour obtenir l'état de configuration souhaité, ou l'ensemble d'actions prédéterminé généré par un plan d'exécution terraform plan
.
terraform apply tfplan
Cette opération prend un certain temps. Une fois l'opération terminée, vous devez obtenir le résultat suivant :
Apply complete! Resources: 5 added, 0 changed, 0 destroyed.
The state of your infrastructure has been saved to the path
below. This state is required to modify and destroy your
infrastructure, so keep it safe. To inspect the complete state
use the `terraform show` command.
State path: terraform.tfstate
Outputs:
generated_user_password = <sensitive>
instance_address = 35.232.204.44
instance_address_time_to_retire =
instance_name = example-mysql-6808
self_link = https://www.googleapis.com/sql/v1beta4/projects/[PROJECT_ID]/instances/example-mysql-6808
Tester la tâche terminée
Cliquez sur Check my progress (Vérifier ma progression) pour vérifier la tâche exécutée.
Proxy Cloud SQL
Caractéristiques du proxy
Avec le proxy Cloud SQL, vous bénéficiez d'un accès sécurisé aux instances Cloud SQL de deuxième génération, sans avoir besoin d'ajouter des adresses IP à la liste blanche ni de configurer SSL.
L'accès à l'instance Cloud SQL à l'aide du proxy Cloud SQL offre les avantages suivants :
- Connexions sécurisées : le proxy chiffre automatiquement le trafic vers et depuis la base de données à l'aide de TLS 1.2 avec un algorithme de chiffrement AES 128 bits. Les certificats SSL permettent de valider les identités du client et du serveur.
- Gestion simplifiée des connexions : le proxy gère l'authentification auprès de Cloud SQL. Ainsi, il n'est plus nécessaire de fournir des adresses IP statiques.
Fonctionnement du proxy Cloud SQL
Le proxy Cloud SQL fonctionne avec un client local, appelé proxy, qui s'exécute dans l'environnement local. Pour communiquer avec le proxy, votre application utilise le protocole standard de votre base de données. Le proxy se sert d'un tunnel sécurisé pour communiquer avec son processus associé, exécuté sur le serveur.
Le diagramme suivant illustre la manière dont le proxy se connecte à Cloud SQL :
Installer le proxy Cloud SQL
-
Téléchargez le proxy :
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
-
Rendez le proxy exécutable :
chmod +x cloud_sql_proxy
Vous pouvez installer le proxy n'importe où dans votre environnement. L'emplacement des binaires du proxy n'a pas d'incidence sur l'endroit d'où celui-ci écoute les données de votre application.
Options de démarrage du proxy
Lorsque vous démarrez le proxy, vous lui fournissez les informations suivantes :
- À quelles instances Cloud SQL établir des connexions
- Où écouter les données provenant de l'application à envoyer à Cloud SQL
- Où trouver les identifiants pour authentifier l'application auprès de Cloud SQL
Les options de démarrage du proxy que vous spécifiez déterminent si le proxy écoute un port TCP ou un socket Unix. Dans le cas d'un socket Unix, le proxy crée celui-ci à l'emplacement de votre choix, généralement dans le répertoire /cloudsql/
. Dans le cas d'un port TCP, le proxy écoute localhost
par défaut.
Tester la connexion à la base de données
-
Commencez par exécuter le proxy Cloud SQL pour l'instance Cloud SQL :
export GOOGLE_PROJECT=$(gcloud config get-value project)
MYSQL_DB_NAME=$(terraform output -json | jq -r '.instance_name.value')
MYSQL_CONN_NAME="${GOOGLE_PROJECT}:us-central1:${MYSQL_DB_NAME}"
-
Exécutez cette commande :
./cloud_sql_proxy -instances=${MYSQL_CONN_NAME}=tcp:3306
À présent, vous allez ouvrir un nouvel onglet Cloud Shell en cliquant sur l'icône plus (+). Vous utiliserez cette interface système pour vous connecter au proxy Cloud SQL.
-
Accédez au répertoire
sql-with-terraform
:
cd ~/sql-with-terraform
-
Obtenez le mot de passe généré pour MYSQL :
echo MYSQL_PASSWORD=$(terraform output -json | jq -r '.generated_user_password.value')
-
Testez la connexion MySQL :
mysql -udefault -p --host 127.0.0.1 default
-
Lorsque vous y êtes invité, saisissez la valeur de la chaîne
MYSQL_PASSWORD
figurant dans le résultat ci-dessus, puis appuyez sur Entrée. -
Vous devriez alors accéder à la ligne de commande MYSQL. Quittez MYSQL en saisissant Ctrl+d.
-
Si vous revenez au premier onglet Cloud Shell, vous y verrez les journaux associés aux connexions établies avec le proxy Cloud SQL.
Tester vos connaissances
Voici quelques questions à choix multiples qui vous permettront de mieux maîtriser les concepts abordés lors de cet atelier. Répondez-y du mieux que vous le pouvez.
Félicitations !
Terminer votre quête
Cet atelier d'auto-formation fait partie des quêtes Managing Cloud Infrastructure with Terraform et Cloud SQL. Une quête est une série d'ateliers associés qui constituent une formation. Si vous terminez cette quête, vous obtiendrez l'un des badges ci-dessus 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 à la quête Managing Cloud Infrastructure with Terraform ou Cloud SQL pour obtenir immédiatement les crédits associés à cet atelier si vous l'avez suivi. Découvrez les autres quêtes Qwiklabs disponibles.
Atelier suivant
Continuez sur votre lancée en suivant l'atelier Utiliser Vault sur Compute Engine pour gérer les codes secrets, ou consultez nos suggestions de ressources :
Étapes suivantes et informations supplémentaires
- Découvrez comment gérer des projets GCP avec Terraform.
Google Cloud Training & Certification
...helps you make the most of Google Cloud technologies. Our classes include technical skills and best practices to help you get up to speed quickly and continue your learning journey. We offer fundamental to advanced level training, with on-demand, live, and virtual options to suit your busy schedule. Certifications help you validate and prove your skill and expertise in Google Cloud technologies.
Dernière mise à jour du manuel : 4 décembre 2019
Dernier test de l'atelier : 4 décembre 2019
Copyright 2020 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.