Maison > développement back-end > tutoriel php > Packer de Hashicorp - est-ce quelque chose pour les développeurs PHP?

Packer de Hashicorp - est-ce quelque chose pour les développeurs PHP?

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-10 16:02:09
original
308 Les gens l'ont consulté

Packer: un outil puissant dans la boîte à outils de développeur PHP? C'est à vous!

Hashicorp's Packer - Is It Something for PHP Developers?

Hashicorp's Packer - Is It Something for PHP Developers?

En bref: En tant que développeur PHP, Packer est-il un outil essentiel dans votre boîte à outils? La réponse dépend de ce que vous travaillez.

Si vous êtes impliqué dans le travail côté serveur (pour les clients ou les entreprises) et effectuez des travaux de développement en même temps, la réponse est oui. Packer peut vous aider beaucoup.

Mais si vous n'êtes qu'un développeur et que vous traitez rarement le travail côté serveur directement, Packer ne vous aidera pas beaucoup.

Même ainsi, l'apprentissage des bases de la création d'un environnement de serveur sera très avantageux pour tout développeur PHP. Vous rencontrerez ces technologies plus ou moins tout au long de votre carrière (tout ce que vous créez en est en plus!). La maîtrise de cette expertise améliorera sans aucun doute vos perspectives de carrière! Au moins, vous comprendrez mieux le travail des collègues de DevOps.

Si vous êtes intéressé par cela, ou si vous faites souvent un travail manuel côté serveur, veuillez continuer à lire.

Hashicorp's Packer - Is It Something for PHP Developers?

Points clés:

  • Applicabilité des packer: Packer est particulièrement utile pour les développeurs PHP qui sont impliqués dans les tâches de gestion des serveurs et de développement, ce qui permet de simplifier la création d'un environnement de serveur cohérent.
  • Autonomie de développement: les progrès de la technologie informatique moderne permettent aux développeurs de gérer les environnements de développement complexes directement sur leurs appareils personnels, améliorant ainsi l'autonomie et améliorant la cohérence entre les environnements de développement et de production.
  • Intégration avec Vagrant: Packer et Vagrant améliorent l'environnement de développement, mais la fonctionnalité unique de Packer est de créer automatiquement des images de machine qui peuvent être utilisées sur diverses plates-formes, ce qui permet un temps de réglage de l'environnement.
  • DevOps Collaboration: Packer offre aux professionnels DevOps des outils pour fournir aux équipes de développement un environnement aligné sur la production, simplifiant les processus de développement et réduisant les erreurs de configuration.
  • Action pratique: cet article fournit un tutoriel pratique sur la configuration de Packer et l'utiliser pour créer des images de machine virtuelle, démontrant la capacité de Packer à gérer efficacement les tâches de configuration complexes.
  • Développement futur: Apprendre à utiliser des outils tels que Packer peut non seulement répondre aux besoins actuels du projet, mais également préparer les développeurs à l'intégration technique et à la collaboration avec différentes équipes à l'avenir.

en regardant en arrière:

En bref # 2: Si vous maîtrisez Vagrant et comprenez son objectif en tant qu'outil, veuillez passer à cette partie de cet article.

Il y a à peine dix ans, le développement d'applications PHP était essentiellement comme ceci: le développeur a téléchargé un code sur le serveur Web via FTP, puis a vérifié si cela a fonctionné. Si cela ne fonctionne pas, ils dépannent, apportent des modifications à un éditeur de texte, rechargez à nouveau le fichier affecté via FTP, puis voyez si les modifications résolvent le problème. Si c'est le cas, ils passeront à la fonction ou au problème suivant, répétant le processus (et prieront pour qu'il n'y ait aucune erreur dans le travail qu'ils viennent de terminer). Ils peuvent également faire une certaine synchronisation FTP.

Il s'agit du flux de travail d'un développeur PHP indépendant moyen à l'époque pour pousser le code vers un serveur de développement (ou pire, directement vers un serveur de production) (en fait, certains développeurs utilisent toujours le même processus aujourd'hui). À l'époque, la construction d'un serveur Web lui-même était généralement le travail de quelqu'un d'autre.

De plus, en ce pas trop loin, pour que l'équipe de développement travaille ensemble, il pourrait y avoir une forme de système de contrôle de version simultané, et l'équipe peut même mettre en place un déploiement automatique. Lorsque des modifications sont engagées dans le référentiel, il est automatiquement déployé dans le système de mise en scène ou de production. Cette situation était en fait la meilleure technologie pour le développement d'applications Web à l'époque.

Dans ces merveilleux anciens, le terme intégration continue, les machines virtuelles, le cloud computing, l'orchestration des infrastructures, l'automatisation du centre de données et même les "DevOps" sont fondamentalement inconnus. Ils viennent de naître. Amazon vient de démarrer leur entreprise de services Internet. Rappelez-vous, c'était il y a seulement dix ans!

ah, à quel point le temps était simple, non?

Non, ce n'est pas le cas. À cette époque, le développement était plus lent, plus lourd et plus sujet aux erreurs. Les serveurs doivent également toujours être "activés" pour les tests, ce qui signifie généralement que les développeurs doivent attendre que le "Networker" dispose d'un serveur prêt à l'emploi, tel que la dernière version PHP. Dans de nombreux cas, il s'agit souvent d'une bataille, et pour les "réseauteurs", le maintien du serveur "opéré", c'est comme éteindre un feu.

Hashicorp's Packer - Is It Something for PHP Developers?

calcul et virtualisation aujourd'hui:

Maintenant, avec la technologie informatique à portée de main, les développeurs peuvent transporter une infrastructure de développement plus complexe avec eux. Aujourd'hui, la puissance de calcul des ordinateurs portables ou des PC est bien supérieure à celle des serveurs Web il y a dix ans.

En fait, bon nombre des smartphones que nous avons aujourd'hui sont plus puissants que les serveurs d'il y a dix ans.

Hashicorp's Packer - Is It Something for PHP Developers?

La technologie est incroyable, non?

En tant qu'augmentation de la puissance de calcul disponible, de plus en plus de gens commencent à réaliser que cette puissance de calcul peut être décomposée en "machines" distinctes. Cela leur permet d'effectuer des opérations complètement différentes en même temps. Plus important encore, la puissance de calcul peut être mieux utilisée, économisant ainsi des ressources. Ce sont les principaux moteurs de la virtualisation de la puissance de calcul.

En d'autres termes, aujourd'hui, avec la capacité de créer des machines virtuelles, les développeurs peuvent transporter leur propre environnement de développement avec eux, ne se limitant plus à d'autres personnes qui doivent leur fournir le bon environnement de travail. Plus important encore, ils peuvent créer un environnement de développement complet localement et simuler un serveur Web complet.

Cela rend non seulement les développeurs plus autonomes, mais cet environnement de développement local a un autre avantage énorme: il est appelé "cohérence de production de développement" - nous sommes dans le livre pour les débutants "Jump Start PHP Environment" qui a été discuté en détail. La cohérence du développement-production signifie essentiellement que les développeurs peuvent se développer sur presque les mêmes systèmes que l'application est finalement déployée dans un environnement de production.

Hashicorp's Packer - Is It Something for PHP Developers?

Avantages de cohérence de la production - Il permet aux développeurs d'écrire du code de meilleure qualité car ils peuvent faire la bonne chose de la bonne façon la première fois.

Maintenant, les développeurs peuvent avoir tout ce dont ils ont besoin pour développer des applications très complexes dans leurs sacs à dos, y compris des environnements de développement très complexes.

Évidemment, cette capacité apporte également la complexité. Le serveur virtuel doit être construit et le logiciel doit être installé et configuré. Tout cela peut prendre beaucoup de temps et le temps est de l'argent. Cela signifie également que les développeurs peuvent avoir besoin d'apprendre beaucoup pour gérer un tel environnement. Cela prend également du temps.

l'apparence de vagabond:

Pour aider les développeurs à terminer la "construction" de leur environnement de développement, Hashicorp Inc. a lancé un programme appelé Vagrant. Avec Vagrant, la configuration de l'environnement de développement est un code qui peut être facilement partagé, annulé et ennué. Les développeurs sont libres d'essayer de nouvelles choses, telles que la dernière version de PHP, sans craindre que le serveur puisse prendre des heures à configurer ou que l'échec peut prendre des heures à résoudre. Les développeurs n'ont pas à attendre que quiconque crée cet environnement, et ils ne dérangeront personne si l'environnement se bloque complètement.

En savoir plus sur Vagrant - Réintroduction à Vagrant: la bonne façon d'utiliser PHP

Cependant, il y a encore un autre problème à résoudre. Bien que Vagrant soit idéal pour créer un environnement de développement, il prend du temps à s'exécuter, en particulier avec de nombreuses configurations (voir ci-dessous pour plus d'informations sur la configuration). Selon le logiciel impliqué, il peut prendre entre 2 et 20 minutes pour créer une boîte et configurer le logiciel.

Cette consommation temporelle aggrave également le fait que Vagrant ne peut construire une seule boîte pour un seul système virtualisé (appelé "fournisseurs") à la fois. Par exemple, si vous souhaitez créer votre environnement localement et créer un environnement sur AWS, vous devez créer deux fichiers Vagrant différents et les exécuter séparément. Ce n'est pas vraiment pratique. En bref, Vagrant est très bon pour construire un seul environnement de développement, et c'est tout.

l'apparence de Packer:

Pour continuer, vous devez maintenant jouer plus du rôle DevOps. Packer met la tâche de créer des images de machine virtualisées dans une configuration centrale relativement simple, vous pouvez donc obtenir les mêmes avantages de Vagrant dans des environnements de développement automatisés, mais maintenant il peut également être utilisé pour développer des images de base.

Les images de machines virtuelles sont également appelées périphériques virtuels. Il s'agit d'une copie prédéfinie de la machine virtuelle qui peut être utilisée pour créer une nouvelle machine virtuelle. En termes vagabonds, ces images sont appelées "boîte".

Si vous comprenez le processus de création de votre propre miroir, vous saurez que les opérations manuelles sont très gênantes. Si vous ne le savez pas, vous avez de la chance parce que vous pouvez sauter les tracas de les construire manuellement et maintenant vous pouvez commencer à utiliser Packer. Cependant, vous devez toujours apprendre certaines bases de la construction miroir / serveur. Encore une fois, c'est une connaissance précieuse pour les développeurs et tout développeur devrait prendre le temps d'apprendre les bases.

Une fois que vous commencez à utiliser Packer et que vous utilisez déjà Vagrant, la première question à laquelle vous pensez est: "Quelle est la différence entre Packer et Vagrant?" Nous avons déjà commencé à discuter de certaines des différences ci-dessus. En fin de compte, Packer crée des images que Vagrant peut utiliser pour construire un environnement de développement. Si vous avez déjà utilisé la boîte vague de Hashicorp, il est probable qu'il soit également construit avec Packer.

En tant que personne DevOps utilisant Packer, vous pouvez fournir à l'équipe de développement des images de l'environnement de production qu'ils peuvent facilement développer en utilisant. Cela soutient une fois de plus la cohérence du développement-production et simplifie le processus de développement.

Nous avons déjà mentionné du temps de gagner du temps. Packer peut également construire et déployer ces images en parallèle. Vous pouvez donc créer des images pour différents hôtes, votre cloud privé et Vagrant presque simultanément. De plus, ces miroirs "pré-cuits" commencent beaucoup plus rapidement que les cases configurées dans Vagrant. Beaucoup plus vite! Si votre équipe a été "activée" et détruite des boîtes, des logiciels pré-cuits et des images configurées créées avec Packer gagneront beaucoup de temps à votre équipe.

Le processus Packer rend également la création d'images de base reproductibles. Cela signifie que votre système de production a une meilleure qualité, car la reconstruction d'image des machines virtuelles peut être testée et automatisée à l'avance. En d'autres termes, Packer aide à réduire l'erreur humaine.

Lors de la construction d'un miroir, vous pouvez également contrôler plusieurs sous-processus. Nous en discuterons plus tard. Vous pouvez également en savoir plus sur les concepts et fonctionnalités de Packer dans la documentation Packer. Notez que vous pouvez créer des images pour de nombreuses plates-formes différentes. Vous pouvez également utiliser de nombreux programmes de configuration (tels que Chef, Puppet, Ansible) ou un logiciel de configuration de script shell. Et, vous pouvez faire du post-traitement, comme la création d'une boîte vagabondée ou pousser une image au registre Docker (et bien d'autres).

wow ... il y a trop de théories, n'est-ce pas?

faisons quelque chose de pratique pour aider à clarifier le concept de Packer et comment l'utiliser.

Certains flux de travail des packer:

Il s'agit d'une représentation visuelle de ce que nous allons faire.

Hashicorp's Packer - Is It Something for PHP Developers?

Bien que Packer ne nécessite pas de Vagrant pour créer des images, Vagrant est ajouté au graphique ci-dessus pour vous donner une meilleure compréhension de l'endroit où il se trouve dans le "tuyau".

Pour vous faire commencer à apprendre les bases de Packer, l'objectif de l'exercice suivant est de créer une image qui peut fonctionner sur RackSpace et un fichier VirtualBox "Box". L'objectif est de vous montrer que vous pouvez générer les mêmes images et configurations pour le développement et l'utilisation sur votre serveur de production (théorique).

Nous utilisons Rackspace car il a un backend très simple pour gérer l'infrastructure de calcul, et parce qu'il utilise OpenStack, un système standard pour la gestion des infrastructures.

Nous utilisons également VirtualBox car il s'agit d'un système de virtualisation local libre et largement utilisé. Si vous préférez, vous pouvez utiliser d'autres systèmes tels que AWS et VMware, vous devrez cependant modifier les matériaux fournis dans ce tutoriel car ils sont fabriqués spécifiquement pour les deux systèmes.

Veuillez noter: le serveur virtuel que nous avons construit dans cet article n'est en aucun cas "prêt à la production". Ils sont à des fins de démonstration uniquement.

L'image initiale que nous allons construire avec Packer sera une image Debian Jessie (64 bits) avec Nginx et PHP7 préinstallé.

Exigences: Avant de commencer, vous devez installer VirtualBox du logiciel Vagrant et Virtualisation (version 5.0) sur votre ordinateur. Vous avez également besoin d'un ordinateur 64 bits. Si vous utilisez un système Windows, vous devez également installer Git pour Windows afin que nous puissions utiliser sa console bash.

Comme je l'ai mentionné ci-dessus, nous utilisons Rackspace dans ce tutoriel, vous devez donc y créer un compte. La configuration d'un compte est relativement rapide et facile.

Vous avez également besoin d'une connexion Internet relativement rapide, car VirtualBox construit un très grand téléchargement d'image (environ 250 Mo). Enfin, vous devez avoir environ 12 Go d'espace disque gratuit sur votre ordinateur pour terminer l'ensemble du processus.

Cet article suppose également que vous connaissez une connaissance de base de l'utilisation de commandes Vagrant, SSH et Shell, et que vous avez des connaissances de base des machines Linux et virtuelles.

Configurez votre ordinateur pour exécuter Packer

Veuillez suivre les instructions pour installer Packer sur votre ordinateur.

Au moment de la rédaction du moment de la rédaction, Packer 0.11.0 vient d'être publié.

Une fois l'installation terminée, entrez le paquet dans votre console (Git Bash). Vous devriez voir quelque chose comme ça.

Hashicorp's Packer - Is It Something for PHP Developers?

Maintenant, nous allons aller sur RackSpace et démarrer un serveur et créer une image de base. Remarque: Si vous avez AWS ou autre support Packer en tant qu'hôte cloud pour la plate-forme Builder, les étapes que vous devez prendre seront similaires. Nous introduisons Rackspace dans ce tutoriel. Notez également que la création d'un serveur facturera des frais sur votre compte d'hôte. Cependant, le montant sera faible. Le coût du suivi de ce tutoriel ne doit pas dépasser un dollar.

Continuez à créer un serveur Jessie 8 et nommez-le "Packer Test". Rackspace est très intuitif et facile à comprendre. Démarrez un serveur de 1 Go pour en créer l'image.

Hashicorp's Packer - Is It Something for PHP Developers?

Une fois le serveur actif, créez un miroir du serveur nouvellement créé (le bouton "Opération" dans le coin supérieur droit). Après avoir créé et enregistré l'image, vous pouvez supprimer le serveur.

allez sur "server- & gt; miroir" et vous devriez voir votre nouvelle image. Cliquez dessus pour accéder à la page Détails du miroir. Nous aurons besoin de l'ID miroir.

Hashicorp's Packer - Is It Something for PHP Developers?

d'accord. Maintenant que vous êtes prêt à utiliser l'image de base sur Rackspace, nous commencerons à construire notre propre image. Ce processus est en fait assez complexe, en particulier pour ceux qui n'ont que une connaissance limitée de l'environnement du serveur et du packer. Donc, pour fournir de l'aide, nous avons créé un référentiel de démo pour vous télécharger. Veuillez cloner ce référentiel à partir de votre console (Git Bash).

<code>git clone https://github.com/smolinari/PHP-Packer-Demo
</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Passez au répertoire "PHP-Packer-Demo" nouvellement créé.

<code>cd PHP-Packer-Demo
</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Utilisez votre éditeur préféré pour ouvrir le fichier jessie64.json et entrez vos informations d'identification de l'utilisateur RackSpace et votre ID de miroir.

Hashicorp's Packer - Is It Something for PHP Developers?

SIDENTE RAPIDE: Vous pouvez également ajouter votre clé API RackSpace au lieu de votre mot de passe. Si vous commencez vraiment à utiliser Packer, vous pouvez également déplacer des informations d'identification d'accès pour séparer les fichiers et les ignorer à l'aide de Git. Cependant, cela dépasse le cadre de cet article.

Jessie64.json Le fichier est le cœur de Packer. Il s'agit du fichier de configuration qui contrôle Packer pour effectuer des actions. Il est similaire au VagrantFile utilisé dans Vagrant (nous vous fournissons également Vagrantfile dans le téléchargement).

Exécutez maintenant Packer avec la commande suivante.

<code>packer build jessie64.json</code>
Copier après la connexion
Copier après la connexion

Ce processus de construction prend plusieurs minutes. Puisque nous travaillons sur le tutoriel, comprenons réellement ce qui se passe à l'intérieur de Packer en attendant qu'il se termine. Ce processus ne doit pas dépasser environ 30 minutes, ou la sortie de la console ne doit pas s'arrêter pendant plus de 10 minutes. Si cela est vrai, une erreur s'est produite.

Hashicorp's Packer - Is It Something for PHP Developers?

Builder

Tout d'abord, Packer démarre le processus de construction en utilisant l'image de base que nous avons définie. Ces images sont démarrées comme le serveur lui-même, et nous définissons également ces serveurs dans le fichier jessie64.json. Vous pouvez trouver la valeur JSON spécifique du "constructeur" en haut du fichier jessie64.json.

<code> "builders": [
    {
      "type": "openstack",
      "username": "ENTER_RACKSPACE_USERNAME_HERE",
      "password": "ENTER_RACKSPACE_PASSWORD_HERE",
      "region": "IAD",
      "identity_endpoint": "https://identity.api.rackspacecloud.com/v2.0",
      "ssh_username": "root",
      "image_name": "Test Packer Image",
      "source_image": "ENTER_YOUR_IMAGE_ID_HERE",
      "flavor": "2"
    },
    {
      "type": "virtualbox-iso",
      "boot_command": [
        "<esc><wait>",
</wait></esc>        "install <wait>",
</wait>        "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/vanilla-debian-8-jessie-preseed.cfg <wait>",
</wait>        "debian-installer=en_US <wait>",
</wait>        "auto <wait>",
</wait>        "locale=en_US <wait>",
</wait>        "kbd-chooser/method=us <wait>",
</wait>        "netcfg/get_hostname={{ .Name }} <wait>",
</wait>        "netcfg/get_domain=vagrantup.com <wait>",
</wait>        "fb=false <wait>",
</wait>        "debconf/frontend=noninteractive <wait>",
</wait>        "console-setup/ask_detect=false <wait>",
</wait>        "console-keymaps-at/keymap=us <wait>",
</wait>        "keyboard-configuration/xkb-keymap=us <wait>",
</wait>        "<enter><wait>"
</wait></enter>      ],
      "disk_size": "10140",
      "guest_additions_mode": "disable",
      "guest_os_type": "Debian_64",
      "hard_drive_interface": "sata",
      "headless": true,
      "http_directory": "http",
      "iso_checksum": "dd25bcdde3c6ea5703cc0f313cde621b13d42ff7d252e2538a11663c93bf8654",
      "iso_checksum_type": "sha256",
      "iso_url": "http://cdimage.debian.org/cdimage/release/8.3.0/amd64/iso-cd/debian-8.3.0-amd64-netinst.iso",
      "shutdown_command": "sudo /sbin/halt -p",
      "ssh_password": "vagrant",
      "ssh_username": "vagrant",
      "ssh_port": "22",
      "ssh_wait_timeout": "10000s",
      "vm_name": "debian-jessie",
      "vboxmanage": [
        ["modifyvm", "{{.Name}}", "--memory", "1024"],
        ["modifyvm", "{{.Name}}", "--cpus", "1"]
      ]
    }
  ],
</code>
Copier après la connexion
Copier après la connexion

Le constructeur est chargé de rendre le miroir que vous souhaitez compatible avec l'environnement que vous ciblez. Par exemple, en utilisant AWS AMI, vous pouvez réellement créer votre image VirtualBox pour une utilisation avec Vagrant et AWS.

Dans notre exercice, nous combinons les images "OpenStack" et "VirtualBox-Iso". Malheureusement, Packer ne peut pas utiliser l'image OpenStack pour créer des images VirtualBox, nous avons donc également créé l'image VirtualBox.

Vous remarquerez la section "boot_command" dans le code JSON ci-dessus. Ici, nous sommes en fait dans l'automatisation pour entrer les commandes nécessaires pour installer Debian Jessie 8 comme système d'exploitation dans la machine virtuelle VirtualBox. Vous pouvez même regarder le processus d'installation dans VirtualBox lorsque Packer est en train de construire, si vous le souhaitez.

Bien sûr, il y a beaucoup de "magie" ici, vous devez vraiment comprendre les mécanismes internes de l'installation de Linux et les mécanismes internes de Packer afin de combiner manuellement ces images VirtualBox. Heureusement, il existe de nombreuses excellentes personnes de DevOps qui fournissent ces fichiers .json packer au public.

Programme de configuration

Une fois que le constructeur démarre l'image dans la machine virtuelle dans Rackspace et VirtualBox, Packer commencera à configurer le logiciel défini dans le script shell. Avec Packer, vous pouvez également utiliser des systèmes comme Puppet, Chef ou Ansible, et de nombreux autres systèmes pour orchestrer les configurations. Nous utilisons uniquement des scripts shell, vous pouvez trouver ces scripts dans le répertoire / scripts.

Il s'agit de la partie de configuration de notre fichier de configuration.

<code>git clone https://github.com/smolinari/PHP-Packer-Demo
</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Le programme de configuration "Fichier" est la façon dont nous ajoutons la configuration à la machine virtuelle. Il charge le fichier de configuration de notre ordinateur dans le répertoire / TMP sur la machine virtuelle. Pendant le processus de configuration, il existe des commandes dans le script shell qui copient le fichier de configuration à l'emplacement correct de la machine virtuelle. Nous avons des fichiers php.ini comme les fichiers de configuration "par défaut" de Nginx ou PHP modifiés. Vous pouvez trouver les fichiers que nous utilisons dans le dossier / transfer_files.

Vous remarquerez également la section "remplacer" ci-dessus. Cela indique à Packer d'exécuter certains scripts uniquement pour chaque version d'image. Dans notre exercice, nous devons faire moins de traitement sur l'image "OpenStack" pour la rendre "cohérente" avec l'image VirtualBox, nous ne traitons donc que le script setup.sh.

Enfin, il y a la partie du processeur post-configuration.

<code>cd PHP-Packer-Demo
</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Ceci est responsable de la construction de la boîte vagabonde.

Il est important de se rappeler que tout ce que nous configurons maintenant est "pré-cuit" dans le miroir. Packer nous sauve (ou notre équipe de développement) beaucoup de temps avec cette automatisation!

Image construite

Une fois Packer a configuré tous les logiciels que nous avons configurés dans le fichier jessie64.json, il fermera les machines virtuelles et stockera de nouvelles images de ces machines virtuelles. Pour les images Rackspace, vous trouverez une nouvelle image dans la section Images enregistrées du panneau de configuration de gestion de RackSpace. Pour les images VirtualBox, vous trouverez un fichier "jessie64.box" dans le répertoire actuel.

c'est tout. Packer a fait son travail!

que dois-je faire maintenant?

Vous pouvez maintenant utiliser l'image RackSpace pour créer un nouveau serveur. Essayez-le. Accédez à la section des serveurs et sélectionnez Créer un serveur, puis accédez au miroir enregistré. Vous devriez voir votre image nouvellement enregistrée sous serveur supprimé. Sélectionnez-le et démarrez le serveur. Une fois actif, vous pouvez obtenir l'adresse IP qui vous est donnée et l'entrer dans votre navigateur. Vous devriez voir l'écran de bienvenue Nginx.

Hashicorp's Packer - Is It Something for PHP Developers?

Pour les images VirtualBox, nous devons également utiliser Vagrant pour un peu de travail. Lisez attentivement maintenant. Cela deviendra très difficile!

Créer VirtualBox VM

Dans le répertoire contenant le fichier Vagrant, entrez la commande suivante.

<code>git clone https://github.com/smolinari/PHP-Packer-Demo
</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

c'est tout! OK, nous vous aidons en créant des fichiers vagabonds pour vous. Vous devez en savoir plus sur Vagrant afin de créer vous-même un fichier disponible. Comme mentionné précédemment, si vous êtes un développeur sérieux, vous devriez l'apprendre.

Vous devriez maintenant voir une nouvelle image comme une machine virtuelle dans l'interface utilisateur de VirtualBox.

La première commande ci-dessus ajoute la nouvelle boîte à Vagrant, afin qu'il sache où l'utiliser. Nous avons nommé la boîte "Jessie64" et utilisons la boîte que nous venons de créer. La deuxième commande indique à Vagrant de créer une machine virtuelle dans VirtualBox et de l'exécuter.

Vous remarquerez également que le démarrage initial de la boîte ne prend qu'une ou deux minutes. Si nous continuons à configurer dans Vagrant, cela prendra 10 à 20 minutes. Cela fait gagner du temps.

Une fois la commande "Vagrant Up" terminée, entrez l'URL https://www.php.cn/link/14e676072a5b15381b6f7f33c3528215 dans votre constructeur.

Dans les deux systèmes, vous pouvez également utiliser l'utilisateur "Vagrant" et le mot de passe "Vagrant" dans la connexion SSH. Ces serveurs ne sont pas sécurisés!

Nous ne sommes pas encore complètement terminés!

faisons quelque chose de plus intéressant.

Imaginez combien de fois vous avez fait quelque chose de similaire lorsque vous effectuez l'étape suivante. Nous automatisons maintenant le processus d'installation et de configuration du logiciel!

Supposons que nous ayons fait beaucoup de travail de développement de Symfony. Allons de l'avant et configurons notre image afin que la version Symfony soit installée et prête pour elle automatiquement.

Avant de commencer, supprimez le serveur sur Rackspace. (Nous ne voulons pas dépenser d'argent inutile.)

Aussi, dans votre console, terminons et supprimons la boîte vagabond que nous venons de charger. Entrez la commande suivante:

<code>cd PHP-Packer-Demo
</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Installez Symfony (et Demo) pour le plaisir (ou non?)

Encore une fois, supposons que nous avons une équipe de développement qui utilise souvent Symfony. Automatisons un serveur compatible Symfony. Nous ne chargeons que l'application de démonstration Symfony, mais ce travail supplémentaire devrait vous donner une bonne idée de la façon dont Packer aide à soutenir les efforts de développement et d'orchestration des infrastructures dans l'automatisation.

Accédez au répertoire / scripts, ouvrez le script setup.sh avec votre éditeur préféré et ajoutez le code de script shell suivant en bas.

<code>git clone https://github.com/smolinari/PHP-Packer-Demo
</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Le code ci-dessus est essentiellement ce que nous devons faire afin de configurer correctement Symfony, PHP et Nginx.

Des commentaires ont été ajoutés pour expliquer ce qui se passera dans ces étapes de configuration.

Après avoir ajouté et enregistré le code ci-dessus, permettons à Packer de faire à nouveau le travail lourd.

Montez un niveau dans le système de fichiers à l'endroit où nous avons le fichier jessie64.json et entrez la commande que nous avons entrée plus tôt.

<code>cd PHP-Packer-Demo
</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Vous pouvez désormais gérer d'autres affaires ou prendre une autre tasse de café (ou vous promener sur le tapis roulant). Il faudra un certain temps pour construire une nouvelle image de démonstration Symfony.

Lorsque vous avez terminé, vous devriez voir un écran comme celui-ci.

Hashicorp's Packer - Is It Something for PHP Developers?

Maintenant que l'image est construite et prête, nous pouvons recommencer l'image OpenStack en tant que nouveau serveur sur Rackspace.

Pour votre VM VirtualBox, entrez à nouveau les deux commandes mentionnées ci-dessus sous "Créer VirtualBox VM".

Pour le serveur RackSpace, vous obtiendrez une nouvelle IP. Entrez

<code>packer build jessie64.json</code>
Copier après la connexion
Copier après la connexion

Vous devriez voir l'application de démonstration Symfony s'exécuter.

Sur votre machine virtuelle locale, vous pouvez saisir ce qui suit:

<code> "builders": [
    {
      "type": "openstack",
      "username": "ENTER_RACKSPACE_USERNAME_HERE",
      "password": "ENTER_RACKSPACE_PASSWORD_HERE",
      "region": "IAD",
      "identity_endpoint": "https://identity.api.rackspacecloud.com/v2.0",
      "ssh_username": "root",
      "image_name": "Test Packer Image",
      "source_image": "ENTER_YOUR_IMAGE_ID_HERE",
      "flavor": "2"
    },
    {
      "type": "virtualbox-iso",
      "boot_command": [
        "<esc><wait>",
</wait></esc>        "install <wait>",
</wait>        "preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/vanilla-debian-8-jessie-preseed.cfg <wait>",
</wait>        "debian-installer=en_US <wait>",
</wait>        "auto <wait>",
</wait>        "locale=en_US <wait>",
</wait>        "kbd-chooser/method=us <wait>",
</wait>        "netcfg/get_hostname={{ .Name }} <wait>",
</wait>        "netcfg/get_domain=vagrantup.com <wait>",
</wait>        "fb=false <wait>",
</wait>        "debconf/frontend=noninteractive <wait>",
</wait>        "console-setup/ask_detect=false <wait>",
</wait>        "console-keymaps-at/keymap=us <wait>",
</wait>        "keyboard-configuration/xkb-keymap=us <wait>",
</wait>        "<enter><wait>"
</wait></enter>      ],
      "disk_size": "10140",
      "guest_additions_mode": "disable",
      "guest_os_type": "Debian_64",
      "hard_drive_interface": "sata",
      "headless": true,
      "http_directory": "http",
      "iso_checksum": "dd25bcdde3c6ea5703cc0f313cde621b13d42ff7d252e2538a11663c93bf8654",
      "iso_checksum_type": "sha256",
      "iso_url": "http://cdimage.debian.org/cdimage/release/8.3.0/amd64/iso-cd/debian-8.3.0-amd64-netinst.iso",
      "shutdown_command": "sudo /sbin/halt -p",
      "ssh_password": "vagrant",
      "ssh_username": "vagrant",
      "ssh_port": "22",
      "ssh_wait_timeout": "10000s",
      "vm_name": "debian-jessie",
      "vboxmanage": [
        ["modifyvm", "{{.Name}}", "--memory", "1024"],
        ["modifyvm", "{{.Name}}", "--cpus", "1"]
      ]
    }
  ],
</code>
Copier après la connexion
Copier après la connexion

Vous verrez le même contenu.

C'est cool, non?

Conclusion:

Nous avons regardé en arrière sur le passé, puis nous sommes retournés au présent. J'espère que nous vous avons fait comprendre les raisons de la virtualisation informatique, la création de logiciels tels que Vagrant et Packer, et la connexion entre les deux.

Si vous créez avec succès deux serveurs, vous pouvez également imaginer les avantages que Packer peut vous fournir en tant que membre et développeur DevOps. Ces avantages incluent, mais sans s'y limiter:

  • cohérence de la production - L'environnement de développement est presque exactement le même que l'environnement de production.
  • Gagnez du temps - le logiciel et la configuration sont "pré-cuits" dans l'image, et vous n'avez plus besoin de l'ajouter manuellement.
  • Test environnemental - Les miroirs accomplis peuvent être considérés comme «complets» et testés pour éviter une erreur humaine.
  • Versioning environnemental - Lorsque vous modifiez l'environnement, vous pouvez utiliser GIT pour version des différentes versions de packer.
  • prend en charge "l'architecture immuable" - au lieu de construire ou de modifier une machine virtuelle existante (qui peut être la source de l'erreur), "détruisez" l'instance VM et créez-en une nouvelle.

J'espère que vous avez apprécié cet article et les exercices de construction d'images avec Packer. Veuillez nous dire vos réflexions sur Packer dans les commentaires ci-dessous.

FAQ sur le packer de Hashicorp, pour les développeurs PHP

Qu'est-ce que le packer de Hashicorp et comment profite-t-il aux développeurs PHP?

Le packer de Hashicorp est un outil open source qui automatise la création de tout type d'image de machine. Il prend en charge la gestion de la configuration moderne en vous permettant d'écrire du code d'infrastructure et de l'enregistrer dans un système de contrôle de version. Packer peut être un outil qui change la donne pour les développeurs PHP. Il vous permet de créer le même environnement de développement, réduisant ainsi le problème de "courir sur ma machine". Il vous permet également de créer des images prêtes à l'emploi qui peuvent être déployées en production en quelques minutes, pas des heures ou des jours.

Comment Packer se compare-t-il à d'autres outils similaires?

Packer se distingue par sa polyvalence et sa compatibilité. Il prend en charge une variété de plateformes, notamment AWS, DigitalOcean, Docker, Google Cloud, etc. Il s'intègre également bien aux autres outils Hashicorp tels que Terraform et Vagrant pour fournir un flux de travail transparent pour l'infrastructure de gestion.

Comment installer Packer?

Packer est facile à installer. Il est distribué en tant que package binaire pour toutes les plates-formes et architectures prises en charge. Il vous suffit de télécharger le package qui convient à votre système à partir du site Web Packer, de le décompresser et de le déplacer sur votre chemin.

Comment créer des images de machine à l'aide de Packer?

Pour créer des images de machine à l'aide de Packer, vous devez écrire des fichiers de modèle au format JSON. Ce fichier définit le type de machine et de logiciel à installer. Une fois le modèle prêt, vous pouvez utiliser la commande "Packer Build" pour créer l'image.

Puis-je utiliser Packer avec mes outils de gestion de configuration existants?

Oui, Packer fonctionne bien avec les outils de gestion de la configuration existants tels que Chef, Puppet, Ansible, etc. Vous pouvez utiliser ces outils pour configurer le logiciel sur les images de machines créées par Packer.

Comment le packer gére-t-il les échecs pendant la création d'images?

Packer a un puissant mécanisme de gestion des erreurs. Si une erreur se produit pendant la création d'images, Packer marque l'image en cas d'échec et nettoie toutes les ressources créées. Cela garantit que vous ne vous retrouvez pas avec une miroir semi-finis ou incohérente.

Puis-je utiliser Packer dans mon pipeline d'intégration continue / déploiement continu (CI / CD)?

Absolument. Packer est parfait pour les pipelines CI / CD. Vous pouvez l'utiliser pendant le processus de construction pour créer des images de machine, puis déployer ces images dans votre environnement de production.

Comment déboguer les problèmes dans Packer?

Packer fournit des journaux détaillés pour vous aider à déboguer les problèmes. Vous pouvez également activer le mode de débogage pour obtenir une sortie plus détaillée pendant la création d'images.

Puis-je contribuer du code à mon projet Packer?

Oui, Packer est un projet open source qui accueille les contributions communautaires. Vous pouvez contribuer du code en signalant des erreurs, en suggérant des fonctionnalités, en améliorant la documentation ou en soumettant des demandes de traction.

où puis-je trouver plus de ressources pour apprendre Packer?

Le site officiel de Packer et le référentiel GitHub sont d'excellents endroits pour commencer à apprendre. Ils fournissent une documentation complète, des tutoriels et des exemples. Vous pouvez également trouver de nombreux articles de blog, vidéos et cours en ligne sur Packer sur Internet.

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