Bonjour à tous,
Effectivement la discussion part dans toutes les directions qui devraient converger mais qui ne le font pas.
Reprenons dans l'ordre. Pour commencer à connaître l'état de machines il faut connaître les machines. Je n'ai pas encore trouvé d'outil simple d'inventaire dynamique qui me permette de connaître les machines et de pondre un inventory ansible en fonction de mes besoins.
Collins semble faire le job mais c'est un outil Java qui consomme 800M de Ram à vide, ce qui est inacceptable pour un outil d'inventaire qui ne devrait pas, pour 1000 machines, gérer plus de 2 ou 3M de données texte.
Ensuite les mises à jour. J'ai testé Landscape et c'est à peu près exactement ce qu'il faudrait sans le crap marketing Canonical. Un contournement pourrait être :
- Mes serveurs n'ont qu'une seule entrée sources.list (ou équivalent yum/...) vers un repo que j'héberge.
- Une MAJ est détectée, je spawne mes environnements de prod en test, je MAJ, je run tous mes tests unitaires, fonctionnels, ... Si ça passe, je met à jour mon repo de prod.
- En cron ou manuellement, tous mes serveurs de prod peuvent upgrade car c'est testé.
Ainsi si c'est bien fait, j'enlève même l'intervention humaine des mises à jour de mon parc de prod :)
Pour le pilotage des serveurs, rundeck m'a vendu du rêve. Faire du libre-service de scripts est une très bonne idée. Je peux écrire des scripts et en donner accès aux devs, qui les exécutent en un clic sur leurs envs. Enfin sur le papier, car j'utilise Ansible et c'est pas encore très sec, il faut wrapper ansible dans des scripts shell et utiliser l'inventaire issu de Collins. Rundeck est en Java et consomme quasiment 1G de ram à vide. Encore une fois inacceptable.
Le sujet du déploiement d'une stack from scratch est intéressant. Je connais des admins par exemple qui utilisent ansible pour installer et conf puppet-agent sur leurs machines fraîches :)
J'utilise Vagrant pour mes VM de test et de plus en plus de prod (Digital ocean, AWS). Il n'a pas de plugin pour déployer en Bare Metal, mais peut-être qu'en passant par un intermédiaire qui fasse du PXE/... unifié derrière une API ça marcherait (je vais tester MAAS de Canonical qui, encore une fois sur le papier, vend du rêve :) )
Très interessé par vos réponses !
++