L'automazione delle attività che svolgiamo è una delle parti più importanti del nostro lavoro di amministratori di sistema. Non si tratta solo di eseguire le numerose attività necessarie per mantenere attivi e funzionanti i sistemi che supportiamo. Si tratta di rendere le cose facili a noi stessi e ad altri amministratori di sistema che potrebbero sostituirci mentre siamo in vacanza o ammalati; si tratta di garantire che possiamo svolgere i nostri lavori in modo rapido e semplice con un minimo di lavoro e intervento da parte nostra; si tratta - hmmm, dovrei davvero dirlo - di essere l'amministratore di sistema pigro.
Ho scritto molto sull'automazione nei miei libri e articoli e il mio mantra è sempre "automatizzare tutto". Ma come fai a sapere da dove cominciare?
[ Potrebbe interessarti anche: 8 suggerimenti per un'automazione affidabile dei sistemi Linux ]
Il punto dolente
Ho iniziato la strada verso l'automazione riducendo un grave punto dolente per una delle attività più importanti eseguite dagli amministratori di sistema:i backup. Ho iniziato con una rete molto piccola: un computer e una connessione Internet. I backup erano facili, anche se la tecnologia era costituita da una serie di unità nastro che alla fine si guastavano.
Inizialmente, il venerdì sera digitavo un comando per eseguire il backup di tutte le mie directory importanti e talvolta verificavo che i backup fossero stati creati correttamente. Erano, principalmente, a causa del nastro.
Man mano che la mia rete cresceva e diventavo responsabile di reti diverse dalla mia, ho scoperto che l'utilizzo della riga di comando per eseguire backup multipli diventava piuttosto noioso. Tuttavia, la tecnologia è avanzata e ho anche scoperto che i dischi rigidi USB esterni sono un eccellente supporto di backup e uno script rende molto più semplice il backup di diversi computer. L'utilizzo di processi cron o timer di sistema mi consente anche di pianificare i backup.
Il mio attuale sistema di backup utilizza uno script Bash che utilizza rsync per creare backup fino a una dozzina di computer nella mia rete domestica esistente. I backup vengono prima creati su un disco rigido interno da 4 TB e quindi scritti su uno di una serie di dischi rigidi USB esterni da 4 TB. Posso trasportare facilmente le unità esterne nella mia cassetta di sicurezza per il backup fuori sede. Puoi leggere i dettagli di questo sistema di backup nel mio articolo, Utilizzo di rsync per eseguire il backup del tuo sistema Linux. La chiave è trovare il punto dolente più intenso e iniziare con quello.
La mia strategia
Ho davvero solo una strategia per determinare cosa automatizzare prima o dopo. È semplicemente determinare il compito che mi causa più dolore in questo momento. Quel dolore potrebbe essere dover passare molto tempo a digitare ripetutamente gli stessi comandi, aspettando che le cose accadano prima di inserire il comando successivo, ricordando la sintassi corretta per i comandi che uso frequentemente o altro.
Probabilmente conosci già la fonte del maggior dolore nella tua vita di amministratore di sistema. Questa è la prima cosa che dovresti considerare di automatizzare, soprattutto se è relativamente piccolo e non così importante o importante come un sistema di backup completo e avanzato. Ho iniziato con un semplice sistema di backup che utilizzava tar e alcune funzioni divertenti di SSH, di cui ho scritto in Best Couple del 2015:tar e ssh.
Altri punti deboli per me sono stati l'esecuzione degli aggiornamenti di Fedora, comprese le correzioni di sicurezza e funzionali, nonché i miglioramenti delle funzionalità. Ciò include anche l'esecuzione di aggiornamenti da una versione di Fedora alla successiva, ad esempio da Fedora 32 a Fedora 33.
Ci sono anche molte opzioni per implementare l'automazione indipendentemente dall'attività. Una parte della mia strategia è stata quella di iniziare utilizzando gli script per comprendere appieno le soluzioni e gli eventuali problemi che si potevano incontrare. Scriverò uno script per risolvere un problema su un host, lo copierò su tutti gli host della rete, quindi digiterò i programmi Bash della riga di comando per eseguire quell'attività su tutti gli host. Questo assume la forma:
for host-name in `cat ~/list-of-hosts` ; do ssh host-name "script-name"; done
Ma anche questo diventa un lavoro ingrato e un altro punto dolente con un numero sufficiente di host su un numero sufficiente di reti. Può anche essere problematico quando alcuni host devono essere trattati in modo diverso dagli altri. Ho scoperto che strumenti più avanzati come Ansible possono automatizzare le attività su molti host su una rete trattando alcuni tipi, come i server, in modo diverso dalle workstation standard. Ansible non richiede la distribuzione di script su ciascun host per svolgere il proprio lavoro; non è nemmeno necessario installarlo su ciascun host, solo sul sistema utilizzato come "hub".
Il punto dolente del PHB
Tutti abbiamo avuto capi dai capelli a punta (PHB) e talvolta sono il punto dolente. Supponiamo che qualche PHB chieda un elenco di tutti gli RPM su un particolare computer Linux e una breve descrizione di ciascuno. Mi è successo mentre lavoravo nello Stato della Carolina del Nord. L'open source non era "approvato" per l'uso da parte delle agenzie statali in quel momento e usavo Linux solo sul mio computer desktop. I PHB avevano bisogno di un elenco di ogni software installato sul mio sistema in modo da poter "approvare" un'eccezione.
Mi ci sono voluti circa cinque minuti per scrivere uno script rapido che potesse essere eseguito tutte le volte che mi hanno posto questa stessa domanda. Elencava i pacchetti RPM installati sul mio host ed estraeva la descrizione da ogni pacchetto. Questo script ha prodotto un elenco di oltre 1.900 pacchetti con una breve descrizione di ciascuno. Ho inviato questa lista al PHB che l'aveva richiesta e non ne ho mai più sentito parlare, mai più.
A volte il punto dolente si risolve facilmente e rapidamente. Ma i PHB di solito richiedono un'attenzione immediata.
[ Cerchi ulteriori informazioni sull'automazione dei sistemi? Inizia con The Automated Enterprise, un libro gratuito di Red Hat. ]
Pensieri finali
Ho iniziato creando un semplice script di automazione per affrontare l'attività che mi ha causato più dolore. Sono quindi passato al punto dolente successivo e così via. Alla fine, quei punti dolenti originali tornano e devono essere perfezionati utilizzando strumenti più avanzati come Ansible. Questo è un processo iterativo che non finirà mai.