Les systèmes de gestion de configuration (CM) les plus établis comme Puppet et Chef utilisent une approche basée sur l'extraction: les clients interrogent périodiquement un maître centralisé pour les mises à jour. Certains d'entre eux proposent également une approche sans maître (donc, basée sur la poussée), mais affirment qu'elle n'est «pas destinée à la production» (Saltstack) ou «moins évolutive» (Puppet). Le seul système que je connaisse qui soit basé sur le push depuis le début est le deuxième Ansible.
Quel est l'avantage d'évolutivité spécifique d'un système basé sur la traction? Pourquoi est-il censé être plus facile d'ajouter plus de pull-masters que de push-agents?
Par exemple, agiletesting.blogspot.nl écrit:
dans un système «pull», les clients contactent le serveur indépendamment les uns des autres, de sorte que le système dans son ensemble est plus évolutif qu'un système «push»
D'autre part, Rackspace démontre qu'ils peuvent gérer des systèmes 15K avec un modèle basé sur le push.
infastructures.org écrit:
Nous ne jurons que par une méthodologie pull pour la maintenance des infrastructures, en utilisant un outil comme SUP, CVSup, un serveur rsync ou cfengine. Plutôt que d'envoyer des modifications aux clients, chaque machine cliente individuelle doit être responsable de l'interrogation du serveur Gold au démarrage, et périodiquement par la suite, pour maintenir son propre niveau de régime. Avant d'adopter ce point de vue, nous avons développé des scripts poussés basés sur ssh, rsh, rcp et rdist. Le problème que nous avons trouvé avec les commandes r (ou ssh) était le suivant: lorsque vous exécutez un script basé sur la commande r pour pousser une modification vers vos machines cibles, les chances sont que si vous avez plus de 30 hôtes cibles, l'un d'eux être à tout moment donné. Le maintien de la liste des machines mises en service devient un cauchemar. Au cours de l'écriture de code pour corriger cela, vous vous retrouverez avec du code wrapper élaboré pour traiter: les délais d'attente des hôtes morts; journalisation et nouvelle tentative d'hôtes morts; bifurquer et exécuter des travaux parallèles pour essayer de toucher de nombreux hôtes dans un délai raisonnable; et enfin détecter et empêcher l'utilisation de toutes les sockets TCP disponibles sur la machine source avec toutes les sessions rsh sortantes. Ensuite, vous avez toujours le problème d'obtenir tout ce que vous venez de faire dans les images d'installation pour tous les nouveaux hôtes à installer à l'avenir, ainsi que de le répéter pour tous les hôtes qui meurent et doivent être reconstruits demain. Après les problèmes rencontrés pour implémenter la réplication basée sur r-command, nous avons constaté que cela n'en valait pas la peine. Nous ne prévoyons pas de gérer une infrastructure avec des commandes r à nouveau, ou avec tout autre mécanisme de poussée d'ailleurs. Ils n'évoluent pas aussi bien que les méthodes basées sur l'extraction. bifurquer et exécuter des travaux parallèles pour essayer de toucher de nombreux hôtes dans un délai raisonnable; et enfin détecter et empêcher l'utilisation de toutes les sockets TCP disponibles sur la machine source avec toutes les sessions rsh sortantes. Ensuite, vous avez toujours le problème d'obtenir tout ce que vous venez de faire dans les images d'installation pour tous les nouveaux hôtes à installer à l'avenir, ainsi que de le répéter pour tous les hôtes qui meurent et doivent être reconstruits demain. Après les problèmes rencontrés pour implémenter la réplication basée sur r-command, nous avons constaté que cela n'en valait pas la peine. Nous ne prévoyons pas de gérer une infrastructure avec des commandes r à nouveau, ou avec tout autre mécanisme de poussée d'ailleurs. Ils n'évoluent pas aussi bien que les méthodes basées sur l'extraction. bifurquer et exécuter des travaux parallèles pour essayer de toucher de nombreux hôtes dans un délai raisonnable; et enfin détecter et empêcher l'utilisation de toutes les sockets TCP disponibles sur la machine source avec toutes les sessions rsh sortantes. Ensuite, vous avez toujours le problème d'obtenir tout ce que vous venez de faire dans les images d'installation pour tous les nouveaux hôtes à installer à l'avenir, ainsi que de le répéter pour tous les hôtes qui meurent et doivent être reconstruits demain. Après les problèmes rencontrés pour implémenter la réplication basée sur r-command, nous avons constaté que cela n'en valait pas la peine. Nous ne prévoyons pas de gérer une infrastructure avec des commandes r à nouveau, ou avec tout autre mécanisme de poussée d'ailleurs. Ils n'évoluent pas aussi bien que les méthodes basées sur l'extraction. et enfin détecter et empêcher l'utilisation de toutes les sockets TCP disponibles sur la machine source avec toutes les sessions rsh sortantes. Ensuite, vous avez toujours le problème d'obtenir tout ce que vous venez de faire dans les images d'installation pour tous les nouveaux hôtes à installer à l'avenir, ainsi que de le répéter pour tous les hôtes qui meurent et doivent être reconstruits demain. Après les problèmes rencontrés pour implémenter la réplication basée sur r-command, nous avons constaté que cela n'en valait pas la peine. Nous ne prévoyons pas de gérer une infrastructure avec des commandes r à nouveau, ou avec tout autre mécanisme de poussée d'ailleurs. Ils n'évoluent pas aussi bien que les méthodes basées sur l'extraction. et enfin détecter et empêcher l'utilisation de toutes les sockets TCP disponibles sur la machine source avec toutes les sessions rsh sortantes. Ensuite, vous avez toujours le problème d'obtenir tout ce que vous venez de faire dans les images d'installation pour tous les nouveaux hôtes à installer à l'avenir, ainsi que de le répéter pour tous les hôtes qui meurent et doivent être reconstruits demain. Après les problèmes rencontrés pour implémenter la réplication basée sur r-command, nous avons constaté que cela n'en valait pas la peine. Nous ne prévoyons pas de gérer une infrastructure avec des commandes r à nouveau, ou avec tout autre mécanisme de poussée d'ailleurs. Ils n'évoluent pas aussi bien que les méthodes basées sur l'extraction. Ensuite, vous avez toujours le problème d'obtenir tout ce que vous venez de faire dans les images d'installation pour tous les nouveaux hôtes à installer à l'avenir, ainsi que de le répéter pour tous les hôtes qui meurent et doivent être reconstruits demain. Après les problèmes rencontrés pour implémenter la réplication basée sur r-command, nous avons constaté que cela n'en valait pas la peine. Nous ne prévoyons pas de gérer une infrastructure avec des commandes r à nouveau, ou avec tout autre mécanisme de poussée d'ailleurs. Ils n'évoluent pas aussi bien que les méthodes basées sur l'extraction. Ensuite, vous avez toujours le problème d'obtenir tout ce que vous venez de faire dans les images d'installation pour tous les nouveaux hôtes à installer à l'avenir, ainsi que de le répéter pour tous les hôtes qui meurent et doivent être reconstruits demain. Après les problèmes rencontrés pour implémenter la réplication basée sur r-command, nous avons constaté que cela n'en valait pas la peine. Nous ne prévoyons pas de gérer une infrastructure avec des commandes r à nouveau, ou avec tout autre mécanisme de poussée d'ailleurs. Ils n'évoluent pas aussi bien que les méthodes basées sur l'extraction. ou avec tout autre mécanisme de poussée d'ailleurs. Ils n'évoluent pas aussi bien que les méthodes basées sur l'extraction. ou avec tout autre mécanisme de poussée d'ailleurs. Ils n'évoluent pas aussi bien que les méthodes basées sur l'extraction.
N'est-ce pas un problème d'implémentation au lieu d'un problème architectural? Pourquoi est-il plus difficile d'écrire un client push threadé qu'un serveur pull threadé?
ansible-pull
.