J'ai essayé la partie Ops de DevOps il y a un certain temps et c'était assez amusant, mais je n'ai pas le temps et la raison de l'essayer dans aucun projet. Mais la semaine dernière, j'ai commencé un nouveau travail, où le patron m'a demandé si je pouvais configurer le serveur pour créer quelque chose comme un environnement de transfert pour les projets de l'entreprise. Parallèlement à cela, j'ai commencé à réfléchir à la migration du projet pour devenir plus DevOps plutôt que seulement dev.
Je suis sorti avec Docker, ce qui est génial et très facile pour moi. Mais il ya quelque temps, j’essayais de jouer à Puppet. Une question m’est alors venue à l’esprit: "Y at-il une raison pour utiliser Puppet avec Docker?". Docker semble faire tout ce que Puppet ferait, mais plus facilement.
PS Il y a quelque temps sur Hacker News, il y avait Consul , ce qui correspond à la configuration de Nice et à la découverte du service. résolu (et je pense à la mise en œuvre aussi).
Les marionnettes et les dockers peuvent faire à peu près la même chose, mais ils les abordent différemment.
Puppet gère les fichiers + packages + services. (Appelé le trifecta). Docker encapsule les fichiers binaires et les fichiers de configuration à l’intérieur d’un conteneur.
Au moment d'écrire ces lignes, le menu fixe est toujours instable et ne doit pas être utilisé en production. De nombreuses API sont susceptibles d'être modifiées jusqu'à la publication de la version 1.0.
Même lorsque docker devient stable, la conversion de tous les processus et fichiers de configuration en conteneurs Docker sera une entreprise de grande envergure.
En revanche, la marionnette est un produit stable et comprend tout un écosystème d’outils (heira, mcollective, facter, rasoir). Ces outils peuvent être mis en œuvre rapidement et sans souci d'inactivité.
Je suggère fortement les ressources suivantes.
Une vidéo sur la gestion des piles d’applications avec des marionnettes
https://www.youtube.com/watch?v=KSo_mcJxFIA
Un podcast sur la manière dont docker et marionnette peuvent travailler ensemble
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html
Un article de marionnette sur l'intégration de docker
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker
Un autre article de blog sur la coexistence de marionnettes et de dockers
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist
Un module de marionnettes pour interagir avec docker
http://docs.docker.io/use/puppet/
Une correction mineure sur la terminologie de devops. Devops est plus un méthodologie de développement logiciel où les développeurs et les opérations coopèrent, que n'importe quel outil spécifique.
Mettre à jour
Actuellement, mon entreprise utilise à la fois des marionnettes et des dockers. Voici une excellente présentation donnée à la conférence marionnettes 2014 sur les raisons pour lesquelles vous utiliseriez marionnette vs docker. Donné par James Turnbull, un ancien employeur de puppetlabs et l'auteur du livre de docker.
https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter
Aussi un bon court tutoriel vidéo sur docker donné par sysadmincasts.com
https://sysadmincasts.com/episodes/31-introduction-to-docker
Docker
Docker Contre:
Marionnette
Contre les marionnettes:
Actuellement, nous utilisons des marionnettes pour approvisionner nos conteneurs Docker. Les conteneurs Docker sont utilisés pour les constructions Jenkins et sont détruits après chaque construction. Cela fonctionne bien et nous donne un environnement cohérent. Cela signifie que nous n'avons qu'à écrire le code une fois, puis à reconstruire les machines Ubuntu, Sles et Centos. La reconstruction des conteneurs prend environ 15 à 30 minutes et est toujours un processus manuel. Docker est idéal pour tester rapidement les vm,
Bref, puppet est très efficace pour gérer votre infrastructure existante. Docker est bon si vous avez un greenfield 100% linux avec une pile technologique pouvant être enfermée dans de petites instances éphémères. Bien que certaines fonctionnalités se chevauchent, elles ne s'excluent pas mutuellement.
Docker vous aide à provisionner et à configurer initialement les conteneurs, mais il exécute des commandes uniques lors de l'initialisation du conteneur.
La marionnette est la plus puissante lorsque vous l'exécutez en tant que démon. Elle garantit que votre configuration reste telle que vous la spécifiez. Ainsi, par exemple, si votre service cesse de fonctionner, il va le redémarrer.
Une des meilleures choses à propos des manifestes de configuration de marionnettes (correctement conçus) est qu’ils sont idempotent ; il est censé décrire l'état dans lequel vous voulez être et pas nécessairement les étapes pour y arriver.
Il vous permet également d’abstraire et de paramétrer des configurations et vous pouvez paramètres d’exportation créés sur un serveur ou un conteneur et les utiliser sur un autre (par exemple, collecte d’une liste de noms d’hôte de nœuds pour une application de surveillance).
Je dirais qu'ils servent assurément des objectifs différents mais connexes. Je cherche actuellement à utiliser les manifestes de marionnettes existants pour commencer à configurer les conteneurs afin que les environnements de développement ressemblent davantage à des environnements de production.