Déploiement réseau automatisé : Présentation

Dans ce tutoriel, vous apprendrez comment utiliser Cloud Deployment Manager et Terraform de HashiCorp pour automatiser la création et la gestion de ressources Google Cloud.

  • Deployment Manager est un service de déploiement d'infrastructures intégré à Google Cloud.
  • Terraform est un outil Open Source qui vous permet d'automatiser le déploiement de vos expériences et opérations.

Premier d'une série en trois parties, ce tutoriel illustre le déploiement automatisé de modèles courants de ressources réseau.

Lorsque vous transitionnez vers le cloud public, les premières tâches d'infrastructure dont vous devez vous charger sont la planification et le déploiement des ressources réseau. En effet, la mise en service du réseau est un élément obligatoire de toute expérimentation ou démonstration de faisabilité initiale. Ces tutoriels présentent certaines configurations réseau courantes que vous pourrez utiliser comme référence pour vos projets.

Ce tutoriel utilise une approche d'authentification basée sur les fichiers qui fonctionne avec Deployment Manager et Terraform. Vous pouvez réutiliser la configuration résultante et ainsi vous concentrer sur les besoins critiques de vos applications en termes de ressources.

La série a la structure suivante :

  1. Ceci est la présentation. Suivez ce tutoriel pour configurer un environnement d'exploitation doté d'identifiants d'authentification pour le projet Google Cloud. Les autres tutoriels de cette série dépendent de la configuration d'authentification décrite ici. D'autres méthodes d'authentification sont également disponibles via l'outil de ligne de commande gcloud.
  2. Ensuite, le tutoriel de démarrage présente Deployment Manager et Terraform. À des fins de comparaison, vous pouvez exécuter le déploiement simple fourni avec chaque outil. Vous pouvez également consulter les fichiers de configuration pour étudier différentes approches et déterminer celle qui correspond à vos besoins. Vous devez terminer le tutoriel de présentation avant de commencer le tutoriel de démarrage.
  3. Créer des connexions VPN entre Google Cloud et AWS est un tutoriel avancé. Il n'est pas dépendant du tutoriel de démarrage, mais il suppose que vous avez suivi le tutoriel de présentation. Dans ce tutoriel avancé, vous apprendrez comment :

    • déployer une application multicloud ou créer un environnement hybride avec des connexions à votre infrastructure locale ;
    • déployer une infrastructure réseau et des instances de machine virtuelle (VM) dans Google Cloud et Amazon Web Services (AWS) ;
    • configurer des connexions entre les deux fournisseurs pour vous permettre de distribuer les ressources déployées selon les exigences de fiabilité et de disponibilité.

Pourquoi des déploiements réseau automatisés ?

Une stratégie d'automatisation est importante pour assurer l'efficacité de votre développement et de vos opérations, et pour optimiser la qualité de vos applications. Les déploiements réseau automatisés offrent les avantages suivants :

  • Ils sont compatibles avec de nombreuses applications différentes, ainsi qu'avec les environnements par étapes (développement, test, préproduction et production) qui contribuent à la prévisibilité des processus et à la fiabilité des opérations. Il est facile de créer et de supprimer des copies d'environnements lorsque vous utilisez des fichiers de configuration basés sur du code.
  • Les déploiements automatisés basés sur du code vous permettent de réutiliser des modèles d'infrastructure courants dans votre organisation.
  • Les déploiements basés sur du code suivent un processus de vérification structuré qui aide à assurer une harmonie entre les équipes et à éviter les problèmes inattendus. Grâce à ce processus, vous pouvez collaborer avec vos homologues dans d'autres disciplines, tels que les équipes d'opérations de sécurité, d'opérations de réseau, d'administration de projet et de qualité.

Aperçu

Deployment Manager et Terraform procèdent à une vérification complexe des dépendances, ce qui vous permet d'évaluer votre environnement et de créer efficacement des ressources en parallèle, dans la mesure du possible. Dans les autres tutoriels de cette série, vous utiliserez ces outils pour déployer des structures de réseau plus complexes.

Bien que ce tutoriel renvoie à des outils connexes, il a pour objectif de consolider certains détails pour vous permettre de créer des environnements de travail utiles sans avoir à consulter des pages et sites Web multiples.

Objectifs

  • Créer des identifiants d'accès pour l'automatisation dans Google Cloud et AWS.
  • Créer un environnement fonctionnel permettant d'utiliser Deployment Manager et Terraform.
  • Générer une paire de clés qui sera nécessaire pour communiquer avec vos instances de VM via Secure Shell (SSH).

Coûts

Ce tutoriel n'utilise aucune ressource Google Cloud payante. D'autres tutoriels de cette série déploient des ressources payantes dans Google Cloud et AWS.

Avant de commencer

  1. Dans Google Cloud Console, créez un projet Google Cloud nommé gcp-automated-networks.

    Accéder à la page Projets

    Votre projet possède un nom et un ID de projet Google Cloud unique. Prenez note de votre ID de projet Google Cloud. Vous le trouverez dans le panneau Project info (Informations sur le projet) de la page d'accueil de Google Cloud Console.

    Panneau des informations sur le projet, qui affiche le nom et l'ID de votre projet.

  2. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  3. Activer les API Compute Engine and Deployment Manager.

    Activer les API

  4. Démarrez une instance Cloud Shell. Exécutez toutes les commandes de terminal indiquées dans ce tutoriel à partir de Cloud Shell.

    Ouvrir Cloud Shell

    La mise en service de Cloud Shell peut prendre quelques minutes. Une fois le processus terminé, le message de bienvenue suivant s'affiche :

    Welcome to Cloud Shell! Type "help" to get started.

Les tutoriels de cette série partent du principe que vous connaissez bien l'environnement GitHub et que vous avez installé l'AWS Management Console.

Architecture de déploiement

Dans ce tutoriel, vous allez créer l'environnement de déploiement illustré dans le diagramme suivant.

Composants de votre architecture de déploiement.

Le diagramme précédent montre les différents composants utilisés dans ce tutoriel :

  • Identifiants Google Cloud
  • Les fichiers de configuration de déploiement
  • Les clés SSH
  • Les identifiants AWS
  • Votre projet Google Cloud
  • Le réseau VPC

Préparer votre environnement de travail Google Cloud

Dans cette section, vous allez exécuter les opérations suivantes :

  • Cloner le code du tutoriel
  • Choisir la région et la zone Google Cloud

Cloner le code du tutoriel

  1. Dans Cloud Shell, clonez le code du tutoriel à partir de GitHub :

    git clone https://github.com/GoogleCloudPlatform/autonetdeploy-startup.git
  2. Accédez au répertoire du tutoriel :

    cd autonetdeploy-startup
    

Vérifier la région et la zone

Certaines ressources cloud de ce tutoriel, y compris les instances Compute Engine, exigent que vous déclariez explicitement la région ou la zone de placement prévue, ou les deux. Pour en savoir plus, consultez la page Régions et zones pour Google Cloud.

Ce tutoriel ne nécessite qu'une seule région. Vérifiez les valeurs du tableau ci-dessous qui correspondent aux valeurs définies dans les fichiers du tutoriel.

fieldName Valeurs Google Cloud
Nom de la région

us-west1
Emplacement The Dalles, Oregon, États-Unis
Zone

us-west1-b

Préparer le projet pour AWS

Dans cette section, choisissez votre région AWS, dont vous avez besoin dans les autres tutoriels de cette série. Pour plus d'informations sur les régions AWS, consultez Régions et Zones de disponibilité pour AWS.

  1. Connectez-vous à l'AWS Management Console.
  2. Accédez au VPC Dashboard (Tableau de bord du VPC) et sélectionnez la région Oregon.
  3. Dans les tableaux de bord EC2 Dashboard et VPC Dashboard, passez en revue les ressources utilisées par ce tutoriel.

Préparer Deployment Manager

Deployment Manager est pré-installé dans Cloud Shell, avec le SDK Cloud. Vous pouvez voir un aperçu de la syntaxe d'exécution en exécutant la commande gcloud deployment-manager --help.

Préparer Terraform

Dans cette section, vous téléchargerez et installerez Terraform.

  1. Dans Cloud Shell, exécutez le script suivant :

    ./get_terraform.sh
    

    Ce script télécharge et décompresse le fichier binaire exécutable de l'outil Terraform dans le répertoire ~/terraform. Le résultat du script montre une commande d'exportation pour mettre à jour votre chemin d'accès (PATH).

  2. Exécutez la commande d'exportation pour mettre à jour votre chemin d'accès PATH.

  3. Vérifiez que Terraform fonctionne :

    terraform --help
    

    Résultat :

    Usage: terraform [--version] [--help] [command] [args]
    ...
    

Pour plus d'informations, consultez les rubriques Télécharger Terraform et Installer Terraform.

Créer des identifiants d'accès

Dans cette section, vous allez exécuter les opérations suivantes :

  • Télécharger des identifiants d'accès pour Google Cloud et AWS
  • Pointer les modèles sur ces identifiants d'accès

Deployment Manager et Terraform nécessitent un accès à vos projets et environnements dans Google Cloud et AWS. Pour Terraform, vous pouvez en savoir plus sur les fournisseurs disponibles dans la documentation en ligne. Bien que le fournisseur Google Cloud de Terraform propose plusieurs méthodes pour obtenir des identifiants, dans ce tutoriel, vous téléchargerez un fichier d'identifiants depuis Google Cloud et AWS. Le téléchargement des identifiants Google Cloud revient à utiliser l'authentification du compte de service, ce qui est une pratique recommandée.

Télécharger les identifiants du compte de service Compute Engine par défaut

Dans Cloud Shell, qui est un environnement Linux, gcloud gère les fichiers d'identifiants sous le répertoire ~/.config/gcloud.

Pour configurer vos identifiants du compte de service Compute Engine par défaut, procédez comme suit :

  1. Dans Cloud Console, accédez à la page Comptes de service.

    Accéder à la page "Comptes de service"

  2. Recherchez le compte de service dont le champ Nom est défini sur Compte de service Compute Engine par défaut, puis cliquez sur son adresse e-mail.

  3. Cliquez sur Clés.

  4. Cliquez sur AJOUTER UNE CLÉ -> Créer une clé.

  5. Cliquez sur Créer pour télécharger les identifiants dans un fichier nommé [PROJECT_ID]-[UNIQUE_ID].json.

  6. Cliquez sur Close (Fermer).

  7. Pour importer ce fichier depuis votre ordinateur local vers l'environnement Cloud Shell, cliquez sur Plus (), puis sélectionnez Importer un fichier.

  8. Naviguez jusqu'au fichier JSON que vous avez téléchargé et cliquez sur Ouvrir pour l'importer. Le fichier est placé dans le répertoire d'accueil (~).

  9. Créez le fichier ~/.config/gcloud/credentials_autonetdeploy.json à l'aide du script ./gcp_set_credentials.sh fourni. Ce script crée également terraform/terraform.tfvars avec une référence aux nouveaux identifiants.

    ./gcp_set_credentials.sh ~/[PROJECT_ID]-[UNIQUE_ID].json
    

    Résultat :

    Created ~/.config/gcloud/credentials_autonetdeploy.json from ~/[PROJECT_ID]-[UNIQUE_ID].json.
    Updated gcp_credentials_file_path in ~/autonetdeploy-startup/terraform/terraform.tfvars.
    
  10. Pour Deployment Manager, ajoutez les identifiants du compte de service à l'ensemble des identifiants existants géré par gcloud. Cette étape n'est pas nécessaire pour Terraform, car la configuration de Terraform lit le fichier directement à partir de cet emplacement.

    gcloud auth activate-service-account --key-file ~/.config/gcloud/credentials_autonetdeploy.json
    
  11. Exécutez ensuite les commandes cat et grep pour extraire l'adresse e-mail du compte de service du fichier et afficher la chaîne de l'adresse e-mail.

    cat ~/.config/gcloud/credentials_autonetdeploy.json | grep client_email
    
  12. Examinez votre configuration d'authentification gcloud, et vérifiez que l'adresse e-mail du compte de service est répertoriée et active.

    gcloud auth list
    

    Résultat :

    ACTIVE  ACCOUNT
    *       ###-compute@developer.gserviceaccount.com
    

Télécharger les identifiants d'accès AWS

Dans Cloud Shell, AWS stocke les fichiers d'identifiants sous ~/.aws.

  1. Dans la console AWS Management Console, cliquez sur votre nom, puis sur Mes informations d'identification de sécurité.

  2. Cliquez sur Utilisateurs.

  3. Cliquez sur votre User name (Nom d'utilisateur).

  4. Cliquez sur Security Credentials (Informations d'identification de sécurité).

  5. Cliquez sur Create Access Key (Créer une clé d'accès).

  6. Cliquez sur Télécharger le fichier .csv pour créer un fichier accessKeys.csv sur votre système local.

  7. Cliquez sur Fermer.

  8. Dans Cloud Shell, cliquez sur Plus (), puis sur Importer un fichier pour importer votre fichier d'identifiants dans le répertoire d'accueil (~).

  9. Sélectionnez le fichier accessKeys.csv que vous avez téléchargé, puis cliquez sur Ouvrir pour l'importer.

  10. Créez le fichier ~/.aws/credentials_autonetdeploy à l'aide du script fourni :

    ./aws_set_credentials.sh ~/accessKeys.csv
    

    Résultat :

    Created ~/.aws/credentials_autonetdeploy.

Configurer le projet

Dans cette section, vous pointez les modèles de déploiement sur le projet.

Google Cloud propose plusieurs façons de désigner le projet Google Cloud qui sera utilisé par les outils d'automatisation. Par souci de simplicité, au lieu d'extraire l'ID de projet de l'environnement, le projet Google Cloud est explicitement identifié par une variable de chaîne dans les fichiers de modèle.

  1. Définissez l'ID du projet Google Cloud. Remplacez [YOUR_PROJECT_ID] par l'ID de votre projet Google Cloud.

    gcloud config set project [YOUR_PROJECT_ID]

    Résultat :

    Updated property [core/project].
    
  2. Utilisez le script fourni pour mettre à jour la valeur du projet dans vos fichiers de configuration destinés à Deployment Manager et Terraform.

    ./gcp_set_project.sh
    

    Résultat :

    Updated project_id: gcp-automated-networks in ~/autonetdeploy-startup/deploymentmanager/autonetdeploy_config.yaml.
    Updated gcp_project_id in ~/autonetdeploy-startup/terraform/terraform.tfvars.
    
  3. Examinez les deux fichiers mis à jour pour vérifier que la valeur [PROJECT_ID] a bien été insérée dans deploymentmanager/autonetdeploy_config.yaml et terraform/terraform.tfvars.

  4. Exécutez la commande unique terraform init pour installer les fournisseurs Terraform pour ce déploiement.

    pushd ./terraform && terraform init && popd > /dev/null
    

    Résultat :

    Initializing provider plugins...
    - Checking for available provider plugins on https://releases.hashicorp.com...
    - Downloading plugin for provider "google" (0.1.3)...
    Terraform has been successfully initialized!
  5. Vérifiez les identifiants en exécutant la commande Terraform plan. Si vous ne voyez aucun texte d'erreur rouge, l'authentification fonctionne correctement.

    pushd ./terraform && terraform plan && popd > /dev/null
    

    Résultat :

    Refreshing Terraform state in-memory prior to plan...
    ...
    +google_compute_instance.gcp-vm
    ...
    Plan: 1 to add, 0 to change, 0 to destroy.
    

Utiliser des clés SSH pour se connecter à des instances de VM

Dans Google Cloud, Cloud Console et l'outil gcloud fonctionnent en arrière-plan pour gérer les clés SSH. Utilisez la commande ssh pour communiquer avec vos instances Compute Engine sans générer ni importer de fichiers de clés.

Pour ce qui est de vos exercices multicloud, vous avez besoin d'une paire de clés publiques/privées pour vous connecter aux instances de VM dans Amazon Elastic Compute Cloud (EC2).

Générer une paire de clés

  1. Dans Cloud Shell, utilisez ssh-keygen pour générer une nouvelle paire de clés. Remplacez [USERNAME] par vos informations de connexion Google Cloud. Si vous ne connaissez pas votre nom d'utilisateur, utilisez le résultat de la commande whoami dans Cloud Shell en tant que [USERNAME]. Dans le contexte de ces tutoriels, vous pouvez utiliser une phrase secrète nulle.

    ssh-keygen -t rsa -f ~/.ssh/vm-ssh-key -C [USERNAME]
    

    Résultat :

    Generating public/private rsa key pair.
    ...
    
  2. Limitez l'accès à votre clé privée. C'est là une bonne pratique à suivre.

    chmod 400 ~/.ssh/vm-ssh-key
    

Importer la clé publique dans Google Cloud

Importez la clé publique en utilisant l'une des deux méthodes suivantes :

  1. Dans Cloud Shell, enregistrez votre clé publique avec Google Cloud :

    gcloud compute config-ssh --ssh-key-file=~/.ssh/vm-ssh-key
    

    Résultat :

    Updating project ssh metadata...done.

    Vous pouvez ignorer l'avertissement No host aliases were added..., car la commande tente également de mettre à jour les instances de VM Compute Engine, mais aucune instance n'a encore été créée.

  2. Dans Cloud Console, ouvrez la page Métadonnées de votre projet.

    Ouvrir la page "Métadonnées"

  3. Cliquez sur Clés SSH. Vous devrez peut-être cliquer sur Ajouter des clés SSH si aucune clé n'a été créée. Vous pouvez également cliquer sur Modifier et Ajouter un élément pour modifier les métadonnées.

  4. Copiez la chaîne de données de la clé depuis la page en utilisant les commandes ci-après. La chaîne est au format ssh-rsa [KEY_DATA] [USERNAME]. Google Cloud s'attend à ce que vous saisissiez la chaîne entière. Si vous n'incluez pas la chaîne entière, le texte d'erreur suivant est affiché : Invalid key.

    cat ~/.ssh/vm-ssh-key.pub
    

    Résultat :

    ssh-rsa [KEY_DATA] [USERNAME]
  5. Cliquez sur Save.

    Vous pouvez désormais utiliser la commande ssh de Cloud Shell pour vérifier l'accès aux instances de VM créées. Sachez que vous utilisez une clé à l'échelle du projet et qu'elle peut donner accès à toutes les instances de VM du projet.

    ssh -i ~/.ssh/vm-ssh-key [EXTERNAL_IP]

    Pour déboguer, ajoutez -v à la commande ssh.

Importer la clé publique dans AWS

Vous pouvez réutiliser le fichier de clé publique généré avec Google Cloud.

  1. Pour télécharger le fichier de clé publique depuis Cloud Shell, cliquez sur Plus (), puis sélectionnez Télécharger un fichier.
  2. Saisissez le chemin d'accès complet (comme auparavant, remplacez [USERNAME]) :

    /home/[USERNAME]/.ssh/vm-ssh-key.pub
    
  3. Cliquez sur Télécharger.

  4. Depuis la console AWS Management Console, accédez au tableau de bord EC2 Dashboard, et sous NETWORK & SECURITY (RÉSEAU ET SÉCURITÉ), cliquez sur Key Pairs (Paires de clés).

  5. Cliquez sur Import Key Pair (Importer une paire de clés).

  6. Cliquez sur Choose File (Sélectionner un fichier).

  7. Sélectionnez vm-ssh-key.pub, puis cliquez sur Ouvrir.

  8. Vérifiez que le contenu est au format attendu : ssh-rsa [KEY_DATA] [USERNAME].

  9. Cliquez sur Importer.

Vous pouvez désormais voir l'entrée AWS pour la valeur vm-ssh-key. Vous pouvez référencer cette clé dans les paramètres de configuration, ce qui vous permettra d'utiliser la commande ssh pour y accéder.

Lorsque vous utilisez la commande ssh pour vous connecter à des instances AWS, AWS se comporte différemment de Google Cloud. Pour AWS, vous devez fournir un nom d'utilisateur générique accepté par le fournisseur AMI. Dans ce tutoriel, le fournisseur AMI attend ubuntu comme utilisateur.

ssh -i ~/.ssh/vm-ssh-key ubuntu@[AWS_INSTANCE_EXTERNAL_IP]

Vous disposez désormais d'un environnement dans lequel vous pouvez facilement déployer des ressources sur le cloud à l'aide d'outils automatisés. Utilisez cet environnement pour suivre l'un des tutoriels de déploiement réseau automatisé de cette série.

Nettoyer

Ce tutoriel ne génère aucune ressource payante, et vous n'avez donc aucun nettoyage à effectuer.

Étapes suivantes

  • Essayez les autres tutoriels de cette série.

    Commencez le tutoriel intitulé Déploiement réseau automatisé : Tutoriel de démarrage, qui vous explique comment utiliser Deployment Manager et Terraform pour déployer une instance de VM dans le réseau par défaut sur GCP.

  • Apprenez-en plus sur Deployment Manager et Terraform.

  • Apprenez-en plus sur la configuration avancée de gcloud.

    Si vous souhaitez utiliser plusieurs ensembles d'identifiants d'authentification, c'est possible avec gcloud par le biais de configurations. Découvrez comment créer des configurations nommées avec des comptes d'authentification distincts et comment basculer entre elles à l'aide de gcloud.

  • Découvrez des architectures de référence, des schémas, des tutoriels et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.