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 "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) ;
- vous disposez d'un temps limité ; une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
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 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.
- Cliquez sur 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 :
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.
- (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
-
Cliquez sur Autoriser.
-
Vous devez à présent obtenir le résultat suivant :
Résultat :
- (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
Résultat :
Exemple de résultat :
gcloud
, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
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.
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 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.