Riepilogo
- Ansible è uno strumento DevOps che è un potente sostituto di PowerShell
- RunDeck come interfaccia grafica è comodo
- Alcune persone eseguono insieme RunDeck+Ansible
clustersh
Per inviare comandi remoti a più server, per un principiante, consiglierei clusterssh
Per installare clusterssh
in Debian:
apt-get install clusterssh
Un altro tutorial su clusterssh:
ClusterSSH è un wrapper Tk/Perl attorno a strumenti Linux standard come XTerm e SSH. Pertanto, funzionerà praticamente su qualsiasi sistema operativo conforme a POSIX in cui esistono le librerie:l'ho eseguito su Linux, Solaris e Mac OS X. Richiede le librerie Perl Tk (perl-tk su Debian o Ubuntu) e X11::Protocol (libx11-protocol-perl su Debian o Ubuntu), oltre a xterm e OpenSSH.
Ansible
Per quanto riguarda un framework remoto per l'amministrazione di più sistemi, Ansible è un'alternativa molto interessante a Puppet. È più snello e non necessita di agenti remoti dedicati in quanto funziona su SSH (è stato acquistato anche da RedHat)
I playbook sono più elaborati delle opzioni della riga di comando.
Tuttavia, per iniziare a utilizzare Ansible è necessaria una semplice installazione e per configurare il file di testo dell'elenco dei client.
Successivamente, per eseguire un comando in tutti i server, è semplice come eseguire:
ansible all -m command -a "uptime"
L'output è anche molto ben formattato e separato per regola/server, e durante l'esecuzione in background può essere reindirizzato a un file e consultato successivamente.
Puoi iniziare con regole semplici e l'utilizzo di Ansible diventerà più interessante man mano che cresci in Linux e la tua infrastruttura diventa più grande. In quanto tale, farà molto di più di PowerShell.
Ad esempio, un semplice Playbook per aggiornare i server Linux che ho scritto:
---
- hosts: all
become: yes
gather_facts: False
tasks:
- name: updates a server
apt: update_cache=yes
- name: upgrade a server
apt: upgrade=full
Ha anche molti moduli definiti che ti permettono di scrivere facilmente policy complete.
Indice del modulo - Documentazione Ansible
Dispone inoltre di un interessante hub ufficiale/rete "social" di repository per la ricerca di policy ansible già realizzate dalla community. Ansible Galassia
Anche Ansible è ampiamente utilizzato e troverai molti progetti in github, come questo da me per l'installazione di FreeRadius.
Sebbene Ansible sia un framework open source gratuito, ha anche un'interfaccia del pannello Web a pagamento, Ansible Tower, sebbene la licenza sia piuttosto costosa.
Oggi, dopo che RedHat l'ha acquistata, tower ha anche la versione open source nota come AWX.
Come bonus, Ansible è anche in grado di amministrare i server Windows, anche se non l'ho mai usato per questo.
È anche in grado di amministrare le apparecchiature di rete (router, switch e firewall), il che lo rende una soluzione molto interessante come soluzione di automazione chiavi in mano.
Come installare Ansible
Rundeck
Ancora una volta, per un framework remoto più facile da usare, ma non così potente come Ansible, consiglio Rundeck.
È un'interfaccia grafica multiutente/di accesso molto potente in cui è possibile automatizzare gran parte delle attività quotidiane comuni e persino fornire visualizzazioni annacquate a sysop o persone dell'helpdesk.
Quando si eseguono i comandi, fornisce anche finestre con l'output suddiviso per server/attività.
Può eseguire più lavori in background senza problemi e ti consente di vedere il rapporto e l'output in un secondo momento.
Come installare RunDeck
Si prega di notare che ci sono persone che eseguono Ansible+RunDeck come interfaccia web; non tutti i casi sono appropriati per questo.
Va anche da sé che l'utilizzo di Ansible e/o RunDeck può essere interpretato come una forma o parte della documentazione dell'infrastruttura e nel tempo consente di replicare e migliorare le azioni/ricette/playbook.
Infine, parlando di un server di comando centrale, ne creerei uno adatto all'attività. In realtà il termine tecnico è un jump box. Le "jump box" migliorano la sicurezza, se le imposti correttamente.
Se vuoi farlo in modo interattivo, puoi usare terminator
che consente di trasmettere un comando a più terminali.
Vedi:Come posso eseguire lo stesso comando linux in più di una scheda/shell contemporaneamente?
Puoi anche usare pssh
(o parallel-ssh
), che è un client SSH che si connette a un elenco di host ed esegue il comando su tutti gli host in parallelo:
$ parallel-ssh -i -H "host1 host2" uname -a
[1] 11:37:12 [SUCCESS] host2
Linux host2 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[2] 11:37:12 [SUCCESS] host1
Linux host1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux