"Non siamo programmatori, siamo amministratori di sistema"
Il mio modo in cui i tempi sono cambiati, in peggio: un greybeard come me avrebbe dovuto essere un programmatore migliore dei programmatori professionisti, altrimenti non sarebbe mai stato in grado di passare per un amministratore di sistema .
Ora abbiamo "amministratori di sistema", che sono fondamentalmente utenti desktop di Windows che a un certo punto si sono convertiti in Linux e non possono programmare e non trovano nulla di sbagliato in questo.
L'elefante nella stanza è il motivo per cui la gestione tollera un atteggiamento così distruttivo. Distruttivo per chi o cosa? All'azienda e all'infrastruttura.
Torna all'argomento Puppet [, CFEngine, Chef]: non appena si pone una soluzione come questa, si perde. Tutti perdono. Perché? Perché chiunque abbia l'idea non è in grado di progettare la gestione della configurazione incapsulata sotto forma di pacchetti di sistema operativo Kickstart [, JumpStart, Automated Installer, AutoYaST, Ignite-UX, NIM] incentrati su di sé. Quando devi usare uno strumento di hacking automatizzato come Puppet (o Chef o CFEngine), significa che non hai i mezzi per progettare e implementare un processo che, con quello stesso design, imporrebbe completamente incontaminato e spegnerebbe i sistemi gestiti, completamente automatizzato e completamente non interattivo.
Un altro punto importante è, se devi avere Puppet o qualche soluzione simile per correggere manualmente qualcuno che hackera il sistema o la configurazione dell'applicazione, che risale anche al fatto di non avere l'esperienza per progettare un processo, e in quel processo un framework in cui la configurazione è impacchettata in componenti discreti. In effetti, chiunque implementa Puppet e simili, non ha il concetto di proprietari dei componenti, rilasci, gestione della configurazione, modello di maturità delle capacità. Questo sta rapidamente diventando un problema molto serio nel settore.
Lavorare con Puppet mi ha anche aiutato a imparare Ruby, che è arrivato a sostituire Bash come linguaggio predefinito per gli strumenti di sistema ".
Perché è necessario Ruby, quando una gestione completa della configurazione end-to-end può essere incapsulata nelle sezioni preinstall, postinstall, preremove e postremove dei pacchetti del sistema operativo, semplicemente usando i programmi shell Bourne, AWK e sed? Che qualcuno si spinga fino in fondo all'apprendimento di una lingua esoterica di Ruby, e di un suo dialetto nel contesto di Puppet, è completamente inutile. Il problema della gestione della configurazione è facilmente risolvibile (e, per intenderci, è stato risolto) con i programmi di shell e AWK, e un po 'di sed (1) qua e là come una colla.
È una bella sensazione vedere il manifest di Puppet configurare un'intera macchina o un nuovo servizio da zero.
È una cosa ancora più interessante vederlo fatto da Kickstart, AutoYaST o JumpStart, senza una singola riga di codice , ed essere in grado di interrogare il sistema operativo utilizzando strumenti integrati, senza bisogno di alcun software esoterico o extra , nessun client-server architettura richiesta (SSH è più che soddisfacente, molto più che soddisfacente) e vedere il sistema operativo consapevole di ogni singola modifica apportata.
5. Separare il codice dai dati. Questo è uno dei concetti più difficili da imparare. Valori hardcoding come il monitoraggio degli host nel codice del tuo modulo non sono validi. Metterli in un archivio dati (db, yaml (Hiera usa questo come predefinito), csv, qualunque cosa) che i tuoi moduli possano usare è buono. Un esempio è una webapp che utilizza Mysql. Ciò che consente è la possibilità di inviare codice e dati separatamente. Ciò semplifica il processo di sviluppo.
... Oppure si può semplicemente template i file di configurazione con variabili di shell, anche apici (ad esempio ls -1 ...
) e scrivere uno script di shell che utilizza AWK chiamare eval (1) ed espandere tutte le variabili nel modello, sfruttando in tal modo la stessa potente parser quali shell hanno incorporato. Perché renderlo complesso, quando può essere davvero, davvero semplice? Dove memorizzerai i valori di configurazione? Perché, ovunque tu voglia, come ad esempio file pkginfo (4), o un database come Oracle, o praticamente ovunque . Non sono necessarie soluzioni ultracomplex. La libreria che menziono sopra potrebbe semplicemente essere ricavata dalle sezioni preinstall o postinstall nei pacchetti del sistema operativo, rimuovendo così la duplicazione e sfruttando un pezzo di codice centrale ...
Ma soprattutto, trovo che la citazione sopra sia un esempio della prossima generazione di amministratori di sistema che necessitano di tutoraggio non dagli amministratori di sistema, ma dagli ingegneri di sistema . Trova te stesso una barba grigia e iscriviti come apprendista.