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

So richten Sie das Ansible Automation Tool in CentOS 7 ein

Hallo und willkommen zu unserem Artikel über Ansible Automation Tool, das Chef oder Puppet ähnelt. Zunächst einmal ist Ansible einfach zu installieren, einfach zu konfigurieren und leicht zu verstehen. In der IT ist es sehr wichtig, Ihre Systeme und Prozesse sehr einfach zu halten. Ansible wird für das Konfigurationsmanagement verwendet, das bei der Konfiguration Ihrer Web- und Anwendungsserver hilft und die Versionierung Ihrer Dateien erleichtert, und Sie können es auch verwenden, um verschiedene Konfigurationen in Ihren Entwicklungs-, Staging- und Produktionsumgebungen zu verwalten. Es wird auch für die Anwendungsbereitstellung verwendet. Es kann Ihre Multi-Tier-Anwendungsimplementierungen, die mehrere Gruppenserver und Datenbanken handhaben können, vollständig automatisieren.

Ansible verwendet SSH, um eine Verbindung zu Servern herzustellen und die konfigurierten Aufgaben auszuführen, indem es sich über SSH mit den Clients verbindet, ohne dass ein spezieller Agent eingerichtet werden muss. Alles, was Sie brauchen, ist ein Python und ein Benutzer, der sich anmelden und die Skripte ausführen kann, dann beginnt Ansible damit, Fakten über den Computer zu sammeln, z. B. welches Betriebssystem und welche Pakete installiert sind und welche anderen Dienste ausgeführt werden usw. Danach führt Ansible die Playbooks im YAML-Dateiformat aus , Playbooks sind eine Reihe von Befehlen, die mehrere Aufgaben ausführen können.

Voraussetzungen

In diesem Tutorial werden wir Ansible auf CentOS 7 installieren und konfigurieren und seine beiden Knoten verwalten, um seine Funktionalität zu verstehen.

In unserer Testumgebung verwenden wir drei Linux CentOS 7-VMs, eine zum Steuern, wo der Ansible-Server installiert ist, und zwei Knoten, die von diesem steuernden Computer über SSH verwaltet werden. Stellen Sie sicher, dass Python 2.6 oder 2.7 sowohl auf Ihren Steuer- als auch auf Ihren Client-Knoten installiert ist, damit Ansible erfolgreich installiert werden kann.

Lassen Sie uns mit Root-Benutzer oder Nicht-Root-Benutzer mit sudo-Berechtigungen eine Verbindung zu Ihrem Steuerungsserver herstellen, um mit Ansible zu beginnen.

EPEL-Repository einrichten

Zuerst müssen wir das ‚epel‘-Repository für CentOS 7 auf dem Kontrollserver aktivieren, da das Ansible-Paket nicht in den standardmäßigen Yum-Repositorys verfügbar ist.

Geben Sie Folgendes ein, um das EPEL-Repository unter CentOS 7/RHEL 7 zu aktivieren:

# yum install epel-release

Ansible installieren

Jetzt können wir Ansible unter CentOS 7 mit dem Befehl „yum“ installieren, der es einschließlich der erforderlichen Abhängigkeiten installiert, indem wir die Taste „y“ drücken, um wie gezeigt fortzufahren.

# yum install ansible

Sobald Sie Ansible erfolgreich installiert haben, können Sie die installierte Version mit dem folgenden Befehl überprüfen und prüfen.

# ansible --version

Schlüsselbasierte SSH-Authentifizierung mit Nodes

Um eine Bereitstellung/Verwaltung vom „localhost“ zum Remote-Host durchzuführen, müssen wir zuerst Schlüssel auf dem Ansible-Server generieren und den öffentlichen Schlüssel auf die Client-Knoten kopieren. Führen Sie den folgenden Befehl auf Ihrem Ansible-Server aus, um seine öffentlichen und privaten Schlüssel zu generieren.

# ssh-keygen -t rsa -b 4096

Nachdem Sie den SSH-Schlüssel generiert haben, kopieren Sie ihn jetzt auf den Remote-Server, indem Sie den folgenden Befehl verwenden, um SSH-Schlüssel auf Remote-Hosts zu platzieren.

# ssh-copy-id root@node1_ip

Wenn Sie einen benutzerdefinierten SSH-Port verwenden, erwähnen Sie ihn mit dem Parameter „-p“ in Ihrem Befehl. Sie werden nach dem Passwort Ihres Client-Knotens gefragt, sobald Sie das richtige Passwort Ihres Client-Knotens eingegeben haben, wird es erfolgreich autorisiert.

# ssh-copy-id -p2178 root@node1_ip
The authenticity of host '[72.25.70.83]:2178 ([72.25.70.83]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:9c:D9:35:le:09:3d:5f:31:43:a1:41:94:70:53.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Authorized uses only. All activity may be \ monitored and reported.
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh -p '2178' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Sie können den Client-Knoten auch manuell den öffentlichen RSA-Schlüssel Ihres steuernden Servers hinzufügen. Melden Sie sich dazu bei Ihrem Client-Knoten an und führen Sie die folgenden Schritte aus.

Kopieren Sie zuerst den Schlüssel aus der Datei „/root/.ssh/id_rsa.pub“ und speichern Sie ihn auf dem Client-Knoten im Home-Verzeichnis Ihres Servers oder eines anderen Benutzers, den Sie authentifizieren möchten.

[root@centos-7 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7
[root@node2 ~]# vi .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7

Speichern und beenden Sie die Datei und Sie können vom Kontrollserver aus auf Ihre beiden Client-Knoten zugreifen, ohne nach dem Root-Passwort zu fragen.

[root@centos-7 ~]# ssh -p 2178 root@node1_ip
[root@centos-7 ~]# ssh -p 2178 root@node2_ip
[root@centos-7 .ssh]# ssh -p 2178 [email protected]
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 21:42:09 2016 from 12.1.0.90

[root@node1 ~]# exit
logout
Connection to 72.25.10.83 closed.

[root@centos-7 .ssh]# ssh -p 2178 [email protected]
The authenticity of host '[72.25.10.84]:2178 ([72.25.10.84]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:3c:85:55:61:79:1d:1f:21:33:s1:s1:fd:g0:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[72.25.10.84]:2178' (ECDSA) to the list of known hosts.
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 22:03:56 2016 from 12.1.0.90
[root@node2 ~]#
[root@node2 ~]# exit
logout
Connection to 72.25.10.84 closed.

Inventar von Remote-Hosts erstellen

Nachdem Sie die SSH-Schlüsselauthentifizierung zwischen dem Ansible-Server und seinen Client-Knoten eingerichtet haben, konfigurieren Sie nun diese Remote-Hosts auf dem Ansible-Steuerungsserver, indem Sie die Datei „/etc/ansible/hosts“ bearbeiten. Diese Datei enthält das Inventar der Remote-Hosts, mit denen sich Ansible über SSH verbinden muss, um die Systeme zu verwalten.

Öffnen Sie die Datei mit einem beliebigen Editor, um sie zu konfigurieren.

[root@centos-7 ~]# vim /etc/ansible/hosts

Hier in der Konfigurationsdatei haben wir beide Client-Knoten so konfiguriert, dass sie Port '2178' verwenden. Wenn Sie den Standard-SSH-Port verwenden, geben Sie einfach Ihre Host-IP-Adresse ein.

Nach dem Speichern der Datei können Sie den folgenden Ansible-Befehl mit den Optionen „-m“ für das Modul ausführen, um die Konnektivität vom Ansible-Server zu den Remote-Servern zu überprüfen.

# ansible -m ping 72.25.10.83
# ansible -m ping 72.25.10.73

Sie können auch den Befehl belo verwenden, um alle Ihre konfigurierten Hosts zu pingen.

[root@centos-7 ~]# ansible all -m ping
72.25.10.83 | success >> {
"changed": false,
"ping": "pong"
}

72.25.10.73 | success >> {
"changed": false,
"ping": "pong"
}

Ausführen von Remote-Befehlen

In den obigen Beispielen haben wir nur das Ping-Modul verwendet, um die Remote-Hosts zu pingen. Es stehen verschiedene Module zur Verfügung, um Befehle auf entfernten Hosts auszuführen. Jetzt werden wir das Modul „command“ mit dem Befehl „ansible“ verwenden, um Remote-Maschineninformationen wie Hostnameninformationen des Systems, freien Speicherplatz und Betriebszeit wie gezeigt abzurufen.

# ansible -m command -a 'hostnamectl' 72.25.10.83
# ansible -m command -a 'df -h' 72.25.10.83
# ansible -m command -a 'uptime' 72.25.10.83

In ähnlicher Weise können Sie viele Shell-Befehle mit Ansible auf dem einzelnen Client-Host sowie auf der Gruppe Ihrer ähnlichen Hosts ausführen, z so.

# ansible -m command -a "uptime" web-servers

Playbooks in Ansible erstellen

Playbooks sind Konfigurationsverwaltungsskripte von Ansible, die zum Verwalten von Konfigurationen und Bereitstellungen auf Remotecomputern verwendet werden. Playbooks enthalten eine Reihe von Richtlinien, die Ihre Remote-Systeme implementieren sollen.

Lassen Sie uns Ihr erstes Playbook mit dem Dateinamen „httpd.yml“ erstellen, dann konfigurieren wir einen Host zum Ausführen eines Apache-Webservers. Hier wählen Sie die Konfigurationen aus, auf die die Computer in Ihrer Infrastruktur ausgerichtet werden sollen, und welche Remote-Benutzer die Aufgaben ausführen sollen, wie in der Konfigurationsdatei gezeigt.

[root@centos-7 ~]# vi httpd.yml
---
- hosts: 72.25.10.83
  remote_user: root
  tasks:
  - name: Installing Latest version of Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: (Enable it on System Boot)
    service: name=httpd enabled=yes
    notify:
      - start apache
  handlers:
    - name: start apache
      service: name=httpd state=started

Speichern und schließen Sie die Datei und erstellen Sie dann eine Demo-HTML-Datei, die im standardmäßigen Document Root von Remote-Hosts abgelegt wird.

[root@centos-7 ~]# vi /etc/ansible/index.html
Installing Apache by Ansible

Apache Web Server is installed by Ansible

Congratulations, Apache is managed through Ansible

Playbook-Konfigurationen verstehen

Da wir unser erstes Playbook erstellt haben, ist es jetzt wichtig zu verstehen, wie es funktioniert. Alle YAML-Dateien sollten mit (drei Bindestrichen) „---“ beginnen, was den Beginn eines Dokuments angibt. Dann ist die hosts-Zeile eine Liste mit einer oder mehreren Gruppen oder Host-Mustern, die durch Doppelpunkte getrennt sind. Sie können das Remote-Benutzerkonto zusammen mit dem Host angeben.

---
- hosts: 72.25.10.83
  remote_user: root

Dann haben wir eine Reihe von Aufgaben, wobei jedes Spiel eine Liste von Aufgaben enthält, die der Reihe nach ausgeführt werden, eine nach der anderen, gegen alle Maschinen, die dem Host-Muster entsprechen, bevor mit der nächsten Aufgabe fortgefahren wird.

tasks:
- name: Installing Latest version of Apache
  yum: pkg=httpd state=latest
- name: Copying the demo file
  template: src=/etc/ansible/index.html dest=/var/www/html
            owner=apache group=apache mode=0644
- name: (Enable it on System Boot)
  service: name=httpd enabled=yes

Jede Aufgabe sollte einen Namen haben, der in der Ausgabe enthalten ist. Dies wird für uns ausgegeben, daher ist es schön, einigermaßen gute Beschreibungen für jeden Aufgabenschritt zu haben. Unsere erste Aufgabe installiert also die neueste Version von Apache, die zweite kopiert die Demo-HTML (/etc/ansible/index.html) in das /var/www/html-Verzeichnis der Remote-Hosts und die dritte aktiviert den automatischen Start des Apache-Dienstes während des Systemstarts.

Danach werden „Benachrichtigungs“-Aktionen am Ende jedes Aufgabenblocks in einem Playbook ausgelöst und werden nur einmal ausgelöst, selbst wenn sie von mehreren verschiedenen Aufgaben benachrichtigt werden.

notify:
  - start apache

Das Element „notify“ enthält ein Element namens „start apache“. Dies ist ein Verweis auf einen Handler, der bestimmte Funktionen ausführen kann, wenn er innerhalb einer Aufgabe aufgerufen wird. Wir werden den „start apache“ Handler weiter unten definieren.

handlers:
  - name: start apache
    service: name=httpd state=started

Handler sind Listen von Tasks, die nur ausgeführt werden, wenn ihnen von einem Task mitgeteilt wurde, dass Änderungen auf dem Clientsystem aufgetreten sind. Da wir einen Handler haben, der den Apache-Dienst startet, nachdem das Paket installiert wurde.

Playbook in Ansible ausführen

Nachdem Sie Ihre Playbook-Konfiguration eingerichtet haben, können Sie Ihr Playbook mit dem folgenden Befehl ausführen.

# ansible-playbook -l 72.25.10.83 httpd.yml

Öffnen Sie danach Ihren Browser und navigieren Sie zur IP-Adresse Ihres Remote-Hosts, der im Ansible Inventory erwähnt wird.

http://your_client_node_ip/

Wenn Sie also die obige Seite erhalten, bedeutet dies, dass Sie Apache erfolgreich mit Ansible Playbook installiert haben. Auf die gleiche Weise können Sie viele Playbooks erstellen, um Ihre komplexen Anwendungen auf mehreren Hosts zu installieren.

Schlussfolgerung

Ansible ist sehr interessant und sehr einfach, leichtgewichtig. Kann leicht in 5 Minuten aufstehen und laufen. Sie haben also Ansible erfolgreich auf CentOS 7 installiert und seine grundlegende Verwendung gelernt, um ein einfaches Playbook für die Automatisierung der Apache-Installation zu erstellen. Ich hoffe, Sie haben dies bei der Automatisierung Ihrer Aufgaben als hilfreich empfunden.


Cent OS
  1. So richten Sie SSH-Schlüssel unter CentOS 8 ein

  2. So installieren Sie Ansible unter CentOS 8 Linux

  3. So installieren Sie Ansible unter CentOS 7

  4. So installieren Sie Ansible unter CentOS 8

  5. So richten Sie SSH-Schlüssel unter CentOS 8 ein

So richten Sie Openshift Origin unter CentOS 7 ein

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

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

So installieren Sie Wireshark unter CentOS 8

So generieren Sie einen SSH-Schlüssel in CentOS 8

So installieren Sie das Gradle-Build-Automatisierungstool unter CentOS 8