So konfigurieren Sie Ansible Managed Nodes und führen Ad-hoc-Befehle aus – Teil 3

In den beiden vorherigen Artikeln dieser Ansible-Serie haben wir die Kernkomponenten von Ansible und das Einrichten des Ansible-Steuerknotens erläutert. In diesem Teil 3 zeigen wir, wie Sie verwaltete Ansible-Knoten so konfigurieren können, dass Ad-hoc-Befehle auf Remote-Hosts ausgeführt werden.

Richten Sie die kennwortlose SSH-Authentifizierung für Ansible Managed Nodes ein

Als Zusammenfassung unseres letzten Themas erfordert das Verwalten von Remote-Hosts mit Ansible das Einrichten der kennwortlosen SSH-Authentifizierung zwischen dem Ansible-Steuerknoten und den verwalteten Hosts. Dies beinhaltet die Generierung eines Schlüsselpaars (öffentliches und privates SSH-Schlüsselpaar) auf dem Ansible Control-Knoten und das Kopieren des öffentlichen Schlüssels auf alle Remote-Hosts. Dies wird ein entscheidender Schritt in die Zukunft sein und Ihre Arbeit erheblich erleichtern.

Konfigurieren Sie die Eskalation von Berechtigungen auf verwalteten Knoten

Wenn Sie als normaler Benutzer angemeldet sind, müssen Sie möglicherweise bestimmte Aufgaben auf verwalteten Knoten ausführen, für die erhöhte Berechtigungen oder Root-Berechtigungen erforderlich sind. Diese Aufgaben umfassen die Paketverwaltung, das Hinzufügen neuer Benutzer und Gruppen sowie das Ändern von Systemkonfigurationen, um nur einige zu nennen. Um dies zu erreichen, müssen Sie bestimmte Anweisungen im Playbook aufrufen, um die Aufgaben als privilegierter Benutzer auf den Remote-Hosts auszuführen.

werden

Ansible ermöglicht es Ihnen ‘werden’ Ein anderer Benutzer auf dem verwalteten Knoten unterscheidet sich von dem aktuell angemeldeten become:yes Die Direktive erhöht Ihre Berechtigungen und ermöglicht es Ihnen, Aufgaben auszuführen, für die Root-Berechtigungen erforderlich sind, z. B. das Installieren und Aktualisieren von Paketen und den Neustart des Systems.

Betrachten Sie ein Spielbuch httpd.yml das installiert und startet Apache Webserver wie gezeigt:

---
- name: install and start Apache webserver
  hosts: webservers

  tasks:
       - name: install httpd
         yum: name=httpd  state=latest
         become: yes
       - name: check httpd status
         service: name=httpd state=started


Das become: yes Mit der Direktive können Sie Befehle als Root-Benutzer auf dem Remote-Host ausführen.

werden_benutzer

Eine weitere Anweisung, mit der Sie ein anderer Benutzer werden können, ist die werden_benutzer. Auf diese Weise können Sie beim Anmelden zu einem Sudo-Benutzer auf dem Remote-Host wechseln und nicht zu dem Benutzer, als den Sie sich anmelden.

Zum Beispiel, um einen Befehl als auszuführen tecmint Benutzer auf der Fernbedienung verwenden die Anweisung wie gezeigt.

- name: Run a command as the apache user
  command: somecommand
  become: yes
  become_user: tecmint

werden_Methode

Diese Anweisung überschreibt die in festgelegte Standardmethode ansible.cfg Datei, die normalerweise auf sudo gesetzt ist.

werden_flags

Diese werden auf Spiel- oder Aufgabenebene verwendet, z. B. wenn Sie zu einem Benutzer wechseln müssen, wenn die Shell auf Nologin eingestellt ist.

Beispielsweise,

- name: Run a command as nobody
  command: somecommand
  become: true
  become_method: su
  become_user: nobody
  become_flags: '-s /bin/sh'

Befehlszeilenoptionen in der Eskalation von Berechtigungen

Schauen wir uns einige der Befehlszeilenoptionen an, mit denen Sie Ihre Berechtigungen beim Ausführen von Befehlen erhöhen können:

  • --ask-become-pass, -K – Dadurch werden Sie aufgefordert, das Kennwort des sudo-Benutzers auf dem Remote-System einzugeben, mit dem Sie eine Verbindung herstellen möchten.
$ ansible-playbook myplaybook.yml --ask-become-pass
Ansible Become Pass
Ansible Become Pass
  • --become, -b – Auf diese Weise können Sie die Aufgabe als Root ausführen, ohne ein Kennwort einzugeben.
$ ansible-playbook myplaybook.yml --become 
  • --become-user=BECOME_USER – Sie können Aufgaben als anderer Benutzer ausführen.
$ ansible-playbook myplaybook.yml --become-user=tecmint
Ansible Werden Sie Benutzer
Ansible Werden Sie Benutzer

Überprüfen Sie eine funktionierende Konfiguration mithilfe von Ad-hoc-Ansible-Befehlen

Manchmal möchten Sie möglicherweise schnelle und einfache Aufgaben auf Remote-Hosts oder -Servern in Ansible ausführen, ohne unbedingt ein Playbook erstellen zu müssen. In diesem Fall müssten Sie eine ausführen dazu Befehl.

Was ist ein Ad-hoc-Befehl?

Ein Ansible Ad-hoc-Befehl ist ein einzeiliger Befehl, mit dem Sie einfache Aufgaben auf einfache und dennoch effiziente Weise ausführen können, ohne Playbooks erstellen zu müssen. Zu diesen Aufgaben gehören das Kopieren von Dateien zwischen Hosts, das Neustarten von Servern, das Hinzufügen und Entfernen von Benutzern und die Installation eines einzelnen Pakets.

In diesem Tutorial untersuchen wir verschiedene Anwendungen von Ansible Ad-Hoc-Befehlen. Wir werden das benutzen Inventardatei unten für eine Demonstration.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Grundlegende Verwendung von Ad-hoc-Befehlen

Die grundlegendste Verwendung von Ansible-Adhoc-Befehlen ist das Pingen eines Hosts oder einer Gruppe von Hosts.

# ansible -m ping all

Im obigen Befehl wird die -m Parameter ist die Moduloption. Ping ist der Ad-hoc-Befehl und der zweite Parameter repräsentiert alle Hosts in der Inventardatei. Die Ausgabe des Befehls wird unten gezeigt:

Ansible Ping Alle Hosts
Ansible Ping Alle Hosts

Ersetzen Sie zum Pingen eine bestimmte Gruppe von Hosts ‘alles’ Parameter mit dem Gruppennamen. Im folgenden Beispiel testen wir die Konnektivität mit Hosts unter der Gruppe Webserver.

# ansible -m ping webservers
Ansible Ping-Gruppe von Hosts
Ansible Ping-Gruppe von Hosts

Zusätzlich können Sie die verwenden -a Attribut zur Angabe regulärer Linux-Befehle in doppelten Anführungszeichen. Führen Sie beispielsweise Folgendes aus, um die Systemverfügbarkeit von Remote-Systemen zu überprüfen:

# ansible -a "uptime" all
Ansible Check Uptime des Remote-Hosts
Ansible Check Uptime des Remote-Hosts

Um die Festplattennutzung von Remote-Hosts zu überprüfen, führen Sie.

# ansible -a "df -Th" all
Ansible Überprüfen Sie die Festplattennutzung von Remote-Hosts
Ansible Überprüfen Sie die Festplattennutzung von Remote-Hosts

Es gibt Hunderte von Modulen, die Sie mit dem Adhoc-Befehl verwenden können. Führen Sie den folgenden Befehl aus, um die gesamte Liste der Module mit ihren Beschreibungen anzuzeigen.

# ansible-doc -l

Führen Sie den Befehl aus, um detaillierte Informationen zu einem bestimmten Modul anzuzeigen.

# ansible-doc module_name

Zum Beispiel, um nach weiteren Details zu suchen yum Modul Lauf:

# ansible-doc yum
Ansible Check Yum Modul
Ansible Check Yum Modul

Verwalten von Paketen / Diensten mit Ansible

Ansible Ad-hoc-Befehle können zum Installieren und Entfernen von Paketen mit verwendet werden lecker und geeignet Paketmanager.

So installieren Sie den Apache-Webserver auf dem CentOS 7 Host unter Webserver-Gruppe in der Inventardatei Führen Sie den folgenden Befehl aus:

# ansible webservers -m yum -a "name=httpd  state=present"
Ansible Installieren Sie Apache auf Remote-Hosts
Ansible Installieren Sie Apache auf Remote-Hosts

Melden Sie sich beim Remoteclient an und führen Sie es aus, um die Installation des Apache-Webservers zu überprüfen.

# rpm -qa | grep httpd
Bestätigen Sie die Apache-Installation
Bestätigen Sie die Apache-Installation

Um Apache zu deinstallieren, ändern Sie einfach den Status von Geschenk zu abwesend.

# ansible webservers -m yum -a "name=httpd  state=absent"
Ansible Entfernen Sie Apache
Ansible Entfernen Sie Apache

Wiederum, um das Entfernen von httpd run zu bestätigen.

# rpm -qa | grep httpd
Bestätigen Sie die Entfernung von Apache
Bestätigen Sie die Entfernung von Apache

Wie bereits erwähnt, wurden Apache-Webserver-Pakete gelöscht.

Erstellen von Benutzern und Gruppen mit Ansible

Beim Erstellen von Benutzern wird die ‘Benutzer‘Modul ist praktisch. So erstellen Sie einen neuen Benutzer James mit Passwort roter Hut Geben Sie auf dem Client-System database_server den Befehl aus.

# ansible database_server -m user -a "name=james password=redhat"
Ansible Benutzer auf Remote-Hosts erstellen
Ansible Benutzer auf Remote-Hosts erstellen

Führen Sie den folgenden Befehl aus, um die Erstellung des neuen Benutzers zu bestätigen:

# ansible database_servers -a "id james"
Ansible Bestätigen Sie die Benutzererstellung
Ansible Bestätigen Sie die Benutzererstellung

Führen Sie den folgenden Befehl aus, um den Benutzer zu entfernen:

# ansible database_servers -m user -a "name=james state=absent"
Ansible Benutzer entfernen
Ansible Benutzer entfernen

Eskalation von Berechtigungen

Wenn Sie Ansible als regulärer Benutzer ausführen, bietet Ansible eine Eskalation von Berechtigungen auf Remote-Hosts mithilfe von --become Option zum Erwerb von Root-Rechten und -k um nach dem Passwort zu fragen.

Zum Beispiel, um den Ad-hoc-Befehl Ansible auszuführen. ‘netstat -pnltu‘mit der privilegierten Option –-become und Option -K um nach dem Kennwort des Root-Benutzers zu fragen, um den Befehl auszuführen.

$ ansible webservers -m shell -a 'netstat -pnltu' --become -K
Ansible Eskalation von Berechtigungen
Ansible Eskalation von Berechtigungen

Verwenden Sie die Taste, um ein anderer Benutzer als root zu werden --become-user Attribut.

Zum Beispiel laufen ‘df -Th‘ wie tecmint Benutzer auf den Remote-Hosts und Aufforderung zur Eingabe des Kennworts:

$ ansible all -m shell -a 'df -Th' --become-user tecmint -K
Ansible Werden Sie ein anderer Benutzer
Ansible Werden Sie ein anderer Benutzer

Sammeln von Fakten über Hostsysteme

Fakten Weitere Informationen zu einem System finden Sie hier. Dies umfasst Informationen zu IP-Adresse, Systemarchitektur, Speicher und CPU, um nur einige zu nennen.

Führen Sie den folgenden Befehl aus, um Informationen zu Remote-Hosts abzurufen:

$ ansible all -m setup 
Ansible Gather System Facts
Ansible Gather System Facts

Dateiübertragung / Kopieren von Dateien

Ansible verwendet das Modul Kopieren um Dateien sicher vom Ansible-Steuerelement auf mehrere Remote-Hosts zu kopieren.

Unten finden Sie ein Beispiel für einen Kopiervorgang:

# ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"
Ansible-Kopierdateien auf Remote-Host
Ansible-Kopierdateien auf Remote-Host

Der Befehl kopiert die / Var / log / sicher Datei im Ansible Control-Knoten an Remote-Hosts in der Webserver-Gruppe in der / tmp Ziel.

Du kannst den … benutzen Dateimodul Berechtigungen und Dateibesitz ändern.

# ansible webservers -m file -a "dest=/tmp/secure mode=600"
Ansible Change File Permissions
Ansible Change File Permissions

Darüber hinaus können Sie die Eigentümer- und Gruppenargumente wie folgt anhängen:

# ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"
Ansible Benutzer- und Gruppenattribute anhängen
Ansible Benutzer- und Gruppenattribute anhängen

Sie können auch Verzeichnisse erstellen, ähnlich wie mkdir -p wie gezeigt.

$ ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"

Beispielsweise,

$ ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"
Ansible Erstellen Sie ein Verzeichnis
Ansible Erstellen Sie ein Verzeichnis
Fazit

In diesem Artikel wird erläutert, wie Sie verwaltete Knoten so konfigurieren können, dass Ansible-Ad-hoc-Befehle zum Verwalten von Remote-Hosts ausgeführt werden. Wir hoffen, Sie fanden es nützlich. Probieren Sie es aus und lassen Sie uns wissen, wie es gelaufen ist.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *