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 pour Google Cloud (Google Cloud fournisseur) vous permet de provisionner et de gérer Google Cloud l'infrastructure.
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 Google Cloud projet.
Rôles requis pour sélectionner ou créer un projet
- Sélectionner 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 avez besoin 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 Google Cloud projet :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du Google Cloud projet que vous créez. -
Sélectionnez le Google Cloud projet que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre Google Cloud projet.
-
Vérifiez que la facturation est activée pour votre Google Cloud projet.
-
Activez l'API Compute Engine :
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (
roles/serviceusage.serviceUsageAdmin), qui contient l'serviceusage.services.enableautorisation. 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 obtenir des exemples, consultez Représenter les utilisateurs de pools de personnel dans les stratégies IAM.ROLE: rôle IAM que vous attribuez à votre compte utilisateur
Préparer l'environnement
Clonez le dépôt GitHub contenant des exemples Terraform :
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branchAccédez au répertoire contenant l'exemple de guide 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 Google Cloud
ressources que vous souhaitez créer.
cat main.tf
Le résultat ressemble à ce qui suit :
Ce fichier décrit la
google_compute_instance ressource, qui est la ressource Terraform pour la
Compute Engine VM instance. 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. - La propriété
boot_diskdéfinit le disque de démarrage de l'instance. network_interfaceest configuré pour utiliser le réseau par défaut de votre Google Cloud projet.
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 pour créer l'instance de VM définie dans le
main.tffichier. Google CloudLa 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 Google Cloud compte pour les ressources utilisées sur cette page, supprimez le Google Cloud projet 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.