Maison > Périphériques technologiques > Industrie informatique > Comment déployer des applications sans effort avec Packer et Terraform

Comment déployer des applications sans effort avec Packer et Terraform

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-16 13:12:44
original
1009 Les gens l'ont consulté

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"
    }
  ]
}
Copier après la connexion

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
Copier après la connexion

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}"
}
Copier après la connexion

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
Copier après la connexion

Maintenant, votre structure de fichiers devrait ressembler à ceci:

<code>metar_app/
├── metar-build.json
├── base-setup
├── main.tf
└── user-data</code>
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal