Déploiement d'applications avec Puppet

10

Je suis nouveau sur Puppet et bien que j'utilise des systèmes * nix depuis de nombreuses années, je n'ai jamais travaillé en tant que sysadmin ou en ops.

J'écris actuellement des manifestes Puppet pour héberger un ensemble d'applications Web (PHP / MySQL / MongoDB, code in git). De toute évidence, Puppet doit avoir une certaine connaissance des applications réelles, car je vais configurer un hôte virtuel pour chacune, mais je ne sais pas si Puppet devrait gérer des choses comme le déploiement de code et la création de bases de données.

Puppet est-il un outil approprié pour le déploiement d'applications? Sinon, pouvez-vous recommander un outil plus approprié?

michaeltwofish
la source
3
Si vous y revenez plus tard, toutes les réponses sont bonnes, ne lisez pas seulement celle que j'ai choisie comme réponse.
michaeltwofish

Réponses:

10

Je chercherais dans Capistrano ou Fabric pour les déploiements.

Vous aurez un meilleur contrôle sur la façon dont le déploiement se produit avec ces deux outils.

Mike
la source
J'ai attribué +1 à cette réponse car elle a donné deux solutions.
François Beausoleil
J'apprécie les conseils. Nous avons Ruby ailleurs dans notre pile, donc je vais regarder Capistrano.
michaeltwofish
9

Puppet est utilisé pour les déploiements dans de nombreuses grandes organisations, mais il n'est pas toujours parfait. Cela dépend en grande partie de votre méthodologie de déploiement. Vous déployez sur de nombreuses machines à la fois? Faites-vous des déploiements continus?

Certaines organisations utilisent Puppet en créant des packages de leurs déploiements, puis en ayant puppet appliquer la stratégie pour être à la bonne version de ce package. Parce que marionnette a le concept d'environnements inclus, vous pouvez utiliser des environnements pour effectuer des déploiements par étapes (dev, test, prod par exemple).

D'autres organisations utilisent des marionnettes pour orchestrer le déploiement en déclenchant une rsync, une extraction git ou des copies de fichiers récursives à l'aide de marionnettes (bien que cela soit plutôt lent).

Il existe également de très bons outils disponibles pour le déploiement. J'ai utilisé Whiskey Disk dans le passé (un simple outil rubis) et je l'ai beaucoup aimé.

(Avertissement, je travaille chez Puppet Labs)

stahnma
la source
Merci. Les déploiements se font sur deux serveurs équilibrés, utilisant actuellement rsync manuel.
michaeltwofish
4

Si vous souhaitez créer un package à partir de votre application, vous pouvez consulter FPM . Le code est sur GitHub .

François Beausoleil
la source
Merci pour le conseil. Nous ne construisons pas de packages dans ce cas, mais FPM semble intéressant, et nous pouvons l'utiliser pour d'autres tâches.
michaeltwofish
4

Puppet n'est pas l'outil approprié pour déployer des applications à mon avis.

J'utilise Jenkins pour construire et déployer notre code à des fins de test et de transfert.

Jenkins est à l'origine un serveur d'intégration continue, mais il est vraiment flexible et modulaire. Il existe de nombreux plugins pour Jenkins qui peuvent vous aider à déployer vos applications:

Pour notre application, j'ai configuré Jenkins avec Publish over SSH qui copie un fichier WAR correctement construit sur le serveur de destination, puis exécutant un script qui effectue la sauvegarde et le déploiement. J'espère que cela t'aides!

pkhamre
la source
Nous utilisons Jenkins pour CI, c'est donc certainement une option intéressante à explorer, merci.
michaeltwofish
1

Puppet n'est pas vraiment conçu pour le déploiement, car lorsqu'il y a un grand nombre de fichiers impliqués, vous pouvez rencontrer des problèmes. Vous pouvez regarder dans capistrano pour le déploiement d'applications.

http://rubyforge.org/projects/capistrano/

johnshen64
la source