GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren und konfigurieren Sie Ansible unter CentOS 8 / RHEL 8

Ansible ist ein Open-Source-Softwarebereitstellungs- und Konfigurationsverwaltungstool für Unix-ähnliche und Microsoft Windows-Betriebssysteme.

Im Gegensatz zu Puppet, Chef und CFEngine wird die Serversoftware auf einem Computer installiert, und Clientcomputer werden über die Agentensoftware verwaltet. Bei Ansible werden die Knoten verwaltet, indem der Knoten (Ansible-Server) über SSH gesteuert wird, sodass keine Agentensoftware auf verwalteten Knoten (Client-Server)-Maschinen ausgeführt wird.

Ansible kann die Bereitstellung und das Konfigurationsmanagement von Software auf Hunderten von Knoten mit SSH durchführen, der gesamte Vorgang wird normalerweise mit einem einzigen Befehl ansible ausgeführt. In einigen Fällen müssen Sie jedoch möglicherweise mehrere Befehle für die Bereitstellung ausführen.

Diese Anleitung hilft Ihnen bei der Installation von Ansible auf CentOS 8 / RHEL 8.

Umgebung

Hostname IP-Adresse Betriebssystem Zweck
server.itzgeek.local 192.168.0.10 CentOS 8 / RHEL 8 Steuermaschine
node1.itzgeek.local 192.168.0.20 CentOS 8 Verwalteter Knoten 1
node2.itzgeek.local 192.168.0.30 CentOS 7 Verwalteter Knoten 2

Installieren Sie Ansible auf CentOS 8 / RHEL 8

Steuerknoten einrichten

Um Ansible zu installieren, müssen wir EPEL und das Ansible-Repository auf CentOS 8 bzw. RHEL 8 aktivieren.

### CentOS 8 ###

yum install -y epel-release

### RHEL 8 ###

subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms

Installieren Sie Ansible mit dem Befehl yum.

yum install -y ansible

Überprüfen Sie nach der Installation von Ansible die Version von Ansible, indem Sie den folgenden Befehl ausführen.

ansible --version

Ausgabe:

ansible 2.8.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]

Verwalteten Knoten einrichten

Clientcomputer sollten mindestens über Python 2 (Version 2.6 oder höher) oder Python 3 (Version 3.5 oder höher) verfügen.

### CentOS 8 / RHEL 8 ###

yum install -y platform-python

### CentOS 7 / RHEL 7 ###

yum install -y python

SELinux

Wenn Sie SELinux auf verwalteten Knoten aktiviert haben, müssen Sie das folgende Paket auf Knoten installieren, bevor Sie Kopier-/Datei-/Vorlagenfunktionen in Ansible verwenden können.

### CentOS 8 / RHEL 8 ###

yum install -y python3-libselinux

### CentOS 7 / RHEL 7 ###

yum install -y libselinux-python

SSH-Authentifizierung

Wie bereits erwähnt, verwendet Ansible natives OpenSSH für die Remotekommunikation. Ansible unterstützt sowohl die passwortlose als auch die Passwortauthentifizierung, um Befehle auf verwalteten Knoten auszuführen.

Hier habe ich für diese Demo passwortlose Kommunikation zwischen Ansible-Steuerknoten (Root) und den verwalteten Knoten (Root) verwendet. Ich werde Ihnen jedoch zeigen, wie Sie Ansible mit Passwortauthentifizierung verwenden.

SSH-Schlüsselauthentifizierung (passwortlose Authentifizierung)

Bei der SSH-Authentifizierung werden standardmäßig SSH-Schlüssel (passwortlose Authentifizierung) verwendet, um sich beim Remote-Rechner zu authentifizieren.

LESEN :So richten Sie die passwortlose SSH-Anmeldung unter CentOS 8 / RHEL 8 ein

LESEN :So richten Sie die passwortlose SSH-Anmeldung unter CentOS 7 / RHEL 7 ein

Wie Sie wissen, erfordern Softwarebereitstellung oder Konfigurationsänderungen, die Sie auf Knoten durchführen, Root-Berechtigungen oder root-äquivalente Berechtigungen (sudo). Richten Sie also der Einfachheit halber eine passwortlose Kommunikation zwischen dem Root-Benutzer des Ansible-Servers und dem Root-Benutzer der Knoten ein.

Passwortauthentifizierung

Die Kennwortauthentifizierung kann bei Bedarf auch verwendet werden, indem die Option –ask-pass bereitgestellt wird. Diese Option erfordert sshpass zum steuernden Rechner.

yum install -y sshpass 

Ansible-Inventar erstellen

Die Datei /etc/ansible/hosts enthält das Inventar der Remote-Hosts, mit denen sich Ansible über SSH/Winrm (Windows) verbindet, um sie zu verwalten. In diesem Moment werden wir nur sehen, wie die Konfigurationen des Remote-Linux-Knotens verwaltet werden.

Bearbeiten Sie die Bestandsdatei.

vi /etc/ansible/hosts

Geben Sie die IP-Adresse oder den Hostnamen eines oder mehrerer Remote-Systeme ein. Sie können Server mit [GROUP_NAME] gruppieren. Hier habe ich beide Maschinen zur Demoserver-Gruppe hinzugefügt.

Gruppen werden verwendet, um Systeme für eine bestimmte Verwendung zu klassifizieren. Wenn Sie keine Gruppe angeben, fungieren sie als nicht gruppierte Hosts.

[demoservers]
192.168.0.20
192.168.0.30

Überprüfen Sie die Ansible-Konnektivität

Lassen Sie uns die Konnektivität der Knoten überprüfen, indem Sie ping (Modul) von der steuernden Maschine verwenden. Dazu verwenden wir den Befehl ansible mit den Optionen -m (Modul laden) und all (alle Server) oder demoservers (eine Gruppe von Knoten).

Dieses Ping-Modul wird häufig verwendet, um Ansible-Konnektivitätsprobleme zu beheben.
# All servers - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping all

# All servers - If you use passwordless authentication and the remote user is different from logged in user on Ansible server

ansible -m ping -u raj all

# All servers - If you use password authentication and the remote user is different from logged in user on Ansible server

ansible -m ping all -u raj --ask-pass

# Only demoservers group - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping demoservers

Ausgabe:

192.168.1.20 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.30 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Im obigen Beispiel haben wir gesehen, wie man das Ping-Modul mit dem ansible-Befehl verwendet, um alle oder eine Gruppe von Remote-Hosts mit passwortloser und Passwort-Authentifizierung zu pingen.

Auf die gleiche Weise können wir verschiedene Module mit Ansible-Befehlen verwenden. Verfügbare Module finden Sie hier.

Befehl auf Knoten ausführen

Dieses Mal werden wir das Befehlsmodul mit ansible-Befehl verwenden, um Remote-Maschineninformationen abzurufen.

Die folgenden Befehle werden unter der Annahme geschrieben, dass Sie eine passwortlose Kommunikation zwischen dem Kontrollknoten und den verwalteten Knoten haben. Ich verwende eine Demoserver-Gruppe, um Befehle auszuführen.

Hostnamen prüfen

In unserem ersten Beispiel führen wir den Befehl hostname mit dem Befehlsmodul aus, um den Hostnamen von Remote-Knoten auf einmal zu erhalten.

ansible -m command -a "hostname" demoservers

Ausgabe:

192.168.1.30 | SUCCESS | rc=0 >>
node2.itzgeek.local

192.168.1.20 | SUCCESS | rc=0 >>
node1.itzgeek.local

Verfügbarkeit prüfen

Um die Betriebszeit von Knoten zu überprüfen.

 ansible -m command -a "uptime" demoservers

Ausgabe:

192.168.1.30 | SUCCESS | rc=0 >>
 16:36:45 up 56 min,  3 users,  load average: 0.00, 0.00, 0.00

192.168.1.20 | SUCCESS | rc=0 >>
 16:36:45 up  1:09,  2 users,  load average: 0.05, 0.04, 0.05

Remote-Dateien lesen

Sie können auch den Inhalt einer bestimmten Datei anzeigen.

ansible -m command -a "cat /etc/hosts" demoservers

Ausgabe:

192.168.1.30 | SUCCESS | rc=0 >>
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53

192.168.1.20 | SUCCESS | rc=0 >>
# Generated by NetworkManager
search itzgeek.local
nameserver 8.8.8.8
nameserver 192.168.1.1

Dateiausgabe umleiten

Sie können die Ausgabe (auf dem Ansible-Server) auch in einer beliebigen Datei speichern, indem Sie die Umleitung verwenden.

ansible -m command -a "cat /etc/resolv.conf" demoservers > /tmp/ouput_file

cat /tmp/ouput_file

Konfigurationsänderungen am Knoten vornehmen

Wir können das lineinfile-Modul verwenden, um Dateien auf Remote-Knoten zu bearbeiten. Um beispielsweise zusätzliche Nameserver hinzuzufügen, können wir den folgenden Befehl verwenden.

ansible -m lineinfile -a "path=/etc/resolv.conf line=nameserver 8.8.4.4" demoservers

Sie können die Änderungen mit dem folgenden Befehl bestätigen.

ansible -m command -a "cat /etc/resolv.conf | grep -i nameserver" demoservers

Schlussfolgerung

Das ist alles. Sie haben Ansible jetzt erfolgreich auf CentOS 8 / RHEL 8 installiert. Sie können mit der Erstellung von Ansible-Playbooks zur Automatisierung Ihrer Aufgaben fortfahren.


Cent OS
  1. So installieren Sie Ansible unter CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 und Debian 9

  2. So installieren Sie Ansible unter CentOS 7

  3. So installieren Sie Ansible unter CentOS 8

  4. CentOS / RHEL 7 :So installieren und konfigurieren Sie Telnet

  5. So installieren und konfigurieren Sie Samba in CentOS / RHEL

So installieren und konfigurieren Sie Samba auf RHEL 8 / CentOS 8

So installieren Sie YUM auf RHEL 8 / CentOS 8

So installieren Sie mongodb auf RHEL 8 / CentOS 8

So installieren Sie Maven auf RHEL 8 / CentOS 8

So installieren und konfigurieren Sie Checkmk unter CentOS 8 / RHEL 8

So installieren und konfigurieren Sie Jenkins unter CentOS 8 / RHEL 8