Heim  >  Artikel  >  System-Tutorial  >  Ansible-Architektur und Arbeitsprinzipien verstehen

Ansible-Architektur und Arbeitsprinzipien verstehen

PHPz
PHPzOriginal
2024-09-02 15:59:59727Durchsuche

Ansible ist ein modellgesteuerter Konfigurationsmanager, der die Veröffentlichung auf mehreren Knoten und die Ausführung von Remote-Aufgaben unterstützt. Standardmäßig wird SSH für Remoteverbindungen verwendet. Es ist keine Installation zusätzlicher Software auf verwalteten Knoten erforderlich und kann mithilfe verschiedener Programmiersprachen erweitert werden.

1. Ansible-Grundarchitektur

Ansible-Architektur und Arbeitsprinzipien verstehen

Das Bild oben zeigt die grundlegende Architektur von Ansible. Aus dem Bild oben können Sie erkennen, dass es aus den folgenden Teilen besteht:

  • Kern: ansible
  • Kernmodule: Dies sind die Module, die mit Ansible geliefert werden
  • Erweiterungsmodule (benutzerdefinierte Module): Wenn das Kernmodul nicht ausreicht, um eine bestimmte Funktion auszuführen, können Sie Erweiterungsmodule hinzufügen
  • Plugins: Vervollständigen Sie die Ergänzung der Modulfunktionen
  • Playbooks: Die Aufgabenkonfigurationsdatei von Ansible, die mehrere Aufgaben im Playbook definiert und automatisch von Ansible ausgeführt wird
  • Connectior-Plugins: Ansible stellt eine Verbindung zu jedem Host basierend auf Verbindungs-Plug-Ins her. Obwohl Ansible SSH verwendet, um eine Verbindung zu jedem Host herzustellen, unterstützt es auch andere Verbindungsmethoden, sodass ein Verbindungs-Plug-In erforderlich ist
  • Host-Inventar: Definieren Sie die von Ansible verwalteten Hosts
2. Funktionsprinzip von Ansible

Ansible-Architektur und Arbeitsprinzipien verstehen Ansible-Architektur und Arbeitsprinzipien verstehen

Bei den oben genannten Diagrammen handelt es sich um zwei Ansible-Arbeitsprinzipdiagramme, die im Internet zu finden sind. Beide Diagramme sind im Wesentlichen Erweiterungen, die auf dem Architekturdiagramm basieren. Sie können es dem Bild oben entnehmen:

1. Das Verwaltungsterminal unterstützt drei Möglichkeiten, eine Verbindung zum verwalteten Terminal herzustellen: lokal, SSH und Zeromq. Standardmäßig wird die SSH-basierte Verbindung verwendet – dieser Teil entspricht dem Verbindungsmodul im Basisarchitekturdiagramm ;

2. Das Host-Inventar (Host-Gruppe) kann nach Anwendungstyp usw. klassifiziert werden. Der Verwaltungsknoten implementiert entsprechende Vorgänge über verschiedene Module – ein einzelnes Modul, die Stapelausführung eines einzelnen Befehls, wir können es Ad-hoc nennen;

3. Der Verwaltungsknoten kann Playbooks verwenden, um eine Sammlung mehrerer Aufgaben zu implementieren, um eine Art von Funktionen zu implementieren, wie z. B. die Installation und Bereitstellung von Webdiensten, Batch-Backups von Datenbankservern usw. Wir können Playbooks einfach als Konfigurationsdateien verstehen, die das System durch die Kombination mehrerer Ad-hoc-Vorgänge betreibt.

3. Sieben Befehle von Ansible

Nach der Installation von Ansible haben wir festgestellt, dass Ansible uns insgesamt sieben Anweisungen zur Verfügung stellt: Ansible, Ansible-Doc, Ansible-Galaxy, Ansible-Lint, Ansible-Playbook, Ansible-Pull, Ansible-Vault. Hier betrachten wir nur den Verwendungsteil, und der detaillierte Teil kann über die Methode „command -h“ abgerufen werden.

1. ansible
1.[root@localhost ~]# ansible -h
2.Usage: ansible  [options]

Ansible ist der Kernteil des Befehls, der hauptsächlich zum Ausführen von Ad-hoc-Befehlen, also eines einzelnen Befehls, verwendet wird. Standardmäßig müssen die Host- und Optionsteile befolgt werden. Wenn das Modul nicht standardmäßig angegeben ist, wird das Befehlsmodul verwendet. Zum Beispiel:

1.[root@361way.com ~]# ansible 192.168.0.102 -a 'date'
2192.168.0.102 | success | rc=0 >>
3Tue May 12 22:57:24 CST 2015

Das Standardmodul kann jedoch in ansible.cfg geändert werden. Die Parameter unter dem Ansible-Befehl werden wie folgt erklärt:

  1. Parameter:
  2. -a 'Argumente', --args='Arguments' Befehlszeilenparameter
  3. -m NAME, --module-name=NAME Der Name des Ausführungsmoduls. Das Befehlsmodul wird standardmäßig verwendet. Wenn Sie also nur einen einzelnen Befehl ausführen, benötigen Sie den Parameter -m nicht 🎜>
  4. -i PATH, --inventory=PATH gibt den Pfad zur Inventar-Hostdatei an, der Standardwert ist /etc/ansible/hosts.
  5. -u Benutzername, --user=Benutzername für die Ausführung des Benutzers, verwenden Sie diesen Remote-Benutzernamen anstelle des aktuellen Benutzers
  6. -U --sud-user=SUDO_User An welchen Benutzer sudo gesendet werden soll, der Standardwert ist root
  7. -k --ask-pass Anmeldekennwort, fordert zur Eingabe des SSH-Kennworts auf, anstatt eine schlüsselbasierte Authentifizierung anzunehmen
  8. -K --ask-sudo-pass fordert zur Passwortverwendung sudo auf
  9. -s --sudo sudo run
  10. -S --su Verwenden Sie den su-Befehl
  11. -l --list zeigt alle unterstützten Module an
  12. -s --snippet gibt das Modul zum Anzeigen von Skriptausschnitten an
  13. -f --forks=NUM Anzahl paralleler Aufgaben. NUM wird als Ganzzahl angegeben, der Standardwert ist 5. #ansible testhosts -a "/sbin/reboot" -f 10 Alle Maschinen in der Testhosts-Gruppe neu starten, jeweils 10 Maschinen
  14. --private-key=PRIVATE_KEY_FILE privater Schlüsselpfad, verwenden Sie diese Datei, um die Verbindung zu überprüfen
  15. -v --verbose Details
  16. Alle Ausführungen für alle von Hosts definierten Hosts
  17. -M MODULE_PATH, --module-path=MODULE_PATH Der Pfad des auszuführenden Moduls, der Standardwert ist /usr/share/ansible/
  18. --list-hosts gibt nur aus, welche Hosts diese Playbook-Datei ausführen, führt die Playbook-Datei jedoch nicht aus
  19. -o --einzeilige komprimierte Ausgabe, zusammengefasste Ausgabe Versuchen Sie, alles in einer Zeile auszugeben.
  20. -t Verzeichnis, --tree=Verzeichnis Speichern Sie den Inhalt in diesem Ausgabeverzeichnis und speichern Sie die Ergebnisse in einer Datei auf jedem Host.
  21. -B Hintergrundlaufzeitüberschreitung
  22. -P Hintergrundprogrammzeit untersuchen
  23. -T Sekunden, --timeout=Sekundenzeit in Sekunden
  24. -P NUM, --poll=NUM Hintergrundarbeit alle paar Sekunden abfragen. Erforderlich – b
  25. -c Verbindung, --connection=Zu verwendender Verbindungsverbindungstyp. Mögliche Optionen sind paramiko(SSH), SSH und lokal. Local wird hauptsächlich für Crontab oder Startup verwendet.
  26. --tags=TAGS Führen Sie die Aufgabe nur mit den angegebenen Tags aus. Beispiel: ansible-playbook test.yml --tags=copy Führen Sie die Aufgabe nur mit dem Tag copy aus
  27. --list-hosts gibt nur aus, welche Hosts diese Playbook-Datei ausführen, führt die Playbook-Datei jedoch nicht aus
  28. --list-tasks Alle Aufgaben auflisten, die ausgeführt werden
  29. -C, --check testet nur, was geändert wird und führt es stattdessen nicht aus, sondern versucht, einige mögliche Änderungen vorherzusagen
  30. --syntax-check Syntaxprüfung des Skripts durchführen, aber nicht ausführen
  31. -l SUBSET, --limit=SUBSET den ausgewählten Host-/Gruppenmodus weiter einschränken --limit=192.168.0.15 Nur diese IP ausführen
  32. --skip-tags=SKIP_TAGS Führen Sie nur Spiele und Aufgaben mit Tags aus, die nicht mit diesen Werten übereinstimmen --skip-tags=copy_start
  33. -e EXTRA_VARS, --extra-vars=EXTRA_VARS Zusätzliche Variablen, die als Schlüssel=Wert oder YAML/JSON festgelegt sind
  34. #cat update.yml
  35. ---
  36. – Gastgeber: {{ Gastgeber }}
  37. remote_user: {{ user }}
  38. ............
  39. #ansible-playbook update.yml --extra-vars "hosts=vipers user=admin" Übergeben Sie die Variablen {{hosts}}, {{user}}, Hosts können IP-Adressen oder Gruppennamen sein
  40. -l,--limit Aufgaben auf dem angegebenen Host/der angegebenen Gruppe ausführen--limit=192.168.0.10, 192.168.0.11 oder -l 192.168.0.10, 192.168.0.11 Aufgaben nur auf diesen 2 IPs ausführen
2. ansible-doc
# ansible-doc -h
Usage: ansible-doc [options] [module...]

该指令用于查看模块信息,常用参数有两个-l 和 -s ,具体如下:

  1. //列出所有已安装的模块
  2. # ansible-doc -l
  3. //查看具体某模块的用法,这里如查看command模块
  4. # ansible-doc -s command
3、ansible-galaxy
# ansible-galaxy -h
Usage: ansible-galaxy [init|info|install|list|remove] [--help] [options] ...

ansible-galaxy 指令用于方便的从https://galaxy.ansible.com/ 站点下载第三方扩展模块,我们可以形象的理解其类似于centos下的yum、python下的pip或easy_install 。如下示例:

[root@localhost ~]# ansible-galaxy install aeriscloud.docker
- downloading role 'docker', owned by aeriscloud
- downloading role from https://github.com/AerisCloud/ansible-docker/archive/v1.0.0.tar.gz
- extracting aeriscloud.docker to /etc/ansible/roles/aeriscloud.docker
- aeriscloud.docker was installed successfully

这个安装了一个aeriscloud.docker组件,前面aeriscloud是galaxy上创建该模块的用户名,后面对应的是其模块。在实际应用中也可以指定txt或yml 文件进行多个组件的下载安装。这部分可以参看官方文档。

4、ansible-lint

ansible-lint是对playbook的语法进行检查的一个工具。用法是ansible-lint playbook.yml 。

5、ansible-playbook

该指令是使用最多的指令,其通过读取playbook 文件后,执行相应的动作,这个后面会做为一个重点来讲。

6、ansible-pull

该指令使用需要谈到ansible的另一种模式---pull 模式,这和我们平常经常用的push模式刚好相反,其适用于以下场景:你有数量巨大的机器需要配置,即使使用非常高的线程还是要花费很多时间;你要在一个没有网络连接的机器上运行Anisble,比如在启动之后安装。这部分也会单独做一节来讲。

7、ansible-vault

ansible-vault主要应用于配置文件中含有敏感信息,又不希望他能被人看到,vault可以帮你加密/解密这个配置文件,属高级用法。主要对于playbooks里比如涉及到配置密码或其他变量时,可以通过该指令加密,这样我们通过cat看到的会是一个密码串类的文件,编辑的时候需要输入事先设定的密码才能打开。这种playbook文件在执行时,需要加上 --ask-vault-pass参数,同样需要输入密码后才能正常执行。具体该部分可以参查官方博客。

注:上面七个指令,用的最多的只有两个ansible 和ansible-playbook ,这两个一定要掌握,其他五个属于拓展或高级部分。

Das obige ist der detaillierte Inhalt vonAnsible-Architektur und Arbeitsprinzipien verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn