Dove sto lavorando al momento, dobbiamo gestire la parte Linux della nostra server farm che è poco più di 300 server Linux. Ciò include principalmente HP Proliants, seguiti da IBM 3850, alcuni blade IBM, VMware ESX e alcuni KVM per i nostri server di gestione interni.
ciabattino
Abbiamo esaminato il calzolaio, ma il problema era che il calzolaio è molto specifico per RHEL / Red Hat. Dobbiamo supportare almeno RHEL e SLES e Ubuntu è il prossimo.
fantoccio
Abbiamo preso in considerazione le marionette, tuttavia in seguito abbiamo deciso di non farlo poiché dipende da Ruby, il che significa che un aggiornamento di Ruby potrebbe potenzialmente rompere il nostro sistema di gestione.
hotwire
Hotwire è ciò che utilizziamo (sviluppato internamente, ma è open-source) e lo abbiamo fatto negli ultimi anni. In primo luogo, l'inventario dei sistemi che verranno costruiti, il che significa inventariare il data center, il rack, l'hardware, il sistema operativo, la rete, ecc., E in secondo luogo eseguire la rapida compilazione e distribuzione. Una volta creato il sistema, l'inventario automatico di hotwire mantiene sincronizzato l'inventario, mentre cfengine li mantiene. Hotwire conosce l'hardware del server parlando con i dati SMBIOS / DMI nel BIOS tramite python-dmidecode .
I punti bonus sono che combina l'inventario e il processo di creazione in uno, quindi c'è meno da gestire, e la funzione di inventario dal vivo è eccezionale, come sappiamo se qualcosa non va bene.
Gli svantaggi sono che l'interfaccia utente ha ancora bisogno di essere lucidata, e ci sono bug qua e là, ma lo sviluppo è ancora caldo e i bug segnalati sono stati corretti relativamente velocemente.
cfengine
Usiamo cfengine perché a parte questo, e fantoccio, non c'è nient'altro. In realtà è un buon strumento, ma "buono" solo in funzione di quanto sono buone le vostre politiche - se impostate politiche pericolose, allora un piccolo errore può causare molti danni. Ad esempio, per politica, non "modifichiamo" i file, o li sostituiamo o no. Inoltre, tutti i file sostituiti hanno un'intestazione che fa in modo che chiunque lo modifichi sappia che verrà sostituito alla successiva esecuzione (viene eseguito tramite cron ogni ora).
Anche la configurazione e tutti i file inviati da cfengine ai server sono mantenuti in un SCM e, usando possibilmente hook post-commit, controlliamo la sintassi e se fallisce, il commit viene rifiutato. Questo è facile per belle applicazioni come Apache, ma non così facile per la maggior parte delle applicazioni aziendali.