


Comment déployer des applications sans effort avec Packer et Terraform
Feb 16, 2025 pm 01:12 PM
packer et terraform: un outil puissant pour le déploiement efficace DevOps
Cet article explique comment utiliser le packer Open Source DevOps Tools et Terraform pour collaborer à la construction et à la gestion des infrastructures pour réaliser un déploiement d'applications efficace.
Points de base:
- Une combinaison de packer et de terraform: Packer est utilisé pour créer des images de machine contenant le logiciel et la configuration requis, tandis que Terraform utilise ces images pour créer une infrastructure réelle (telles que les serveurs ou les conteneurs).
- DevOps Practice: Prendre la construction d'applications PHP à titre d'exemple, l'article démontre le processus complet de l'utilisation de Packer pour construire des images et déployer des infrastructures avec Terraform, simplifiant efficacement la gestion du cycle de version, les mises à jour des infrastructures et l'amélioration de la disponibilité du système.
- Défis et avantages: Packer et Terraform, bien que puissant et flexible, nécessitent également une certaine quantité de connaissances techniques pour être utilisées efficacement et nécessitent une gestion minutieuse des fichiers de configuration et des fichiers d'état, qui peuvent se compliquer dans les grands déploiements. Cependant, ils ont encore des avantages importants à gagner du temps, à réduire les erreurs et à améliorer la stabilité du déploiement.
Alibaba Cloud a publié un merveilleux livre blanc sur DevOps, qui déclare: "DevOps ne consiste pas seulement à mettre en ?uvre simplement des principes agiles pour gérer les infrastructures, John Willis et Damon Edwards utilisent des cames (culture, automatisation, mesure et partage) pour définir DevOps. DevOps est con?u pour faciliter la collaboration entre les équipes de développement et d'opération. Mais la pratique DevOps ne se limite pas aux grandes entreprises, et les développeurs peuvent facilement l'intégrer dans leur travail quotidien. Ce tutoriel montre comment orchestrer facilement l'intégralité du processus de déploiement en utilisant uniquement un petit nombre de fichiers de configuration et exécuter des applications sur les instances Alibaba Cloud Elastic Computing Services (ECS).
Introduction du packer:
Packer est un outil Open Source DevOps développé par Hashicorp. Le logiciel est compatible multiplateforme et peut créer plusieurs images en parallèle. L'installation utilisant Homebrew est très simple: brew install packer
. Packer crée des images "prêtes à l'emploi" contenant le logiciel supplémentaire requis par le système d'exploitation et les applications, tout comme la création d'une distribution personnalisée. Par exemple, vous pouvez facilement créer une image Debian contenant une application PHP personnalisée.
Introduction à Terraform:
Le déploiement se compose de deux taches principales: l'emballage de l'application dans le bon environnement (création d'une image) et la création de l'infrastructure (serveur) qui exécute l'application. Terraform provient également de Hashicorp, basé sur les mêmes principes que Packer, vous permettant de créer une infrastructure dans Alibaba Cloud en utilisant un seul profil de format TF, qui facilite le contr?le de version et a une compréhension claire du fonctionnement de l'application sous-jacente. Pour l'installation de Terraform et la configuration du fournisseur officiel du cloud Alibaba, veuillez vous référer à d'autres articles connexes.
cible:
Ce didacticiel créera et déploiera des applications PHP simples dans DevOps, couvrant tout, de l'exécution du logiciel à l'infrastructure de support.
étape:
Pour simplifier le processus, nous créerons une application basée sur la composition Docker pour obtenir des données météorologiques Metar à partir de l'aéroport (en utilisant le code de l'aéroport de l'OACI et en obtenant des données du US National Weather Service). Nous allons ensuite créer l'image à l'aide d'Ubuntu et Packer et déployer l'infrastructure à l'aide de cette image et Terraform.
Application PHP:
Pour plus de commodité, nous fournissons une application standard. Vous pouvez afficher le code source (y compris index.php, 2 fichiers JavaScript pour le décodage des données Metar, une petite quantité de CSS et une image PNG). L'application est basée sur Docker-Compose, que nous installerons en tant que dépendance à l'aide de Packer plus tard.
Créer des images avec Packer:
Créez un dossier nommé ~ / metar-app sur votre ordinateur, puis accédez à ce dossier et créez un fichier nommé meta-build.json, comme suit:
{ "variables": { "access_key": "{{env `ALICLOUD_ACCESS_KEY`}}", "region": "{{env `ALICLOUD_REGION`}}", "secret_key": "{{env `ALICLOUD_SECRET_KEY`}}" }, "builders": [ { "type": "alicloud-ecs", "access_key": "{{user `access_key`}}", "secret_key": "{{user `secret_key`}}", "region":"{{user `region`}}", "image_name": "metar_app", "source_image": "ubuntu_16_0402_64_20G_alibase_20180409.vhd", "ssh_username": "root", "instance_type": "ecs.t5-lc1m1.small", "internet_charge_type": "PayByTraffic", "io_optimized": "true" } ], "provisioners": [ { "type": "shell", "script": "base-setup" } ] }
Dans le même répertoire, créez un fichier nommé Base-Settup, avec le contenu suivant:
#!/usr/bin/env bash apt-get update && apt-get install -y apt-transport-https ca-certificates curl git-core software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update && apt-get install -y docker-ce docker-compose curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose mkdir /var/docker git clone https://github.com/roura356a/metar.git /var/docker/metar
Lorsque vous préparez ces deux fichiers, exécutez packer build metar-build.json
et attendez qu'ils se terminent. Notez que pour que cela prenne effet, vous devez définir trois variables d'environnement dans votre ordinateur: ALICLOUD_REGION
, ALICLOUD_ACCESS_KEY
et ALICLOUD_SECRET_KEY
. Cette étape prend un certain temps car elle crée une instance ECS, installe tous les logiciels dessus, puis arrête l'instance, crée un instantané de son et crée enfin une image de l'ensemble du système. Une fois l'image créée, Packer sortira ==> Builds finished
.
Déployer l'infrastructure avec Terraform:
Maintenant, dans le même dossier, créez un fichier nommé main.tf, avec le contenu suivant:
provider "alicloud" {} data "alicloud_images" "search" { name_regex = "metar_app" } data "alicloud_instance_types" "search" { instance_type_family = "ecs.xn4" cpu_core_count = 1 memory_size = 1 } data "alicloud_security_groups" "search" {} data "alicloud_vswitches" "search" {} resource "alicloud_instance" "app" { instance_name = "metar_app" image_id = "${data.alicloud_images.search.images.0.image_id}" instance_type = "${data.alicloud_instance_types.search.instance_types.0.id}" vswitch_id = "${data.alicloud_vswitches.search.vswitches.0.id}" security_groups = [ "${data.alicloud_security_groups.search.groups.0.id}" ] internet_max_bandwidth_out = 100 password = "Test1234!" user_data = "${file("user-data")}" } output "ip" { value = "${alicloud_instance.app.public_ip}" }
Dans le même répertoire, créez un fichier nommé des données utilisateur, avec le contenu suivant:
#!/usr/bin/env bash cd /var/docker/metar && docker-compose up -d
Maintenant, votre structure de fichiers devrait ressembler à ceci:
<code>metar_app/ ├── metar-build.json ├── base-setup ├── main.tf └── user-data</code>
Exécutez terraform init
, puis exécutez terraform plan
pour vérifier si tout est normal, et enfin exécuter terraform apply
pour démarrer le processus de déploiement.
Une fois l'infrastructure construite, Terraform publiera l'adresse IP de l'instance ECS nouvellement créée, par exemple: 111.111.111.111.111.
Test:
Si tout se passe bien, vous pouvez consulter le dernier rapport météo pour l'aéroport de San Sebastian (situé dans le nord de l'Espagne avec de beaux itinéraires d'entrée).
Résumé:
Vous n'avez presque aucun effort pour terminer le déploiement complet de DevOps de votre demande. Cela simplifiera considérablement le cycle de libération de maintenance, les mises à jour de l'infrastructure et améliorera la disponibilité du système sans avoir à traiter directement les commandes Host et Linux.
Des questions fréquemment posées sur Packer et Terraform:
- Quelle est la principale différence entre Packer et Terraform? Packer est utilisé pour créer les mêmes images de machine sur plusieurs plates-formes, tandis que Terraform est utilisé pour construire, modifier et contr?ler les infrastructures de contr?le de version en toute sécurité et efficacement.
- Comment fonctionne Packer en conjonction avec Terraform? Packer crée des images de machine et Terraform utilise ces images pour créer une infrastructure.
- Quand est-il configuré dans Packer et quand est-il configuré dans Terraform? La configuration dans Packer est généralement utilisée pour installer et configurer les logiciels dans les images de la machine (avant la création de l'infrastructure), tandis que la configuration dans Terraform est généralement utilisée pour effectuer des taches après la création de l'infrastructure.
- Pouvez-vous utiliser Packer sans terraform? Oui.
- Comment déployer une application à l'aide de Packer et Terraform? Créez d'abord une image de machine à l'aide de Packer, puis Terraform utilise cette image pour créer une infrastructure, et enfin déployer l'application sur le serveur ou le conteneur nouvellement créé.
- Quels sont les avantages de l'utilisation de Packer et Terraform pour le déploiement des applications? Automatisation, gagner du temps, réduire les erreurs, améliorer la fiabilité et la stabilité, prendre en charge plusieurs plateformes et fournisseurs de services.
- Quelles sont les limites et les défis de l'utilisation de Packer et Terraform? Certaines connaissances techniques sont requises, les fichiers de configuration et les fichiers d'état doivent être gérés avec prudence, et toutes les plateformes ou fournisseurs ne prennent pas en charge toutes les fonctionnalités et options.
- Comment démarrer avec Packer et Terraform? Installez l'outil et créez le fichier de configuration.
- Packer et Terraform peuvent-ils être utilisés avec d'autres outils DevOps? Oui.
- Quelles sont les meilleures pratiques pour utiliser Packer et Terraform? Garder les fichiers de configuration simples et modulaires, utiliser le contr?le de version, tester et vérifier régulièrement les configurations, utiliser des conventions de dénomination cohérentes, des configurations de documents et des paramètres d'infrastructure.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Lors du développement de plateformes d'apprentissage similaires à Udemy, l'accent n'est pas seulement mis sur la qualité du contenu. Tout aussi important est la fa?on dont ce contenu est livré. En effet, les plateformes éducatives modernes reposent sur des médias accessibles, rapides et faciles à digérer.

Dans un monde où la confiance en ligne n'est pas négociable, les certificats SSL sont devenus essentiels pour chaque site Web. La taille du marché de la certification SSL était évaluée à 5,6 milliards USD en 2024 et se développe toujours fortement, alimentée par la montée en puissance du commerce électronique

Une passerelle de paiement est un élément crucial du processus de paiement, permettant aux entreprises d'accepter les paiements en ligne. Il agit comme un pont entre le client et le marchand, transférant en toute sécurité les informations de paiement et facilitant les transactions. Pour

Dans ce qui semble encore un autre revers pour un domaine où nous pensions que les humains dépasseraient toujours les machines, les chercheurs proposent maintenant que l'IA comprend mieux les émotions que nous.

Un nouveau modèle d'intelligence artificielle (IA) a démontré la capacité de prédire les principaux événements météorologiques plus rapidement et avec une plus grande précision que plusieurs des systèmes de prévision mondiaux les plus utilisés. Ce modèle, nommé Aurora, a été formé u

L'intelligence artificielle (IA) a commencé comme une quête pour simuler le cerveau humain, est-ce maintenant en train de transformer le r?le du cerveau humain dans la vie quotidienne? La révolution industrielle a réduit la dépendance à l'égard du travail manuel. En tant que personne qui fait des recherches sur l'application

Qu'on le veuille ou non, l'intelligence artificielle fait partie de la vie quotidienne. De nombreux appareils - y compris les rasoirs électriques et les brosses à dents - sont devenus alimentés par l'IA, "en utilisant des algorithmes d'apprentissage automatique pour suivre comment une personne utilise l'appareil, comment le Devi

Les modèles d'intelligence artificielle (IA) peuvent menacer et faire chanter les humains lorsqu'il existe un conflit entre les objectifs du modèle et les décisions des utilisateurs, selon une nouvelle étude.
