Einführung und Bereitstellung gängiger Module für den automatisierten Betrieb und die Wartung von Ansible

Inhaltsverzeichnis

1. Überblick über Ansible 1. Einführung in Ansible

2.Ansible hat die folgenden Eigenschaften

2. Installation und Bereitstellung einer Ansible-Umgebung 

1. Vorbereitung der Umgebung

2. Installieren Sie Ansible

(1) Installieren Sie die Epel-Erweiterungsquelle auf der Verwaltungsseite und installieren Sie Ansible

​(2)Baumabfragetool 

(3) Hostliste konfigurieren 

(4) Konfigurieren Sie die Schlüsselpaarüberprüfung 

3. Ansible-Befehlszeilenmodul

1.Ansible-doc-Befehl – ​​Standardmodul – Befehl ausführen

2. Gemeinsame Ansible-Module 

(1)Befehlsmodul 

(2) Cron-Modul 

(3)Benutzermodul (Benutzerverwaltung)

(4)Gruppenmodul (Benutzer-(Gruppen-)Modul)

(5)Kopiermodul (Kopiermodul)

​(6)Dateimodul (Dateiattribute angeben)

(7)Ping-Modul (Konnektivitätsstatus testen)  

(8)Servicemodul (Servicestatus verwalten)

(9).Shell-Modul (interaktionsfrei)

(10).yum-Modul (Softwarepaket installieren/deinstallieren)

(11).script-Modul (Skript ausführen) 

(12).Setup-Modul - (Informationen sammeln) 


1. Überblick über Ansible
1. Einführung in Ansible

        Ansible ist ein auf Python basierendes Konfigurationsmanagement- und Anwendungsbereitstellungstool, das mittlerweile auch im Bereich der automatisierten Verwaltung glänzt. Es vereint die Vorteile vieler etablierter Betriebs- und Wartungstools. Ansible kann grundsätzlich alle Funktionen implementieren, die Pubbet und Saltstack leisten können.

        Ansible kann Tausende von Hosts stapelweise konfigurieren, bereitstellen und verwalten. Beispielsweise war es in der Vergangenheit notwendig, auf einen oder mehrere Vorgänge umzusteigen, die auf jedem Host ausgeführt werden. Mit Ansible müssen Sie nur die Vorgänge aller Hosts auf einem festen Ansible-Kontrollknoten abschließen.

        Ansible arbeitet auf Basis von Modulen. Es stellt nur ein laufendes Framework bereit. Es ist nicht in der Lage, Aufgaben abzuschließen. Es sind die Module von Ansible, die tatsächlich Vorgänge ausführen. Beispielsweise wird das Kopiermodul verwendet, um Dateien auf den Remote-Host zu kopieren, und das Das Servicemodul dient der Verwaltung. Starten, Stoppen, Neustarten von Diensten usw.

        Eines der charakteristischeren Merkmale von Ansible ist Agentless, das heißt, es gibt keinen Agenten. Es ist wie ein gewöhnlicher Befehl, keine C/S-Software. Ansible muss nur einmal auf einem Host als Kontrollknoten installiert werden. Normalerweise Es basiert auf einer SSH-Verbindung und wird zur Steuerung des Remote-Hosts verwendet. Ansible oder andere zusätzliche Dienste müssen nicht auf dem Remote-Host installiert werden.

        Wenn der Benutzer Befehle oder Playbooks in das Serverterminal eingibt, werden die Playbooks anhand vorgegebener Regeln in Spiele zerlegt und dann in Aufgaben organisiert, die von Ansible erkannt werden können, wobei Module und Plug-Ins aufgerufen werden und temporäre Dateien über SSH gesendet werden Die Hostliste. Führen Sie die Ergebnisse aus, geben Sie sie an den Remote-Client zurück und löschen Sie sie nach der Ausführung automatisch.

        Eine weitere Besonderheit von Ansible besteht darin, dass die meisten seiner Module idempotent sind. Die sogenannte Idempotenz bedeutet, dass mehrere Operationen oder mehrere Ausführungen eine konsistente Auswirkung auf die Systemressourcen haben. Wenn Sie beispielsweise den Befehl systemctl stop xxx ausführen, um einen Dienst zu stoppen, wird, wenn festgestellt wird, dass sich der zu stoppende Zieldienst bereits in einem gestoppten Zustand befindet, nichts unternommen, sodass das Ergebnis mehrerer Stopps immer noch Stopp ist ändert das Ergebnis nicht. Es ist idempotent. Und systemctl restart xxx ist nicht idempotent.

        Viele Module von Ansible ermitteln bei der Ausführung zunächst, ob der Zielknoten die Aufgabe ausführen möchte. Daher können Sie Ansible die Aufgabe sicher und mutig ausführen lassen. Die wiederholte Ausführung einer Aufgabe führt in den meisten Fällen zu keinen Nebenwirkungen.

2.Ansible hat die folgenden Eigenschaften

①Die Bereitstellung ist einfach, Sie müssen nur die Ansible-Umgebung auf der Hauptsteuerungsseite bereitstellen und die kontrollierte Seite muss keine Vorgänge ausführen
②Das SSH-Protokollgerät wird verwendet für die standardmäßige Verwaltung;
③Zentralisierte Master-Slave-Verwaltung
④Einfache Konfiguration, leistungsstarke Funktionen und starke Skalierbarkeit:
⑤Unterstützt API und benutzerdefinierte Module, die einfach über Python-Erweiterungen verwendet werden können
⑥Verwenden Sie Playbooks, um leistungsstarke Konfigurations- und Statusverwaltung anzupassen
⑦Gute Unterstützung für Cloud-Computing-Plattformen und Big Data a>

2. Installation und Bereitstellung einer Ansible-Umgebung 

1. Vorbereitung der Umgebung

Verwaltungsende: 192.168.40.60 ansible                    

Verwaltetes Ende: 192.168.40.50                                

Verwaltetes Ende: 192.168.40.40

2. Installieren Sie Ansible

(1) Installieren Sie die Epel-Erweiterungsquelle auf der Verwaltungsseite und installieren Sie Ansible

yum install -y epel-release                                                                                                                                                                //Installieren Sie zuerst die Epel-Quelle

 (2)Baumabfragetool 

yum -y install tree
 
tree /etc/ansible
 
//ansible-Verzeichnisstruktur
/etc/ ansible/
ansible.cfg #ansible-Konfigurationsdatei, muss im Allgemeinen nicht geändert werden
hosts #ansible-Hostliste, die zum Speichern von Informationen über Remote-Hosts verwendet wird, die benötigt werden verwaltet werden
roles/       #Öffentliches Rollenverzeichnis

 

(3) Hostliste konfigurieren 

cd /etc/ansible
vim hosts
[webservers] #Konfigurationsgruppenname
192.168.40.50 # Die verwaltete Host-IP-Adresse oder der Hostname, der in der Gruppe enthalten ist (der Hostname muss zuerst in der Datei /etc/hosts geändert werden)
[dbservers]
192.168.40.40< /span>

 (4) Konfigurieren Sie die Schlüsselpaarüberprüfung 

ssh-keygen -t rsa #Drücken Sie die Eingabetaste bis zum Anschlag und melden Sie sich ohne Passwort an
 
sshpass -p '123456' ssh-copy-id root@ 192.168.40.50
sshpass -p '123456' ssh-copy-id [email protected]
oder
 
ssh -copy-id [email protected]
ssh-copy-id [email protected]

 

 

3. AnsibleBefehlszeilenmodul

1.Ansible-doc-Befehl – ​​Standardmodul – Befehl ausführen

Geeignet für die Verwendung einfacher Befehle, unterstützt keine Symbole wie "<", ">", "|", "", "&"

Der Befehl ansible-doc wird häufig verwendet, um Modulinformationen abzurufen und bei der Verwendung zu helfen.

//Alle installierten Module auflisten; Hinweis: Drücken Sie zum Beenden q.
ansible-doc -l
//-s listet yum-Modulbeschreibungsinformationen auf und Operationsaktionen
ansible-doc -s yum

 2.ansible gemeinsame Module 

 Befehlsformat: A ASIBLE [Host] [-M Modul] [-a args]
                                     Parameter

(1)Befehlsmodul 

//指定ip执行date
ansible 192.168.40.60 -m command -a 'date'
//指定分类Datum
ansible webserver -m command -a 'date'
ansible mysql -m command -a 'date'
//所有hosts主机执行date
ansible all -m command -a 'date'

//Wenn Sie das Modul -m nicht hinzufügen, wird das Befehlsmodul standardmäßig ausgeführt
ansible all -a 'ls /'

 

(2) Cron-Modul 

 Dieses Modul eignet sich zur Verwaltung cron geplanter Aufgaben. Die verwendete Syntax stimmt mit der Syntax in unserer crontab Datei überein

Informationen zum Cron-Modul anzeigen

ansible-doc -s cron
#Cron-Modulinformationen anzeigen
ansible-doc -s cron

#webserver: Kategorie -m gibt das Modul an -a gibt die Anweisungen im Modul aus. Minuten: jede Minute, Job: Ausgabe Hallo, Jobname: Test
ansible Webserver -m Cron -a 'minute="*/1" job="/usr/bin/echo hallo" name="test"'

#Geplante Aufgabenbefehle anzeigen
ansible webserver -a 'crontab -l'

#Geplante Aufgaben entfernen
ansible webserver -m cron -a 'name="test" state=absent'

 

(3)Benutzermodul (Benutzerverwaltung)

Das Modul dient hauptsächlich der Verwaltung von Benutzerkonten

Das Benutzermodul fordert drei Anweisungen an: useradd, userdel und usermod.

Benutzermodulinformationen anzeigen 

 ansible -ein Benutzer

//Benutzer test01 erstellen
ansible mysql -m user -a 'name="test01"'
/ /Erstellte Benutzerinformationen anzeigen
ansible mysql -a 'tail /etc/passwd'
//Benutzer test01 löschen< a i=5> ansible mysql -m user -a 'name="test01" state=absent'

 

(4)Gruppenmodul (Benutzer-(Gruppen-)Modul)

Dieses Modul wird hauptsächlich zum Hinzufügen oder Löschen von Gruppen verwendet.
Das Gruppenmodul fordert drei Anweisungen an: Groupadd, Groupdel und Groupmod.

Informationen zum Gruppenmodul anzeigen

 ansible-doc -s-Gruppe

ansible mysql -m user -a 'name="test01"'
//Gruppe erstellen
ansible mysql -m group -a 'name=mysql gid=300 system=yes'
//Gruppeninformationen anzeigen
ansible mysql -a ' 39;tail /etc/group'
//Verwenden Sie das Benutzermodul, um Mitglieder zur Gruppe hinzuzufügen
ansible mysql -m user -a ' ;name =test01 uid=306 system=yes group=mysql'

ansible mysql -a 'id test01'

 

(5)Kopiermodul (Kopiermodul)

Erstellen Sie effiziente Kopien von Dateien

ansible-doc -s Kopie

ansible mysql -m copy -a 'src=/etc/fstab dest=/opt/fstab.back'

ansible mysql -a 'ls /opt'
ansible mysql -a 'cat /opt/fstab.back'

ansible mysql -m copy -a 'content="hello lic" dest=/opt/test.txt'
ansible mysql -a 'cat /opt/test.txt'

(6)Dateimodul (Dateiattribute angeben)

ansible-doc -s-Datei

ansible mysql -m user -a 'name=mysql system=yes'

ansible mysql -m file -a 'owner=mysql group=mysql mode=600 path=/opt/test.txt'
ansible mysql -a & #39;ls -l /opt/test.txt'

#创建
#ansible mysql -m file -a 'path=/opt/abc.txt state=touch'

ansible mysql -m file -a 'src=/opt/test.txt path=/opt/test.txt.link state=link'
ansible mysql -a 'ls -l /opt'

#移除文件/opt/test.txt
ansible mysql -m file -a 'path=/opt/test.txt state=absent'< /span>

(7)Ping-Modul (Konnektivitätsstatus testen)  

 ansible all -m ping 

 

(8)Servicemodul (Servicestatus verwalten)

Dienst: Wird zum Verwalten des Ausführungsstatus des Dienstes verwendet

ansible-doc -s-Dienst

[root@localhost ~]# ansible webservers -m service -a 'name=httpd aktiviert=true state=started'
##启动httpd服务,前提是将httpd服务安装好
192.168.182.22 | GEÄNDERT => {     "ansible_facts": {         "discovered_interpreter_python": "/usr/bin/python"     },      "geändert": true,      "aktiviert": true,      "Name": "httpd",      "Status": " ;gestartet",  ......








[root@localhost ~]# ansible webservers -m service -a 'name=httpd aktiviert=true state=stopped' #Schließen Sie den Dienst

(9).Shell-Modul (interaktionsfrei)

Das Shell-Modul kann spezielle Symbole wie „<“, „>“, „|“, „&“ verwenden, und die Verwendungsmethode ist dieselbe wie Das Befehlsmodul.

ansible-doc -s-Shell

ansible mysql -m user -a 'name=zhangsan'
ansible mysql -m shell -a 'echo 123123 | passwd --stdin zhangsan'

(10).Module (Pakete installieren/deinstallieren)

yum: Mit dem yum-Paketmanager Pakete und Gruppen installieren, aktualisieren, downgraden, entfernen und auflisten

[root@localhost ~]# ansible webservers -m yum -a 'name=httpd'
##安装httpd服务
[root@localhost ~]# ansible webservers -m yum -a 'name=httpd'
192.168.40.60 | GEÄNDERT => {     "ansible_facts": {         "discovered_interpreter_python": "/usr/bin/python"     },      "geändert": true,      "Änderungen": {         "installiert": [             "httpd"         ]     }, < /span>  ......










[root@localhost ~]# ansible mysql -m yum -a 'name=httpd state=absent'
##移除httpd服务

(11).script-Modul (Skript ausführen) 

[root@localhost ~]# cd /opt/
[root@localhost opt]# vim test.sh
#!/bin/ bash
echo "das ist ein Testskript" > /opt/script.txt
chmod 666 /opt/script.txt


[root@localhost opt]# chmod +x test.sh 

[root@localhost opt]# ansible all -m script -a 'test.sh' #使用script模块执行创建的脚本
192.168.200.30 | GEÄNDERT => {     "geändert": true,      "rc": 0,      "stderr": "Gemeinsame Verbindung zu 192.168.200.30 geschlossen.\r\n",      "stderr_lines": [         "Gemeinsame Verbindung zu 192.168.200.30 geschlossen." a>         "Gemeinsame Verbindung zu 192.168.200.40 geschlossen."     "stdout_lines": []     "stdout": "",      ],      "stderr_lines": [     "stderr": "Gemeinsame Verbindung zu 192.168.200.40 geschlossen.\r\n",      "rc": 0,      "geändert": true,  192.168.200.40 | GEÄNDERT => {     "stdout_lines": []     "stdout": "",      ], 


















(12).Setup-Modul - (Informationen sammeln) 

ansible-doc -s-Setup

#Rufen Sie die Fakteninformationen des MySQL-Gruppenhosts ab
ansible mysql -m setup   

Mögliche Fakten sind Informationen über das Remote-System, hauptsächlich IP-Adresse, Betriebssystem, Ethernet-Gerät, Mac-Adresse, Zeit-/Datumsdaten, Hardwareinformationen und andere Informationen.​ 

 

 

 

 

 

 

Acho que você gosta

Origin blog.csdn.net/weixin_52269501/article/details/130476015
Recomendado
Clasificación