Guide de démarrage rapide : créer une instance de VM à l'aide de Terraform
Dans ce guide de démarrage rapide, vous allez apprendre à utiliser Terraform pour créer une instance de machine virtuelle (VM) Compute Engine et à vous y connecter.
HashiCorp Terraform est un outil IaC (Infrastructure as Code) qui vous permet de provisionner et de gérer l'infrastructure cloud. Le fournisseur Terraform pourGoogle Cloud (fournisseurGoogle Cloud ) vous permet de provisionner et de gérer l'infrastructure Google Cloud .
Avant de commencer
Pour utiliser un terminal en ligne avec la gcloud CLI et Terraform déjà configurés, activez Cloud Shell :
En bas de la page, une session Cloud Shell démarre et affiche une invite de ligne de commande. L'initialisation de la session peut prendre quelques secondes.
-
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
-
Activez l'API Compute Engine :
Rôles requis pour activer les API
Pour activer les API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.gcloud services enable compute.googleapis.com
-
Attribuez des rôles à votre compte utilisateur. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :
roles/compute.instanceAdmin.v1gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projetUSER_IDENTIFIER: identifiant de votre compte utilisateur compte. Pour consulter des exemples, reportez-vous à la page Représenter les utilisateurs de pools de personnel dans les stratégies IAM.ROLE: rôle IAM que vous accordez à votre compte utilisateur.
Préparer l'environnement
Clonez le dépôt GitHub contenant les exemples Terraform :
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branchAccédez au répertoire qui contient l'exemple de démarrage rapide :
cd terraform-docs-samples/compute/quickstart/create_vm
Examiner les fichiers Terraform
Examinez le fichier main.tf. Ce fichier définit les ressources Google Cloudque vous souhaitez créer.
cat main.tf
Le résultat ressemble à ce qui suit :
Ce fichier décrit la ressource google_compute_instance, qui est la ressource Terraform pour l'instance de VM Compute Engine. google_compute_instance est configuré pour avoir les propriétés suivantes :
- La propriété
nameest définie surmy-vm. - La propriété
machine_typeest définie surn1-standard-1. - La propriété
zoneest définie surus-central1-a. boot_diskdéfinit le disque de démarrage de l'instance.network_interfaceest configuré pour utiliser le réseau par défaut dans votre projetGoogle Cloud .
Créer l'instance de VM Compute Engine
Dans Cloud Shell, exécutez la commande suivante pour vérifier que Terraform est disponible :
terraformLa sortie devrait ressembler à ce qui suit :
Usage: terraform [global options] <subcommand> [args] The available commands for execution are listed below. The primary workflow commands are given first, followed by less common or more advanced commands. Main commands: init Prepare your working directory for other commands validate Check whether the configuration is valid plan Show changes required by the current configuration apply Create or update infrastructure destroy Destroy previously-created infrastructureInitialisez Terraform à l'aide de la commande suivante. Cette commande prépare votre espace de travail afin que Terraform puisse appliquer votre configuration.
terraform initLa sortie devrait ressembler à ce qui suit :
Initializing the backend... Initializing provider plugins... - Finding latest version of hashicorp/google... - Installing hashicorp/google v5.35.0... - Installed hashicorp/google v5.35.0 (signed by HashiCorp) Terraform has created a lock file .terraform.lock.hcl to record the provider selections it made above. Include this file in your version control repository so that Terraform can guarantee to make the same selections by default when you run "terraform init" in the future. Terraform has been successfully initialized!Validez la configuration Terraform en exécutant la commande suivante. Cette commande effectue les actions suivantes :
- Vérifie que la syntaxe de
main.tfest correcte - Affiche un aperçu des ressources qui seront créées
terraform planLa sortie devrait ressembler à ce qui suit :
Plan: 1 to add, 0 to change, 0 to destroy. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.- Vérifie que la syntaxe de
Appliquez la configuration pour provisionner les ressources décrites dans le fichier
main.tf:terraform applyLorsque vous y êtes invité, saisissez
yes.Terraform appelle les API Google Cloud pour créer l'instance de VM définie dans le fichier
main.tf.La sortie devrait ressembler à ce qui suit :
Apply complete! Resources: 1 added, 0 changed, 0 destroyed
Se connecter à l'instance de VM
Connectez-vous à l'instance de VM que vous venez de créer en exécutant la commande suivante :
gcloud compute ssh --zone=us-central1-a my-vm
Effectuer un nettoyage
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre compte Google Cloud , supprimez le projet Google Cloud qui les contient.
Dans Cloud Shell, exécutez la commande suivante pour supprimer les ressources Terraform :
terraform destroy
Lorsque vous y êtes invité, saisissez yes.
La sortie devrait ressembler à ce qui suit :
Destroy complete! Resources: 1 destroyed.
Étape suivante
- Découvrez comment déployer un serveur Web Flask de base à l'aide de Terraform.
- Découvrez comment stocker l'état Terraform dans un bucket Cloud Storage.