Hat Ansible eine Komponente, die PuppetDB ähnelt?

7

Ich kenne Puppet aus (begrenzter) Erfahrung und habe festgestellt, dass es im Konfigurationsmanagement jetzt einen starken Trend zu Ansible gibt.

Einerseits verstehe ich, dass Ansible keinen Agenten benötigt, weil es intelligent nutzt ssh.

Auf der anderen Seite sind dies Funktionen, die Puppet gefallen haben:

  • Zugriff auf den systemweiten Konfigurationsstatus und -verlauf (PuppetDB) über die REST-API
  • Möglichkeit, Backups von überschriebenen Dateien (Filebuckets) zu speichern
  • Möglichkeit, einen Teil der Hiera-Konfigurationen zu verschlüsseln ( .eyaml)

Unter diesen scheint mir PuppetDB das wichtigste und nützlichste zu sein (z. B. für die Integration mit anderen Tools). Daher lautet meine Frage: Hat Ansible etwas Ähnliches wie PuppetDB, dh eine Komponente, die eine API bietet, in der beispielsweise gefragt werden könnte: "Welche Pakete sind auf Host x installiert ?" oder "Auf welchen Hosts ist Paket y installiert?"

(Diese Frage wurde von StackOverflow migriert ).

UPDATE Wesentlicher Nachteil von Puppet ist meine bisherige Erfahrung: Nicht so sehr die Tatsache, dass ein Agent erforderlich ist (nach dem, was ich gesehen habe, führt Ansibles Verwendung von Python auch eine Art Agent in Form eines Python-Interpreters ein ;-), aber dass es möchte, dass sein Agent rootnur und immer handelt.

Drux
quelle
Neugierig: Wie würden Sie erwarten, dass ein Tool wie Puppet (oder Chef oder CFEngine) das kann, was es tut, ohne als ausgeführt zu werden root? Es ersetzt die Notwendigkeit, dass sich eine SA anmelden und manuell arbeiten muss. Daher muss sie in der Lage sein, alles zu tun, was eine SA tun kann.
Gaius
@Gaius Zum einen kenne ich jemanden, der keine rootZugriffsrechte auf einem Servercluster hat, aber dennoch Ansible zum Verwalten einer großen Webanwendung dort verwenden kann. Außerdem gibt es SAs, die sich nicht als anmelden root, sondern sudosparsamer verwenden.
Drux
Sie müssen dann noch Befehle als root ausführen. Wenn der laufende Agent ein Dealbreaker für Sie ist, dann wenden Sie das Tool falsch an
Gaius

Antworten:

5

Die direkte Antwort lautet "nein".

Ansible verfügt über keine Datenbank, da es von verschiedenen Betreibern von verschiedenen Computern ausgeführt werden soll und der Zweck darin besteht, sicherzustellen, dass sich die Zielsysteme im genauen Zustand befinden, wie in den Playbooks angegeben.

Es besteht die Möglichkeit, externe Fakten-Cache- Backends an Ansible anzuhängen . Damit Sie Redis als Cache einrichten können, füllt Ansible sie während des Playbook-Laufs mit gesammelten Fakten und Sie können Redis später nach ihnen abfragen. Aber es ist Lösung sehr begrenzt, weil es nicht zu viele Fakten gesammelt durch ansible, zum Beispiel gibt es keine Informationen über die installierten Pakete - Sie haben sie selbst eine Verwendung sammeln set_factmit cacheableOption , sie in externe Cache zu setzen.

Konstantin Suworow
quelle
1
Danke. Ich verstehe das "weil" in Ihrem zweiten Absatz nicht: Puppet würde IMO auch behaupten, dass "es von verschiedenen Betreibern von verschiedenen Computern ausgeführt werden soll und dass sichergestellt werden soll, dass sich die Zielsysteme im genauen Zustand befinden" ( nur, dass es von Manifesten statt von Spielbüchern sprechen würde), aber es verwendet eine Datenbank.
Drux
Ich meinte "ohne zentrale / gemeinsam genutzte Komponente". In Ansible haben Sie also keine zustandsbehaftete Komponente außer dem Zielsystem.
Konstantin Suworow
Ich verstehe, das macht Sinn.
Drux