Le schéma suivant illustre l'architecture que vous déployez. Il se compose de deux réseaux VPC spoke, chacun connecté à un réseau VPC hub central à l'aide d'un tunnel VPN IPSec.
Pour en savoir plus sur cette architecture et d'autres solutions de conception, consultez la page Architecture de réseau hub et spoke.
Objectifs
Provisionnez les ressources suivantes dans Google Cloud à l'aide d'un modèle Terraform fourni par Google :- Trois réseaux VPC, l'un désigné comme réseau hub et les deux autres comme réseaux spoke.
- Deux sous-réseaux dans chacun des réseaux VPC, un dans chacune des deux régions que vous spécifiez.
- Un ensemble de règles de pare-feu pour chaque réseau VPC.
- Une passerelle Cloud NAT pour chaque réseau VPC spoke.
- Une instance Compute Engine de test pour chaque réseau VPC satellite.
- Un compte de service pour les instances Compute Engine.
- Une passerelle Cloud VPN dynamique dans chacun des réseaux VPC spoke, avec un seul tunnel chacun.
- Deux passerelles et tunnels Cloud VPN dynamiques dans le réseau VPC hub, un pour chaque spoke.
- Une zone Cloud DNS privée dans le réseau VPC hub, appairée avec une zone Cloud DNS privée dans chacun des réseaux VPC spoke.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
Décidez si vous souhaitez déployer les ressources dans un projet existant ou dans un nouveau projet créé par Terraform.
Obtenez les autorisations requises.
Pour créer et gérer des ressources à l'aide des modèles Terraform fournis, le compte Google ou le compte de service a besoin des rôles Identity and Access Management (IAM) suivants :
- Administrateur de Compute (
roles/compute.admin
) - Administrateur de compte de service (
roles/iam.serviceAccountAdmin
) - Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin
) - Administrateur de Service Usage (
roles/serviceusage.serviceUsageAdmin
) - Administrateur DNS (
roles/dns.admin
) - Créateur de projet (
roles/resourcemanager.projectCreator
) (obligatoire pour déployer les ressources dans un nouveau projet)
Si vous ne disposez pas des autorisations requises ou si vous n'êtes pas sûr, contactez l'administrateur de votre organisation.
- Administrateur de Compute (
(Facultatif) Ignorez cette étape si vous souhaitez déployer les ressources dans un nouveau projet créé par Terraform.
Pour utiliser un projet existant ou un projet que vous créez, procédez comme suit :
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Compute Engine, Cloud DNS, Resource Manager, Service Usage et IAM.
-
Préparer l'environnement
Vous pouvez suivre ce tutoriel avec Cloud Shell ou votre hôte local. Terraform est préinstallé sur Cloud Shell et configuré pour l'authentification auprès de Google Cloud.
Pour utiliser Cloud Shell
Pour utiliser votre hôte local
Procédez comme suit :
-
Installez Terraform 0.13.0 ou version ultérieure.
-
Téléchargez les exemples de modèle Terraform de la section Exemples et modules Terraform pour Google Cloud.
-
Configurez l'authentification :
-
Créez le compte de service :
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Remplacez
SERVICE_ACCOUNT_NAME
par le nom que vous souhaitez donner au compte de service. -
Attribuez le rôle IAM
roles/owner
au compte de service.gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner
Remplacez les éléments suivants :
SERVICE_ACCOUNT_NAME
: nom du compte de service.PROJECT_ID
: ID du projet dans lequel vous avez créé le compte de service.
-
Générez le fichier de clé :
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Remplacez les éléments suivants :
FILE_NAME
: nom du fichier de cléSERVICE_ACCOUNT_NAME
: nom du compte de service.PROJECT_ID
: ID du projet dans lequel vous avez créé le compte de service.
-
-
Fournissez des identifiants d'authentification au code de votre application en définissant la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
. Cette variable ne s'applique qu'à la session de shell actuelle. Si vous souhaitez que la variable s'applique aux futures sessions de shell, définissez-la dans le fichier de démarrage du shell, par exemple dans le fichier~/.bashrc
ou~/.profile
.Linux ou macOS
export GOOGLE_APPLICATION_CREDENTIALS="
KEY_PATH
"Remplacez
KEY_PATH
par le chemin d'accès du fichier JSON contenant vos identifiants.Par exemple :
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
Pour PowerShell :
$env:GOOGLE_APPLICATION_CREDENTIALS="
KEY_PATH
"Remplacez
KEY_PATH
par le chemin d'accès du fichier JSON contenant vos identifiants.Par exemple :
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
Pour l'invite de commande :
set GOOGLE_APPLICATION_CREDENTIALS=
KEY_PATH
Remplacez
KEY_PATH
par le chemin d'accès du fichier JSON contenant vos identifiants.
Configurer les variables Terraform
Le code Terraform que vous avez téléchargé comprend des variables que vous pouvez utiliser pour personnaliser le déploiement en fonction de vos besoins. Par exemple, vous pouvez ajuster les plages CIDR des sous-réseaux et spécifier le projet dans lequel les ressources doivent être déployées.
Dans le code que vous avez téléchargé (sur votre hôte local ou dans Cloud Shell), accédez au sous-répertoire
blueprints/networking/hub-and-spoke-peering
.cd blueprints/networking/hub-and-spoke-vpn
Ouvrez le fichier
variables.tf
.Les variables d'entrée de la configuration Terraform sont déclarées dans ce fichier. Certaines des variables ont une valeur
default
.Identifiez les variables auxquelles vous souhaitez attribuer des valeurs :
- Les variables qui n'ont pas de valeur par défaut (par exemple,
project_id
). Les variables ayant une valeur par défaut que vous souhaitez modifier.
Par exemple,
ip_ranges
possède des plages CIDR par défaut, mais vous devrez peut-être utiliser des plages différentes pour votre déploiement.
Pour chaque variable que vous identifiez, lisez sa
description
et notez sontype
.- Les variables qui n'ont pas de valeur par défaut (par exemple,
Créez un fichier texte nommé
terraform.tfvars
.Dans le fichier
terraform.tfvars
, attribuez des valeurs appropriées aux variables que vous avez identifiées précédemment.Exemple :
ip_ranges = { hub-a = "10.0.0.0/24" hub-b = "10.0.8.0/24" spoke-1-a = "10.0.16.0/24" spoke-1-b = "10.0.24.0/24" spoke-2-a = "10.0.32.0/24" spoke-2-b = "10.0.40.0/24" } project_id = "my-project" regions = { a = "us-central1" b = "us-west1" }
Initialisez Terraform :
terraform init
Attendez que le message suivant s'affiche :
Terraform has been successfully initialized!
Vérifiez que la configuration ne comporte aucune erreur :
terraform validate
Si la commande renvoie une erreur, apportez les corrections nécessaires dans la configuration, puis exécutez à nouveau
terraform validate
.Répétez cette étape jusqu'à ce que la commande renvoie le message suivant :
Success! The configuration is valid.
Examinez les ressources définies dans la configuration :
terraform plan
Le résultat affiche la liste des ressources provisionnées par Terraform lorsque vous appliquez la configuration.
Si vous souhaitez apporter des modifications, modifiez la configuration, puis exécutez à nouveau
terraform validate
etterraform plan
.
Provisionnement des ressources
Lorsqu'aucune autre modification n'est nécessaire dans la configuration, déployez les ressources :
Exécutez la commande suivante :
terraform apply
Terraform affiche la liste des ressources qui seront créées.
Lorsque vous y êtes invité, saisissez
yes
.Si Terraform affiche un message d'erreur indiquant qu'une ou plusieurs API ne sont pas activées, utilisez chaque lien affiché dans le message pour activer les API requises.
Terraform affiche les messages indiquant la progression du déploiement. Une fois toutes les ressources créées, Terraform affiche le message suivant :
Apply complete!
Vous avez déployé un réseau hub-and-spoke dans Google Cloud.
Ajouter, modifier ou supprimer des ressources
Pour ajouter, modifier ou supprimer des ressources, modifiez la configuration Terraform, puis exécutez les commandes terraform validate
, terraform plan
et terraform apply
, dans cet ordre.
Nettoyer
Pour éviter que les ressources que vous avez créées dans ce tutoriel soient facturées sur votre compte Google Cloud, supprimez toutes les ressources dont vous n'avez pas besoin.Exécutez la commande suivante :
terraform destroy
Terraform affiche la liste des ressources qui seront supprimées.
Lorsque vous y êtes invité, saisissez
yes
.Terraform affiche des messages de progression. Une fois toutes les ressources supprimées, Terraform affiche le message suivant :
Destroy complete!
Étape suivante
- Découvrez comment concevoir un réseau hub-and-spoke.
- Créez une base cloud sécurisée et de bout en bout.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.