Zusammenfassung
- Ansible ist ein DevOps-Tool, das ein leistungsstarker Ersatz für PowerShell ist
- RunDeck als grafische Oberfläche ist praktisch
- Einige Leute betreiben RunDeck+Ansible zusammen
clusterssh
Um Remote-Befehle an mehrere Server zu senden, würde ich für Anfänger clusterssh
empfehlen
Um clusterssh
zu installieren bei Debian:
apt-get install clusterssh
Ein weiteres Clusterssh-Tutorial:
ClusterSSH ist ein Tk/Perl-Wrapper um Standard-Linux-Tools wie XTermand SSH. Als solches läuft es auf fast jedem POSIX-kompatiblen Betriebssystem, auf dem die Bibliotheken vorhanden sind – ich habe es unter Linux, Solaris und Mac OS X ausgeführt. Es erfordert die Perl-Bibliotheken Tk (perl-tk unter Debian oder Ubuntu) und X11::Protocol (libx11-protocol-perl auf Debian oder Ubuntu), zusätzlich zu xterm und OpenSSH.
Ansible
Als Remote-Framework für die Verwaltung mehrerer Systeme ist Ansible eine sehr interessante Alternative zu Puppet. Es ist schlanker und benötigt keine dedizierten Remote-Agenten, da es über SSH funktioniert (es wurde auch von RedHat gekauft)
Die Playbooks sind aufwendiger als die Befehlszeilenoptionen.
Um Ansible zu verwenden, benötigen Sie jedoch eine einfache Installation und die Einrichtung der Clientlisten-Textdatei.
Um danach einen Befehl auf allen Servern auszuführen, ist es so einfach wie:
ansible all -m command -a "uptime"
Die Ausgabe ist auch sehr schön formatiert und pro Regel/Server getrennt, und während sie im Hintergrund läuft, kann sie in eine Datei umgeleitet und später konsultiert werden.
Sie können mit einfachen Regeln beginnen, und die Verwendung von Ansible wird interessanter, wenn Sie in Linux wachsen und Ihre Infrastruktur größer wird. Als solches kann es so viel mehr als PowerShell.
Als Beispiel ein sehr einfaches Playbook zum Upgrade von Linux-Servern, das ich geschrieben habe:
---
- hosts: all
become: yes
gather_facts: False
tasks:
- name: updates a server
apt: update_cache=yes
- name: upgrade a server
apt: upgrade=full
Außerdem sind viele Module definiert, mit denen Sie auf einfache Weise umfassende Richtlinien schreiben können.
Modulindex - Ansible-Dokumentation
Es hat auch einen interessanten offiziellen Hub/"soziales" Netzwerk von Repositories, um nach bereits erstellten ansiblen Richtlinien der Community zu suchen. Ansible Galaxy
Ansible ist ebenfalls weit verbreitet, und Sie werden viele Projekte in Github finden, wie dieses von mir für die Einrichtung von FreeRadius.
Während Ansible ein kostenloses Open-Source-Framework ist, hat es auch eine kostenpflichtige Webpanel-Oberfläche, Ansible Tower, obwohl die Lizenzierung ziemlich teuer ist.
Heutzutage, nachdem RedHat es gekauft hat, hat Tower auch die Open-Source-Version namens AWX.
Als Bonus ist Ansible auch in der Lage, Windows-Server zu verwalten, obwohl ich es nie dafür verwendet habe.
Es ist auch in der Lage, Netzwerkgeräte (Router, Switches und Firewall) zu verwalten, was es zu einer sehr interessanten Lösung als schlüsselfertige Automatisierungslösung macht.
So installieren Sie Ansible
Runddeck
Noch einmal, für ein Remote-Framework, das einfacher zu verwenden, aber nicht so leistungsfähig wie Ansible ist, empfehle ich Rundeck.
Es ist eine sehr leistungsstarke grafische Benutzeroberfläche für mehrere Benutzer/Anmeldung, mit der Sie viele Ihrer alltäglichen Aufgaben automatisieren und sogar Sysops oder Helpdesk-Mitarbeitern verwässerte Ansichten geben können.
Wenn Sie die Befehle ausführen, erhalten Sie auch Fenster mit einer nach Server/Task aufgeschlüsselten Ausgabe.
Es kann mehrere Jobs nahtlos im Hintergrund ausführen und ermöglicht es Ihnen, den Bericht und die Ausgabe später anzuzeigen.
So installieren Sie RunDeck
Bitte beachten Sie, dass es Leute gibt, die Ansible+RunDeck als Webinterface betreiben; nicht alle Fälle sind dafür geeignet.
Es versteht sich auch von selbst, dass die Verwendung von Ansible und/oder RunDeck als Form oder Teil der Infrastrukturdokumentation ausgelegt werden kann und es im Laufe der Zeit ermöglicht, die Aktionen/Rezepte/Playbooks zu replizieren und zu verbessern.
Wenn wir schließlich über einen zentralen Befehlsserver sprechen, würde ich einen erstellen, der genau für diese Aufgabe geeignet ist. Eigentlich ist der Fachbegriff Sprungkasten. 'Jumpboxen' verbessern die Sicherheit, wenn Sie sie richtig einrichten.
Wenn Sie es interaktiv machen möchten, können Sie terminator
verwenden was erlaubt, einen Befehl an mehrere Terminals zu senden.
Siehe:Wie führe ich denselben Linux-Befehl in mehr als einer Registerkarte/Shell gleichzeitig aus?
Sie können auch pssh
verwenden (oder parallel-ssh
), bei dem es sich um einen SSH-Client handelt, der sich mit einer Liste von Hosts verbindet und den Befehl auf allen Hosts parallel ausführt:
$ 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