recherche
MaisonPériphériques technologiquesIndustrie informatiqueComment déployer des applications sans effort avec Packer et Terraform

How to Deploy Apps Effortlessly with Packer and Terraform

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 tâches 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 tâches 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!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Top 21 newsletters du développeur auquel s'abonner en 2025Top 21 newsletters du développeur auquel s'abonner en 2025Apr 24, 2025 am 08:28 AM

Restez informé des dernières tendances technologiques avec ces meilleurs bulletins de développeur! Cette liste organisée offre quelque chose pour tout le monde, des amateurs d'IA aux développeurs assaisonnés du backend et du frontend. Choisissez vos favoris et gagnez du temps à la recherche de rel

Pipeline de traitement d'image sans serveur avec AWS ECS et LambdaPipeline de traitement d'image sans serveur avec AWS ECS et LambdaApr 18, 2025 am 08:28 AM

Ce tutoriel vous guide dans la création d'un pipeline de traitement d'image sans serveur à l'aide de services AWS. Nous allons créer un frontend Next.js déployé sur un cluster ECS Fargate, en interagissant avec une passerelle API, des fonctions lambda, des seaux S3 et DynamoDB. Ème

Pilote CNCF ARM64: impact et perspectivesPilote CNCF ARM64: impact et perspectivesApr 15, 2025 am 08:27 AM

Ce programme pilote, une collaboration entre le CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal et ACTUTIE, rationalise ARM64 CI / CD pour les projets GitHub CNCF. L'initiative répond aux problèmes de sécurité et aux performances LIM

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP