Ansibel ist ein kostenloses Konfigurationsverwaltungstool und unterstützt die Verwaltung der Konfigurationen von Unix-ähnlichen und Microsoft Windows-Systemen. Ansibel verwaltet Knoten über SSH oder PowerShell und Python, um darauf installiert zu werden.
Ansibel hilft Ihnen bei der Konfiguration, Verwaltung und Bereitstellung von Software auf Hunderten von Knoten mit SSH, der gesamte Vorgang kann mit einem einzigen Befehl ansible
ausgeführt werden . 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 unter CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .
Architektur
Wenn Sie andere Konfigurationsverwaltungstools wie Puppet, Chef und CFEngine verwenden, wird die Serversoftware auf einem Computer installiert und die Clientcomputer werden über den Agenten verwaltet. Bei Ansible werden die Knoten verwaltet, indem der Computer (Ansible-Server) über SSH gesteuert wird, sodass auf den Knotencomputern kein Agent ausgeführt wird.
Ansible stellt Module über SSH auf Knoten bereit, und diese Module werden vorübergehend in den Knoten gespeichert und kommunizieren mit dem Ansible-Server über ein JSON-Protokoll. Module sind nichts anderes als ein in Python, Perl, Ruby geschriebenes Skript , bash usw.
Systemanforderungen
Steuerungsmaschine
Sie können Ansible auf jedem Computer ausführen, auf dem Python 2.6 oder 2.7 installiert ist (Windows wird für den Kontrollcomputer nicht unterstützt).
Unterstützt Red Hat, Debian, CentOS, OS X und alle BSDs.
Client-Knoten
Clientcomputer sollten mindestens über Python 2 (Version 2.6 oder höher) oder Python 3 (Version 3.5 oder höher) verfügen
Wenn Sie SELinux auf Remote-Knoten aktiviert haben, müssen Sie libselinux-python
installieren Paket auf Knoten, bevor Sie Kopier-/Datei-/Vorlagenfunktionen in Ansible
Umgebung
Hostname | IP-Adresse | Betriebssystem | Zweck |
---|---|---|---|
server.itzgeek.local | 192.168.1.10 | CentOS 7 / Ubuntu 18.04 / Debian 9 | Steuermaschine |
node1.itzgeek.local | 192.168.1.20 | CentOS 7 | Verwalteter Knoten 1 |
node2.itzgeek.local | 192.168.1.30 | Ubuntu 18.04 | Verwalteter Knoten 2 |
Installieren Sie Ansible auf CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9
Steuerungsgerät einrichten
Um Ansible zu installieren, müssen wir EPEL-Repository auf CentOS 7 / RHEL 7 aktivieren .
### CentOS 7 ### yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm ### RHEL 7 ### subscription-manager repos --enable rhel-7-server-ansible-2.6-rpms ### Ubuntu 18.04 / Ubuntu 16.04 ### sudo apt-get update sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update ### Debian 9 ### sudo apt-get install dirmngr sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list sudo apt-get update
Installieren Sie Ansible.
### CentOS 7 / RHEL 7 & Fedora 28 ### yum install -y ansible ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo apt-get 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.6.3 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
Verwaltete 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 7 / RHEL 7 & Fedora ### yum install -y python ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo apt-get install -y python
SELinux (CentOS / RHEL / Fedora)
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.
yum install -y libselinux-python
SSH-Authentifizierung
Wie bereits erwähnt, verwendet Ansible natives OpenSSH für die Remotekommunikation. Ansible unterstützt sowohl kennwortlos und Passwort Authentifizierung zum Ausführen von Befehlen auf verwalteten Knoten.
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 7 / RHEL 7 ein
Obwohl der obige Link für CentOS gilt, funktionieren die darin enthaltenen Schritte auch für Ubuntu / Debian.Nachdem Sie die passwortlose Kommunikation eingerichtet haben, überprüfen Sie sie.
ssh [email protected] ssh [email protected]
Sie sollten sich jetzt ohne Passwort beim Remote-Rechner anmelden können.
Passwortauthentifizierung
Die Kennwortauthentifizierung kann bei Bedarf auch verwendet werden, indem die Option --ask-pass
bereitgestellt wird . Diese Option erfordert sshpass an die ansteuernde Maschine.
### CentOS 7 / RHEL 7 & Fedora ### yum install -y sshpass ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo apt-get update sudo apt-get install -y sshpassHier habe ich für diese Demo passwortlose Kommunikation zwischen Ansible-Steuerknoten und den verwalteten Knoten verwendet.
Benutzername des Ansible-Servers =root
Benutzername des verwalteten Knotens =raj
Ansible-Inventar erstellen
Bearbeiten (oder erstellen) Sie /etc/ansible/hosts Datei. Diese Datei enthält das Inventar von Remote-Hosts, mit denen sich Ansible über SSH verbindet, um sie zu verwalten.
### CentOS 7 / RHEL 7 & Fedora ### vi /etc/ansible/hosts ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo nano /etc/ansible/hosts
Setzen Sie ein oder mehrere Remote-Systeme ein und gruppieren Sie sie. Hier habe ich beide Maschinen zur Demo-Server-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.
[demo-servers] 192.168.1.20 192.168.1.30
Erster Befehl
Jetzt ist es an der Zeit, alle unsere Knoten zu überprüfen, indem Sie einfach einen Ping von der steuernden Maschine ausführen. Dazu verwenden wir den Befehl ansible mit Optionen -m (Modul laden) und alle (alle Server).
# all servers - Works when both server's and client's user name are same (Passwordless) ansible all -m ping # all servers - "raj" is managed node's user (Passwordless) ansible all -u raj -m ping OR # Only demo-servers group - "raj" is managed node's user (Passwordless) ansible demo-servers -u raj -m ping OR # If you use password authendication ansible -m ping all -u raj --ask-pass
Ausgabe:
192.168.1.20 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.30 | SUCCESS => { "changed": false, "ping": "pong" }
Im obigen Beispiel haben wir das Ping-Modul mit ansible verwendet Befehl, um alle oder eine Gruppe von Remote-Hosts zu pingen.
Auf die gleiche Weise können wir verschiedene Module mit ansible verwenden Befehl finden Sie verfügbare Module hier .
Hier habe ich für diese Demo passwortlose Kommunikation zwischen Ansible-Steuerknoten und den verwalteten Knoten verwendet.Benutzername des Ansible-Servers =root
Benutzername des verwalteten Knotens =raj
Also haben alle meine Ansible-Befehle
-u raj
Remote-Befehlsausführung
Dieses Mal verwenden wir den Befehl Modul mit ansible Befehl zum Abrufen von Remote-Maschineninformationen.
Zum Beispiel führen wir hostname aus Befehl mit Befehl Modul, um den Hostnamen entfernter Hosts auf einmal zu erhalten.
ansible -m command -a "hostname" -u raj demo-servers
Ausgabe:
192.168.1.30 | SUCCESS | rc=0 >> node2.itzgeek.local 192.168.1.20 | SUCCESS | rc=0 >> node1.itzgeek.local
Mit dem folgenden Befehl erhalten wir Partitionsdetails.
ansible -m command -a "df -hT" -u raj demo-servers
Ausgabe:
192.168.1.30 | SUCCESS | rc=0 >> Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 395M 1.5M 393M 1% /run /dev/sda4 ext4 94G 4.9G 84G 6% / tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/loop0 squashfs 87M 87M 0 100% /snap/core/4486 /dev/loop3 squashfs 3.4M 3.4M 0 100% /snap/gnome-system-monitor/36 /dev/loop1 squashfs 1.7M 1.7M 0 100% /snap/gnome-calculator/154 /dev/loop2 squashfs 141M 141M 0 100% /snap/gnome-3-26-1604/59 /dev/loop4 squashfs 21M 21M 0 100% /snap/gnome-logs/25 /dev/loop5 squashfs 88M 88M 0 100% /snap/core/5328 /dev/loop6 squashfs 13M 13M 0 100% /snap/gnome-characters/69 /dev/sda1 vfat 93M 4.6M 88M 5% /boot/efi tmpfs tmpfs 395M 28K 395M 1% /run/user/120 tmpfs tmpfs 395M 36K 395M 1% /run/user/1000 /dev/loop7 squashfs 15M 15M 0 100% /snap/gnome-logs/40 192.168.1.20 | SUCCESS | rc=0 >> Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 50G 1.1G 49G 3% / devtmpfs devtmpfs 1.4G 0 1.4G 0% /dev tmpfs tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs tmpfs 1.5G 8.5M 1.4G 1% /run tmpfs tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 188M 827M 19% /boot /dev/mapper/centos-home xfs 46G 33M 46G 1% /home tmpfs tmpfs 287M 0 287M 0% /run/user/1000 tmpfs tmpfs 287M 0 287M 0% /run/user/0
Um die Betriebszeit zu überprüfen und Details auf beiden Knoten zu laden.
ansible -m command -a "uptime" -u raj demo-servers
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
Sie können auch den Inhalt der jeweiligen Datei prüfen.
ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers
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
Sie können die Ausgabe auch in einer beliebigen Datei speichern, indem Sie wie unten beschrieben umleiten.
ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers > /tmp/ouput_file cat /tmp/ouput_file
Auf diese Weise können Sie viele Shell-Befehle mit Ansible ausführen.
Sie haben Ansible jetzt erfolgreich auf CentOS 7 installiert / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .
MEHR LESEN :So erstellen Sie Ansible Playbooks für die IT-Automatisierung
Das ist alles.