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.