Sul retro della mia risposta alla domanda: in che modo DevOps può aiutare a migliorare le procedure di impegno software? Tensibai aveva la domanda:
Cosa richiederebbe Capistrano in cima al burattino o allo chef?
La mia risposta è stata quella di pubblicare un link all'articolo di Noah Gibbs "Abbiamo bisogno sia di Capistrano che di Chef?" . Personalmente, sottoscrivo ancora l'opinione di Noè secondo cui è più appropriato:
- utilizzare uno strumento di distribuzione specializzato come Capistrano per le distribuzioni.
- utilizzare uno strumento di gestione della configurazione specializzato come Chef per la gestione della configurazione.
L'approccio fondamentale che ogni tipo di strumento utilizza per completare il suo compito è molto diverso:
Strumenti di gestione della configurazione : riguardano la creazione e il mantenimento dello stato desiderato di un sistema, sono intrinsecamente idempotenti in natura. Esempi di strumenti di gestione della configurazione sono Chef , Puppet , Ansible , PowerShell DSC , Salt Stack .
Strumenti di distribuzione : si tratta di distribuire versioni di software in un ambiente di hosting, forniscono funzionalità per mantenere più versioni del software su più macchine e gestire quale versione è "attuale", sono intrinsecamente di natura imperativa. Esempi di strumenti di distribuzione sono Capistrano , Octopus Deploy , Deployer e Command.io .
Credo che gli strumenti di gestione della configurazione possano svolgere il lavoro di strumenti di distribuzione e nel caso di Immutable Infrastructure siano lo strumento più appropriato per il lavoro poiché non è necessario mantenere le versioni del software sulla destinazione.
Domanda: gli strumenti di gestione della configurazione come Chef, Ansible e Puppet sono maturati al punto da essere in grado di soddisfare sia i modelli idempotenti sia quelli imperativi?