Technisch gesehen ist Ansible das; weil es agentenlos ist; Ich habe es verwendet, um Router, Switches, Server usw. zu verwalten.
Sie fragen anscheinend, ob das package
Modul Arch Linux unterstützt? Ich bin zu faul, um zu testen, ob das Arch unterstützt. aber wenn nicht, gibt es immer das pacman
Modul ... Und wenn das nicht funktioniert ... wird immer ein eigenes Modul geschrieben.
Sie sprechen jedoch von einem größeren Problem beim Ausführen mehrerer verschiedener Distributionen in einer Produktionsumgebung . Es wird schmerzhaft, langfristig zu verwalten. Aus diesem Grund empfiehlt es sich, nicht mehrere Distributionen in der Produktion auszuführen, da dies aus Managementsicht (nur aus Code) eine Menge Arbeit bedeutet. Der naheliegendste Weg, dies zu umgehen, ist die Verwendung von Ansible when
in Kombination mit os_family
:
apt:
name: apache2
when: ansible_facts['os_family'] == "Debian"
pacman:
name: nginx
when: ansible_facts['os_family'] == "Archlinux"
Ich war in einer Situation, in der ich Debian-Server und CentOS-Server in der Produktion verwalten musste. Schließlich entschied ich mich für Debian, weil:
- Die Codebasis für CM wurde halbiert (die gesamte Logik für distro-spezifische Macken wurde entfernt).
- Das Testen wurde weniger schmerzhaft (wenn Sie Ihren CM-Code nicht testen, machen Sie es falsch).
Sie werden sowieso auch auf große Unterschiede stoßen; zum Beispiel:
- Einige Pakete haben einen anderen Namen.
httpd
(RHEL) gegen apache2
(Debian).
- Verschiedene "Standard" -Konfigurationsverzeichnisse;
/etc/default
(Debian) gegen /etc/sysconfig
(RHEL).
- Verschiedene Init-Systeme; obwohl
systemd
weitgehend übernommen hat.
- Kein SSH; Zum Beispiel WinRM für Windows.
Konfigurationsmanagementsysteme sind eine Möglichkeit, die Umgebung in Code zu abstrahieren. und sie geben dir Logik / Bedingungen, um das selbst zu tun .
package
Modul ruft nur das Modul auf, das in deransible_pkg_mgr
Tatsache für dieses System definiert ist. So funktioniert jedes von Ansible unterstützte Verpackungssystem.Die Pflege eines Meta-Paket-Managers scheint mir eine Sisyphus-Aufgabe zu sein, da jemand eine Art "Apache2" in Debian-Likes pflegen müsste, ist "httpd" in RHEL-Likes (und so weiter) Rosetta Stone.
Es gibt jedoch ein Pacman- Modul für Ansible, das speziell für die Verwendung von Ansible (dem von Ihnen gesuchten disto-agnostischen Verwaltungstool) zum Verwalten von Paketen auf Arch-ähnlichen Systemen entwickelt wurde. Aus dem Abschnitt Beispiele in der Dokumentation des verknüpften Moduls:
quelle
Paket ist Ansible "Generic OS Package Manager".
Eine Option wäre, betriebssystemspezifische list_of_packages einzuschließen
und installieren Sie die Pakete
quelle
Nix ist ein eigenständiger Paketmanager, der nicht fest an ein Betriebssystem gebunden ist. Ich benutze es unter MacOS und auch unter Ubuntu https://nixos.org/nix/
Saltstack (Ansible Compatitor) hat eine schönere Abstraktion mit pkg.installed und Sie müssen sich nicht darum kümmern, dass das zugrunde liegende System apt oder rpm oder arch ist ... (es ist immer noch erforderlich, den diff pkg-Namen festzulegen, wenn sie sich auf Systemen unterscheiden, z. B. httpd oder apache2).
quelle