I sistemi di gestione della configurazione (CM) più consolidati come Puppet e Chef utilizzano un approccio basato su pull: i client eseguono periodicamente il polling di un master centralizzato per gli aggiornamenti. Alcuni di essi offrono anche un approccio senza master (quindi basato su push), ma affermano che non è "per la produzione" (Saltstack) o "meno scalabile" (Puppet). L'unico sistema che conosco è basato su push fin dall'inizio è il secondo classificato Ansible.
Qual è il vantaggio specifico della scalabilità di un sistema basato su pull? Perché è presumibilmente più facile aggiungere più pull-master che push-agent?
Ad esempio, agiletesting.blogspot.nl scrive:
in un sistema "pull", i client contattano il server indipendentemente l'uno dall'altro, quindi il sistema nel suo insieme è più scalabile di un sistema "push"
D'altra parte, Rackspace dimostra di essere in grado di gestire sistemi 15K con un modello push-based.
infastructures.org scrive:
Giuriamo con una metodologia pull per mantenere le infrastrutture, usando uno strumento come SUP, CVSup, un server rsync o cfengine. Invece di inviare le modifiche ai client, ogni singola macchina client deve essere responsabile del polling del server gold all'avvio e periodicamente in seguito, per mantenere il proprio livello di giri. Prima di adottare questo punto di vista, abbiamo sviluppato ampi script basati su push basati su ssh, rsh, rcp e rdist. Il problema che abbiamo riscontrato con i comandi r (o ssh) è stato questo: quando esegui uno script basato su r-command per inviare una modifica ai tuoi computer di destinazione, le probabilità sono che se hai più di 30 host di destinazione uno di loro essere giù in qualsiasi momento. Mantenere l'elenco delle macchine commissionate diventa un incubo. Nel corso della scrittura del codice per correggere ciò, si finirà con un elaborato codice wrapper per gestire: timeout da host morti; registrazione e riprovare host morti; biforcando ed eseguendo lavori paralleli per cercare di colpire molti host in un ragionevole lasso di tempo; e infine rilevare e prevenire il caso di utilizzare tutti i socket TCP disponibili sul computer di origine con tutte le sessioni rsh in uscita. Quindi hai ancora il problema di ottenere tutto ciò che hai appena fatto nelle immagini di installazione per tutti i nuovi host da installare in futuro, oltre a ripeterlo per tutti gli host che muoiono e devono essere ricostruiti domani. Dopo il problema che abbiamo riscontrato per implementare la replica basata su r-command, abbiamo scoperto che non ne valeva la pena. Non prevediamo di gestire nuovamente un'infrastruttura con r-command o con qualsiasi altro meccanismo push. Non si adattano così come i metodi basati su pull. biforcando ed eseguendo lavori paralleli per cercare di colpire molti host in un ragionevole lasso di tempo; e infine rilevare e prevenire il caso di utilizzare tutti i socket TCP disponibili sul computer di origine con tutte le sessioni rsh in uscita. Quindi hai ancora il problema di ottenere tutto ciò che hai appena fatto nelle immagini di installazione per tutti i nuovi host da installare in futuro, oltre a ripeterlo per tutti gli host che muoiono e devono essere ricostruiti domani. Dopo il problema che abbiamo riscontrato per implementare la replica basata su r-command, abbiamo scoperto che non ne valeva la pena. Non prevediamo di gestire nuovamente un'infrastruttura con r-command o con qualsiasi altro meccanismo push. Non si adattano così come i metodi basati su pull. biforcando ed eseguendo lavori paralleli per cercare di colpire molti host in un ragionevole lasso di tempo; e infine rilevare e prevenire il caso di utilizzare tutti i socket TCP disponibili sul computer di origine con tutte le sessioni rsh in uscita. Quindi hai ancora il problema di ottenere tutto ciò che hai appena fatto nelle immagini di installazione per tutti i nuovi host da installare in futuro, oltre a ripeterlo per tutti gli host che muoiono e devono essere ricostruiti domani. Dopo il problema che abbiamo riscontrato per implementare la replica basata su r-command, abbiamo scoperto che non ne valeva la pena. Non prevediamo di gestire nuovamente un'infrastruttura con r-command o con qualsiasi altro meccanismo push. Non si adattano così come i metodi basati su pull. e infine rilevare e prevenire il caso di utilizzare tutti i socket TCP disponibili sul computer di origine con tutte le sessioni rsh in uscita. Quindi hai ancora il problema di ottenere tutto ciò che hai appena fatto nelle immagini di installazione per tutti i nuovi host da installare in futuro, oltre a ripeterlo per tutti gli host che muoiono e devono essere ricostruiti domani. Dopo il problema che abbiamo riscontrato per implementare la replica basata su r-command, abbiamo scoperto che non ne valeva la pena. Non prevediamo di gestire nuovamente un'infrastruttura con r-command o con qualsiasi altro meccanismo push. Non si adattano così come i metodi basati su pull. e infine rilevare e prevenire il caso di utilizzare tutti i socket TCP disponibili sul computer di origine con tutte le sessioni rsh in uscita. Quindi hai ancora il problema di ottenere tutto ciò che hai appena fatto nelle immagini di installazione per tutti i nuovi host da installare in futuro, oltre a ripeterlo per tutti gli host che muoiono e devono essere ricostruiti domani. Dopo il problema che abbiamo riscontrato per implementare la replica basata su r-command, abbiamo scoperto che non ne valeva la pena. Non prevediamo di gestire nuovamente un'infrastruttura con r-command o con qualsiasi altro meccanismo push. Non si adattano così come i metodi basati su pull. Quindi hai ancora il problema di ottenere tutto ciò che hai appena fatto nelle immagini di installazione per tutti i nuovi host da installare in futuro, oltre a ripeterlo per tutti gli host che muoiono e devono essere ricostruiti domani. Dopo il problema che abbiamo riscontrato per implementare la replica basata su r-command, abbiamo scoperto che non ne valeva la pena. Non prevediamo di gestire nuovamente un'infrastruttura con r-command o con qualsiasi altro meccanismo push. Non si adattano così come i metodi basati su pull. Quindi hai ancora il problema di ottenere tutto ciò che hai appena fatto nelle immagini di installazione per tutti i nuovi host da installare in futuro, così come ripeterlo per tutti gli host che muoiono e devono essere ricostruiti domani. Dopo il problema che abbiamo riscontrato per implementare la replica basata su r-command, abbiamo scoperto che non ne valeva la pena. Non prevediamo di gestire nuovamente un'infrastruttura con r-command o con qualsiasi altro meccanismo push. Non si adattano così come i metodi basati su pull. o con qualsiasi altro meccanismo push per quella materia. Non si adattano così come i metodi basati su pull. o con qualsiasi altro meccanismo push per quella materia. Non si adattano così come i metodi basati su pull.
Non è un problema di implementazione invece che architettonico? Perché è più difficile scrivere un client push threaded rispetto a un server pull thread?
ansible-pull
.