DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Comment utiliser Terraform pour provisionner une instance AWS EC2
    Uncategorized

    Comment utiliser Terraform pour provisionner une instance AWS EC2

    janvier 24, 2023
    Comment utiliser Terraform pour provisionner une instance AWS EC2
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Terraform est un outil de déploiement que vous pouvez utiliser pour provisionner et gérer votre infrastructure en tant que code. Habituellement, l’infrastructure est basée sur le cloud, mais Terraform peut gérer tout ce qui peut être contrôlé via une API.

    Mais pourquoi devriez-vous considérer infrastructure en tant que code (IaC) en premier lieu ?

    IaC permet d’éviter certains pièges courants lors du déploiement. La gestion de votre infrastructure à l’aide d’un code spécial ouvre la porte à l’automatisation. Ça aussi crée une approche solide axée sur les versions à une infrastructure similaire au code d’application normal.

    Dans ce tutoriel, je vais passer par chaque étape de l’utilisation Terraform pour provisionner une instance AWS EC2.

    1. Comment fonctionne Terraform

    Si vous avez déjà déployé un logiciel, vous savez l’importance de répétabilité et cohérence dans la configuration de votre infrastructure. Vous ne voulez pas vous soucier des changements d’environnement lorsque vous déployez un logiciel un vendredi soir.

    Terraform fait le provisionnement de l’infrastructure répétable et cohérent sur les plates-formes de cloud public, privé et hybride.

    Le principe de base de Terraform est que vous écrivez code de configuration lisible par l’homme pour définir votre infrastructure. Une fois que vous avez le code, vous demandez à Terraform de déployer l’infrastructure à l’aide d’une seule commande.

    L’illustration ci-dessous décrit le fonctionnement de Terraform à un niveau élevé.

    Terraform de haut niveau

    Terraform de haut niveau

    La réponse est Terraforme fournisseurs. Les fournisseurs sont essentiellement des plugins pour Terraform qui sont conçus pour communiquer avec des API externes. Ils sont écrits en gOops et distribué par le Registre Terraform.

    Un fournisseur agit en tant que intermédiaire entre Terraform et la plateforme. Il gère un tas de choses différentes telles que:

    • Logique d’authentification
    • Faire des requêtes API
    • Gestion des timeouts et des erreurs

    Chaque fournisseur de cloud maintient son propre fournisseur Terraform, et à ce stade, il existe des centaines de fournisseurs publiés disponibles sur le Registre Terraform. Vous pouvez également écrire votre propre fournisseur Terraform.

    Consultez l’illustration ci-dessous.

    Fournisseurs Terraform

    Fournisseurs Terraform

    2. Fichier de configuration de l’instance AWS EC2 Terraform

    Voyons comment provisionner une instance AWS EC2 à l’aide de Terraform.

    L’illustration ci-dessous décrit le processus global :

    Terraform EC2

    Terraform EC2

    $ mkdir terraform-aws-ec2-demo
    $ cd terraform-aws-ec2-demo
    

    Dans le répertoire, créez le main.tf fichier pour écrire la configuration initiale de Terraform. Voir ci-dessous.

    provider "aws" {
        region = "us-west-2"
        profile = "terraform-user"
    }
    
    resource "aws_instance" "hello_aws" {
        ami = "ami-0ceecbb0f30a902a6"
        instance_type = "t2.micro"
        tags = {
            Name = "HelloAWS"
        }
    }
    

    Au cas où vous vous poseriez la question, la configuration est écrite à l’aide d’un langage appelé HCL ou alors Langage de configuration Hashicorp. Le langage est lisible par l’homme (encore plus que JSON) et constitue le cœur de Terraform.

    Le code lui-même est assez simple à comprendre.

    Le bloc fournisseur Terraform AWS

    Le premier bloc configure le fournisseur.

    provider "aws" {
        region = "us-west-2"
        profile = "terraform-user"
    }
    

    Les fournisseurs n’ont qu’un seul label : Name. Il doit s’agir du nom officiel du fournisseur tel que publié dans le registre Terraform. Dans notre exemple, la valeur est “aws” pour le fournisseur AWS. Le fournisseur AWS est chargé de comprendre les interactions API et de faire des demandes authentifiées.

    Vous devez configurer un fournisseur en transmettant certaines entrées au provider bloc. Par exemple, définissez le region pour us-west-2. Demandez également au fournisseur d’utiliser le profil pour terraform-user. Étant donné que les API AWS nécessitent une authentification, vous devrez créer un utilisateur IAM, générer des informations d’identification à partir de la console AWS et définir ces informations d’identification avec l’AWS CLI de votre système local.

    Pour cette démo, terraform-user est l’utilisateur IAM que j’ai créé pour gérer nos ressources Terraform. Vous pouvez en savoir plus sur la définition des informations d’identification AWS.

    Le bloc de ressources Terraform AWS

    Le bloc suivant dans le main.tf Le fichier décrit la ressource que vous souhaitez provisionner, c’est-à-dire l’instance EC2.

    resource "aws_instance" "hello_aws" {
        ami = "ami-0ceecbb0f30a902a6"
        instance_type = "t2.micro"
        tags = {
            Name = "HelloAWS"
        }
    }
    

    Ce bloc de code EC2 est un exemple de Ressource Terraform. Les ressources sont sans aucun doute les éléments les plus importants de Terraform car elles sont directement responsables de l’approvisionnement de l’infrastructure.

    Un bloc de ressources a deux étiquettes. La première étiquette précise le type de ressource et le second est le nom de la ressource. Pour cet exemple, le type de ressource est aws_instance et le nom est “hello_aws”. Le nom n’a pas de signification particulière et n’est utilisé que pour référencer la ressource dans la portée du module. Bien sûr, le type et le nom deviennent ensemble un identifiant de ressource unique.

    Chaque ressource prend des entrées. Dans ce cas, les entrées sont :

    • ID AMI : Il s’agit de l’ID AMI qui doit être utilisé pour créer l’instance EC2. Au cas où vous vous poseriez la question, il s’agit de l’AMI pour Amazon Linux. Vous pouvez, bien sûr, personnaliser ces paramètres à l’aide des sources de données Terraform.
    • Type d’instance : Il s’agit du type d’instance. Je recommande d’utiliser t2.micro instance disponible dans l’offre gratuite.
    • Mots clés: Il s’agit de propriétés de valeur-clé spéciales que vous pouvez associer à l’instance.

    La ressource a également des sorties qui sont générées après que Terraform a provisionné l’infrastructure nécessaire. En fait, les arguments d’entrée finissent également comme attributs de sortie. Cependant, Terraform attache également de nouveaux attributs de sortie tels que le identifiant de la ressource créée.

    3. Initialisation du fournisseur Terraform

    Avant que Terraform puisse déployer notre instance EC2, vous devez initialiser l’espace de travail. Cela signifie que vous devez télécharger et installer le Fichier binaire du fournisseur AWS du registre Terraform. Ceci est nécessaire au moins une fois pour chaque espace de travail.

    Pour initialiser l’espace de travail, exécutez la commande terraform init.

    Vous devriez voir une sortie comme celle-ci :

    Initializing the backend...
    
    Initializing provider plugins...
    - Finding latest version of hashicorp/aws...
    - Installing hashicorp/aws v4.48.0...
    - Installed hashicorp/aws v4.48.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!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
    

    Terraform récupère la dernière version du fournisseur AWS et l’installe dans l’espace de travail.

    À ce stade, vous trouverez un dossier supplémentaire .terraform popup dans votre espace de travail. Celui-ci contient le binaire téléchargé pour le fournisseur AWS.

    De plus, Terraform crée un fichier de verrouillage .terraform.lock.hcl pour enregistrer les sélections du fournisseur. Il est recommandé d’inclure ce fichier dans le référentiel de contrôle de version afin que Terraform puisse effectuer les mêmes sélections par défaut lorsque vous exécutez terraform init à l’avenir.

    4. Déploiement de l’instance AWS EC2 à l’aide de Terraform

    Une fois l’initialisation réussie, vous êtes prêt à déployer l’instance EC2 à l’aide de Terraform. Exécutez le terraform apply commande et répondez « oui » à l’invite de confirmation.

    Vous devriez voir une sortie similaire une fois le provisionnement terminé.

    aws_instance.hello_aws: Creating...
    aws_instance.hello_aws: Still creating... [11s elapsed]
    aws_instance.hello_aws: Still creating... [21s elapsed]
    aws_instance.hello_aws: Still creating... [31s elapsed]
    aws_instance.hello_aws: Creation complete after 37s [id=i-033fd8432fb59ff37]
    
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    

    Vous pouvez également vérifier la nouvelle instance dans la console AWS. L’instance est créée dans le us-west-2a région comme spécifié dans le fichier de configuration Terraform.

    Terraform a créé une instance EC2

    Terraform a créé une instance EC2

    À ce stade, vous trouverez également un fichier nommé terraform.tfstate créé dans votre répertoire de projet.

    Il s’agit essentiellement d’un fichier JSON qui décrit les ressources gérées par Terraform. Vous pouvez afficher le contenu du fichier dans un format lisible par l’homme en exécutant terraform show commande. Fondamentalement, ce fichier est utilisé par Terraform pour suivre l’infrastructure qu’il gère.

    Bien sûr, il s’agit d’une instance simple et nous n’avons rien déployé sur l’instance. Vous pouvez également utiliser Terraform pour déployer un serveur Web Nginx sur une instance EC2.

    5. Destruction de l’instance Terraform AWS EC2

    Détruire l’infrastructure gérée par Terraform est aussi simple que d’exécuter le terraform destroy commande.

    Cette commande demande également une confirmation, et si vous répondez « oui », Terraform continue et détruit l’instance EC2 créée dans la section précédente. Je vous recommande de le faire si vous n’avez pas besoin de l’infrastructure pour continuer à fonctionner.

    Conclusion

    Terraform est un outil de provisionnement IaC déclaratif qui permet de déployer des ressources sur n’importe quel cloud public ou privé.

    Dans cet article, vous avez vu à quel point il facilite le processus de déploiement d’une instance EC2 sur AWS. Tout ce que vous aviez à faire était de créer un fichier de configuration et de le transmettre à Terraform en utilisant terraform apply commande.

    Le code de cet article est disponible sur GitHub pour référence.

    Si vous avez trouvé ce message utile, pensez à le partager avec vos amis et collègues. De plus, en cas de questions, veuillez les écrire dans la section des commentaires ci-dessous.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.