Ansible vs Puppet

Ansible und Puppet sind die Konfigurationsmanagementsysteme (SCM), die zum Aufbau sich wiederholender Infrastrukturen erforderlich sind.

Ansible ist einfach zu bedienen, verfügt über eine agentenlose Architektur (erfordert keine Installation eines Agenten / Clients auf dem Zielsystem) und eine YAML-ähnliche DSL, die in Python geschrieben und einfach durch Module erweitert werden kann. Verwaltet normalerweise Linux-Konfigurationen.

Puppet verfügt über eine Client-Server-Architektur (fragt den Server regelmäßig ab, um Änderungen an der vom Netzwerkadministrator vorgenommenen Konfiguration vorzunehmen), ist in Ruby geschrieben und verfügt über ein Ruby-ähnliches DSL. Mit dieser Anwendung können Sie die Konfiguration von Software, die auf mehreren Computern installiert ist, zentral verwalten.

Der Artikel vergleicht die Vor- und Nachteile dieser SCMs.



Im Vergleich zu den 90er Jahren müssen Systemadministratoren und Entwickler heutzutage eine wesentlich größere Anzahl von Servern verwalten, auf denen viel mehr Anwendungen gehostet werden. Der Grund dafür ist das exponentielle Wachstum des Computing für Organisationen und Unternehmen, das mit dem Aufkommen neuer Technologien wie Virtualisierung und Cloud Computing verbunden ist.

So werden Tools wie Puppet und Ansible schnell zu notwendigen Komponenten für die Verwaltung einer großen Anzahl von Servern, beispielsweise in Rechenzentren. Sie werden als Configuration Management Tools (CM) und Remote Execution (RE) bezeichnet und häufig mit Software-Update-Tools verwendet. Mit diesen nützlichen Anwendungen kann beispielsweise ein Netzwerkadministrator Aktionen auf mehreren Servern gleichzeitig ausführen und mehrere Anwendungen mit einem Klick bereitstellen, was die Konfiguration und Wartung von zehn, Hunderten oder sogar Tausenden von Servern erheblich vereinfacht.

Ansible vs. Puppet: Ein kurzer Rückblick


Puppet ist eine der bekanntesten Marken auf dem CM-Markt. Es existiert seit 2005, was für CM-Werkzeuge gleichbedeutend ist mit der Existenz seit der Gründung der Menschheit. Viele große Namen wie Google, Reddit, Dell, PayPal, Oracle, Los Alamos Labs und die Stanford University verwalten ihre Rechenzentren mit Puppet. Solche Kunden an Bord zu haben, gibt dem Produkt immer ein gewisses Maß an Vertrauen. Puppet bietet außerdem die ausgereifteste Benutzeroberfläche und funktioniert unter allen gängigen Betriebssystemen - Linux, Windows, Unix und sogar Mac OS X. Nach dem Vorbild verschiedener Linux-Versionen wurde diese Open Source-Anwendung in Ruby entwickelt. Es gibt jedoch eine solide, gut etablierte PuppetLabs Support- und Sponsoring-Firma.bietet professionellen Support und eine kommerzielle Unternehmensversion der Software.

Puppet bietet außerdem ein einfaches Installationsverfahren und verschiedene Tools für Aufgaben wie die schnelle Bereitstellung auf Client-Servern. Zusätzlich zur GUI gibt es eine Ruby-basierte CLI. Tatsächlich müssen Sie für die meisten fortgeschrittenen Aufgaben höchstwahrscheinlich von der CLI abhängig sein, und die GUI ist die Schnittstelle zum Anzeigen, Verwalten und Überwachen. Dies bedeutet, dass Sie nicht nur als Systemadministrator arbeiten, sondern auch Ruby lernen müssen.



Sie könnten denken: „Es klingt alles großartig! Gibt es Nachteile oder lohnt es sich, Puppet jetzt zu kaufen? “Die Debatte über die Verwendung dieses SCM in spezialisierten CM-Foren ist, dass Puppet wie viele andere Software-Giganten ein Opfer seines eigenen Erfolgs und seiner Größe geworden ist. "Flink" und "agil" sind keine Worte, mit denen Puppets Arbeit beschrieben werden kann. Benutzer melden Fehler, deren Behebung und Ignorieren neuer Anforderungen zu lange dauert. Es gibt auch einige Unzufriedenheit mit der Tatsache, dass PuppetLabs seine Kunden beharrlich dazu drängt, die kommerzielle Version zu akzeptieren. Obwohl Puppet sowohl reines Ruby als auch das konfigurierte DSL in der CLI unterstützt, ist die Unterstützung für Ruby allein veraltet. Dies sind schlechte Nachrichten für diejenigen, die nur Ruby und nicht DSL studiert haben.

Ansible umging Puppet und eroberte mit 26,5% den größten Marktanteil in der Konfigurationsmanagementbranche. Es folgen Microsoft System Center CM (21,8%) und Puppet (12%).



Es ist auch ein Open Source-Produkt, das 2012 veröffentlicht wurde und seitdem von AnsibleWorks unterstützt wird. Es wurde eher in Python als in Ruby entwickelt, wodurch es Salt (einem anderen neuen CM-Tool) spirituell näher kommt als Puppet. Ein weiterer Vorteil von Python ist, dass es in die meisten Unix- und Linux-Anwendungen integriert ist, sodass in dieser Sprache geschriebenes SCM schneller installiert wird und funktioniert.

Der einzigartige Marketingtrick von Ansible liegt in der einfachen und schnellen Bereitstellung. Tatsächlich verwendet dieses System nicht einmal bereitgestellte Agenten, um mit dem Master-Client zu kommunizieren. Stattdessen werden alle Funktionen über SSH ausgeführt. Für Konfigurationen, die Root-SSH nicht unterstützen, kann Ansible "sudo" als Root ausführen. Ansible kann über die CLI gestartet werden, ohne Konfigurationsdateien für einfache Aufgaben wie das Überprüfen des Betriebs des Dienstes oder das Starten von Updates und Neustarts zu verwenden. Bei komplexeren Aufgaben wird die Ansible-Konfiguration mithilfe der YAML-Syntax in Konfigurationsdateien behandelt, die als „Playbooks“ bezeichnet werden. Ansible-Befehle können in nahezu jeder Programmiersprache geschrieben und als universelle JSON-Module verteilt werden. Dies ist eindeutig ein Vorteil gegenüber der Auswahl einer bestimmten Sprache.

Ansible ist mit einem neuen Ansatz für herkömmliche Konfigurationsaufgaben immer beliebter geworden, und viele Unternehmen verwenden ihn zur Bereitstellung großer Rechenzentren.

Die Ansible-Community von Enthusiasten arbeitet hart daran, auf ihrem Erfolg aufzubauen, indem sie die Anzahl der unterstützten Geräte erhöht, eine bessere Windows-Unterstützung integriert, das Ökosystem verbessert und so weiter.

Ansible vs. Puppet: Installationsunterschied


Die Unterschiede zwischen Ansible und Puppet werden ab dem Zeitpunkt der Installation der Systeme deutlich. Da sie unterschiedlichen architektonischen Paradigmen folgen, unterscheidet sich ihre Umgebung erheblich. Ansible hat daher das explizite Ziel, den Einrichtungsprozess so einfach wie möglich zu gestalten, was sich in der Benutzererfahrung widerspiegelt.



Um Ansible zu konfigurieren, müssen Sie zunächst einen Knoten als Steuerknoten festlegen. Tatsächlich kann jeder Ihrer Knoten ein Verwaltungsknoten sein. Sie können Ansible auf diesem Knoten mit dem neuesten Ansible-Paket aus den Paketrepositorys Ihrer Distribution installieren, ohne die Client-Software auf anderen Knoten konfigurieren zu müssen. Erstellen Sie einfach ein SSH-Schlüsselpaar auf Ihrem Verwaltungsknoten und kopieren Sie sie auf die anderen Knoten. Erstellen Sie als Nächstes eine Inventardatei für Ansible-Knoten - normalerweise unter Linux-Betriebssystemen wie Red Hat Linux, Ubuntu und Debian in / etc / ansible / hosts. Sie können jetzt Ansible verwenden, um das PlayBook sowohl auf Ihrem Host als auch auf dem Rest der Netzwerkinfrastruktur zu starten.Ansible verwendet SSH-Verbindungen mit Ihrem Steuerknoten, um die PlayBook-basierte Konfigurationsverwaltung auszulösen.

Das Einrichten von Puppet sieht etwas komplizierter aus, aber im Internet gibt es viele Dokumentationen, die in schwierigen Fällen hilfreich sind. Zunächst müssen Sie den Master- und den Agentenknoten so konfigurieren, dass sie dieselbe Zeit und Zeitzone haben. Anschließend müssen Sie mit Root-Rechten zum Master-Server wechseln und die Puppet-Server-Software installieren. Als Nächstes müssen Sie die Puppet-Assistentendatei / etc / hosts konfigurieren, um alle verwalteten Clients zu verbinden, den PuppetServer-Dienst starten und in den Aktivierungsmodus versetzen, um Clientverbindungen an Port 8140 zu empfangen. Da Puppet auf Client-Software angewiesen ist, müssen Sie Puppet-Software-Agenten installieren auf jedem von ihnen.

Außerdem müssen Sie die IP-Adresse des Master-Servers in / etc / hosts hinzufügen, damit der Client eine Verbindung herstellen kann. Dazu müssen Sie den Puppet-Agentendienst auf jedem Client starten und aktivieren und anschließend SSL-Zertifikate generieren, da dieses CM-System HTTPS für die Master-Client-Kommunikation verwendet.

In beiden Fällen muss die Sicherheit des Servers erhöht werden, um die Möglichkeit nicht autorisierter Verbindungen auszuschließen.

Ansible vs. Puppet: Skalierbarkeits- und Konfigurationstransportmechanismus


Beide SCMs lassen sich gut skalieren, verwenden jedoch unterschiedliche Konfigurationstransportmechanismen, um dies zu erreichen. Unabhängig davon, ob Sie mehrere hundert oder zehntausend Knoten verwalten müssen, gibt es Tricks und Strategien, die Sie auf jeder Plattform verwenden können, um bequem auf das gewünschte Niveau zu skalieren.



Ansible verwendet standardmäßig den intelligenten Transportmechanismus, der auf vertrauenswürdigen SSH-Zertifikaten basiert. Ansible analysiert zunächst PlayBooks und identifiziert betroffene Infrastrukturelemente. Sie öffnet dann eine SSH-Verbindung und erstellt ein temporäres Verzeichnis. Nach dem Schließen dieser Verbindung öffnet Ansible eine zweite Verbindung, um den Ansible-Modulcode und den Ansible-Vorlagencode zu kopieren. Ansible schließt diese Verbindung, bevor die dritte, letzte Verbindung geöffnet wird, um den Code auszuführen. Diese Einstellung dient den meisten Zwecken, kann jedoch geändert werden, wenn die Infrastruktur skaliert.

Die erste Funktion, die Ansible verwenden kann, heißt ControlPersist und basiert auf dauerhaften, dauerhaften Sockets, um die Zeit für den Austausch von Handshakes zu verkürzen, die für mehrere Verbindungen erforderlich sind. Ansible unterstützt auch Pipelining, eine Konfiguration, die die Anzahl der erforderlichen Verbindungen von drei auf eins reduziert. Schließlich kann Ansible so konfiguriert werden, dass mehrere Inventarknoten gleichzeitig verarbeitet werden, indem die Gabelvariable in der Konfiguration dieses Systems eingerichtet wird. Standardmäßig ist dieser Wert 5, Sie können jedoch einen höheren Wert festlegen, um die Verarbeitung zu beschleunigen.



Der Puppet-Transportmechanismus ist HTTPS, der mithilfe von SSL-Zertifikaten verwaltet wird. Ein Puppet-Server verarbeitet Konfigurationsanforderungen für eine gesamte Liste von Puppet-Clients. Jeder Client sendet Puppet-Fakten zusammen mit einer Anforderung an das Puppet-Verzeichnis an den Master-Server. Anschließend sendet der Master-Server dieses Verzeichnis als Antwort. Der Client verarbeitet dann das Verzeichnis und überprüft jede Softwareressource mit dem im Verzeichnis angegebenen erforderlichen Konfigurationsstatus. Wenn sich die Ressource nicht im gewünschten Status befindet, aktualisiert der Puppet-Client die Ressource auf diesem Computer und sendet nach Abschluss der Aktualisierung einen Bericht über die abgeschlossene Konfigurationsänderung an den Puppet-Server.



Insbesondere weist das Puppet-Verarbeitungsmodell einen JRuby-Thread aus dem Thread-Pool zu, um jede eingehende Client-Verbindung zu verarbeiten. Wenn die Anzahl der Knoten zunimmt, kann die Puppet-Skalierung optimiert werden, indem die Anzahl der im Pool verfügbaren JRuby-Threads erhöht wird. Dies kann erreicht werden, indem der Wert des Puppet-Konfigurationsparameters "max-active-instance" höher als der Standardwert 1 eingestellt wird. In der Regel wird angenommen, dass dieser Wert der Anzahl der Prozessorkerne Ihres Computers entspricht. Beachten Sie jedoch, dass hierfür mehr erforderlich sind CPU-Speicher verwendet RAM RAM. In der Regel müssen Sie auch eine höhere „maximale Heap-Größe“ für die JVM Ihres Puppet-Servers festlegen, um dies sicherzustellendass Ihre zusätzlichen JRuby-Threads ohne Java-Speicherfehler zugewiesen werden können. Bei dieser Einstellung ist Vorsicht geboten, da dies zu Leistungseinbußen führen kann.

CM Ansible Code Beispiel


Für die tägliche Konfigurationsarbeit ist das Schreiben von Ansible-Code aufgrund einer Kombination aus zwei Faktoren überraschend einfach: der Verwendung des YAML-Formats für PlayBooks und dem deklarativen Stil des Konfigurationsmanagements, der „scharfe Ecken“ abschneidet. Dies ist wichtig, um die Leistung von DevOps-Befehlen schnell zu verbessern und sicherzustellen, dass Ihr Code auch für komplexe Konfigurationsaufgaben verwaltbar ist.

Ansible Code ist idempotent. Dies bedeutet, dass Sie PlayBook für Systemkomponenten immer wieder sicher ausführen können, ohne Ihre Server zu beschädigen. Ansible ändert die Konfiguration von Softwareressourcen nur auf Servern, auf denen sie sich außerhalb des gewünschten Status befinden. Wenn Ihr PlayBook beispielsweise ein Paket installieren und eine bestimmte Konfigurationsdatei auf der Festplatte erstellen muss, installiert Ansible nur dieses Paket und erstellt die Konfigurationsdatei, die beim ersten Start des PlayBook auf dem Host angegeben wurde. Bei späteren Starts des PlayBook bleibt das Paket automatisch intakt, bis Änderungen vorgenommen werden, durch die die angegebene Datei- oder Paketkonfiguration entfernt oder geändert wird. Dies hält Ihre Knoten in einem vorhersehbaren, deterministischen Zustand mit sehr geringer oder keiner Wahrscheinlichkeit einer Konfigurationsdrift.

Das folgende Beispiel zeigt einen Ansible PlayBook-Code, mit dem der Tomcat-Webserver auf Ihren Websites installiert wird. Dieses Beispiel stammt aus dem offiziellen Ansible-Beispiel- Repository , das Sie durchsehen sollten, um sich besser mit dem idiomatischen Ansible-Stil vertraut zu machen:

---
- name: Install Java 1.7
yum: name=java-1.7.0-openjdk state=present

- name: add group "tomcat"
group: name=tomcat

- name: add user "tomcat"
user: name=tomcat group=tomcat home=/usr/share/tomcat createhome=no
become: True
become_method: sudo

- name: Download Tomcat
get_url: url=http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.61/bin/apache-tomcat-7.0.61.tar.gz dest=/opt/apache-tomcat-7.0.61.tar.gz

- name: Extract archive
command: chdir=/usr/share /bin/tar xvf /opt/apache-tomcat-7.0.61.tar.gz -C /opt/ creates=/opt/apache-tomcat-7.0.61

- name: Symlink install directory
file: src=/opt/apache-tomcat-7.0.61 path=/usr/share/tomcat state=link

- name: Change ownership of Tomcat installation
file: path=/usr/share/tomcat/ owner=tomcat group=tomcat state=directory recurse=yes

- name: Configure Tomcat server
template: src=server.xml dest=/usr/share/tomcat/conf/
notify: restart tomcat

- name: Configure Tomcat users
template: src=tomcat-users.xml dest=/usr/share/tomcat/conf/
notify: restart tomcat

- name: Install Tomcat init script
copy: src=tomcat-initscript.sh dest=/etc/init.d/tomcat mode=0755

- name: Start Tomcat
service: name=tomcat state=started enabled=yes

- name: deploy iptables rules
template: src=iptables-save dest=/etc/sysconfig/iptables
when: "ansible_os_family == 'RedHat' and ansible_distribution_major_version == '6'"
notify: restart iptables

- name: insert firewalld rule for tomcat http port
firewalld: port=/tcp permanent=true state=enabled immediate=yes
when: "ansible_os_family == 'RedHat' and ansible_distribution_major_version == '7'"

- name: insert firewalld rule for tomcat https port
firewalld: port=/tcp permanent=true state=enabled immediate=yes
when: "ansible_os_family == 'RedHat' and ansible_distribution_major_version == '7'"

- name: wait for tomcat to start
wait_for: port=

Diese spezielle Ansible-Aufgabe lädt Apache Tomcat zusammen mit dem abhängigen Java JDK 1.7 herunter und installiert es. Anschließend wird Tomcat konfiguriert, gestartet und installiert. Wie Sie diesem Beispiel entnehmen können, können Ansible-gesteuerte Dateien Jinja-Vorlagen enthalten, was die Berechnung von Werten vereinfacht und Ihre Konfiguration flexibler macht. YAML-Code ist sowohl für Systemadministratoren als auch für Entwickler leicht zu lesen und zu schreiben. Dies führt dazu, dass Ansible zu einem erschwinglichen Konfigurationsmanagementsystem für fortgeschrittene und unerfahrene Benutzer wird.

CM Puppet Code Beispiel


Die fachorientierte Sprache Puppet basiert auf Ruby, aber ihre Syntax ist den imperativen Sprachen im C-Stil wie Perl, Java und C ++ viel näher. Dieser Ansatz ist ein Vermittler zwischen Entwicklern, die mit Ruby vertraut sind, und solchen, die mit dieser Sprache möglicherweise nicht vertraut sind. Daher müssen Sie Ruby möglicherweise überhaupt nicht kennen, um Puppet DSL produktiv zu lernen und zu verwenden.
Dies ist ein Beispiel für ein Puppet-Manifest aus dem MySQL Puppet Module-Repository von PuppetLabs, das das MySQL-Clientpaket installiert und konfiguriert:

# @summary
#     Installs and configures the MySQL client.
#
# @example Install the MySQL client
#     class {'::mysql::client':
#         package_name => 'mysql-client',
#         package_ensure => 'present',
#         bindings_enable => true,
#     }
#
# @param bindings_enable
#     Whether to automatically install all bindings. Valid values are `true`, `false`. Default to `false`.
# @param install_options
#     Array of install options for managed package resources. You must pass the appropriate options for the package manager.
# @param package_ensure
#     Whether the MySQL package should be present, absent, or a specific version. Valid values are 'present', 'absent', or 'x.y.z'.
# @param package_manage
#     Whether to manage the MySQL client package. Defaults to `true`.
# @param package_name
#     The name of the MySQL client package to install.
#
class mysql::client (
    $bindings_enable = $mysql::params::bindings_enable,
    $install_options = undef,
    $package_ensure = $mysql::params::client_package_ensure,
    $package_manage = $mysql::params::client_package_manage,
    $package_name = $mysql::params::client_package_name,
)  inherits mysql::params {
    
    include '::mysql::client::install'

    if $bindings_enable {
        class { 'mysql::bindings':
            java_enable => true,
            perl_enable => true,
            php_enable => true,
            python_enable => true,
            ruby_enable => true,
        }
    }

# Anchor pattern workaround to avoid resources of mysql::client::install to
# "float off" outside mysql::client
anchor { 'mysql::client::start': }
-> Class['mysql::client::install']
-> anchor { 'mysql::client::end': }
}

Ein wichtiger Vorteil von Puppet ist, dass Puppet DSL im Gegensatz zu den oben aufgeführten imperativen Programmiersprachen in gewisser Weise ähnlich wie XML deklarativ ist, ebenso wie der YAML-Code aus dem obigen Ansible-Codebeispiel. Der deklarative Ansatz von Puppet und Ansible wird in beiden Codebeispielen wirklich verfolgt. In Bezug auf die Codierung sind sie ähnlich und näher beieinander als Tools wie Chef. Die deklarative Sprache Puppet bietet jedoch auch Ruby-ähnliche Konstrukte wie bedingte Ausdrücke und Iterationen, was wiederum ein Kompromiss für Ruby-Benutzer und diejenigen ist, die die Sprache nicht sprechen.

Ansible vs. Puppet: Benutzerfreundlichkeit


Für das Entwicklungsteam sollte die Benutzerfreundlichkeit ein wichtiger Bestandteil der Bewertung von SCM sein. Angesichts der Tatsache, dass die Ansible-Entwickler große Anstrengungen auf die Benutzerfreundlichkeit des Systems konzentrieren, gibt es hier keine Konkurrenten. Das Konfigurieren, Programmieren und Verwalten der Knoten bietet sowohl Entwicklern als auch Systemadministratoren eine sehr einfache Schnittstelle.

Dies bedeutet nicht, dass Puppet schwierig zu bedienen ist. Es ist nur so, dass sich dieses System sicher verhält, während Sie die vorgeschlagene Methode zur Automatisierung seiner Infrastruktur befolgen. In diesem Bereich ist Puppet ziemlich stark, modelliert jede Ressource explizit und stellt Benutzern Module mit Standardverhalten zur Verfügung, die in Ihren Manifesten effizient verwendet werden.

In Bezug auf das Lernen der Benutzer sind beide Plattformen einfach zu bedienen, Ansible hat jedoch einen leichten Vorteil. Es ist einfach, einen deklarativen YAML-Stil zu erreichen, sodass Ansible-Code nie zu kompliziert ist. Inzwischen hat Puppet einige der Probleme erkannt, die mit dem Kombinieren von Daten und Code in denselben Quelldateien verbunden sind. Dies führte zur Einführung von Puppet Hiera, einer Speicherlösung, die das YAML-Format zum Speichern von Schlüssel-Wert-Paaren von Konfigurationsdaten verwendet. Hiera trägt wesentlich zur Vereinfachung und Optimierung des Puppet DevOps-Erlebnisses bei. Das YAML-Format hat sich für das Konfigurationsmanagement als sehr beliebt erwiesen, wobei Salt von SaltStack auch dieses Format verwendet.
Beide SCMs können Ihr CM validieren und testen, von der Syntaxprüfung bis zur Integration der Infrastruktur als Code.

Ansible vs. Puppet: Lizenz- und Implementierungskosten





Ansible und Puppet haben als Open-Source-Tools viele Gemeinsamkeiten in ihren Lizenzrichtlinien.

Die Open Source-Version von Ansible ist völlig kostenlos. Unternehmen, die mehr Garantien für Sicherheit, Stabilität und Zuverlässigkeit benötigen, sollten ein Upgrade auf Ansible Engine durchführen, das Produkt der Enterprise-Klasse, das mit Red Hat Linux geliefert wird. Die Lizenzkosten für Ansible Engine liegen normalerweise zwischen 47,50 und 70 US-Dollar pro Jahr und Knoten und hängen von Ihrer bevorzugten Konfiguration ab.

Wenn Sie technischen Support mit schneller Fehlerbehebung benötigen, sollten Sie die Unternehmensversion verwenden. Das Ansible Tower Large Enterprise Management Tool ist als Servicepaket verfügbar und bietet Ihrem Unternehmen über ein grafisches Bedienfeld mehr Funktionen für Schulung, Verwaltung und Auftragsplanung.

Wie Ansible ist auch die Open Source Puppet-Version kostenlos erhältlich. Für zusätzliche Unternehmensfunktionen und technischen Support können Unternehmen ein Upgrade auf Puppet Enterprise durchführen, das zwischen 112 und 199 US-Dollar pro Jahr und Knoten kostet. Puppet Enterprise bietet ein Paket mit verschiedenen Tools, einschließlich Berichterstellung und Überwachung des Status der Unternehmensinfrastruktur.

Ansible vs Puppet: Gemeinschaft


Puppet wurde 2005 veröffentlicht und ist ein älteres DevOps-Tool, sodass es mehr Zeit hatte, eine eigene Community und Benutzerbasis zu erstellen. Trotzdem konnte Ansible, das 2012 dank seines neuen Ansatzes eingeführt wurde, ein noch größeres Publikum anziehen und eine sehr dynamische Community von Entwickler-Enthusiasten und Benutzern schaffen. Zu den Puppet-Benutzern zählen Unternehmen wie Uber, Salesforce und Paypal, während zur Ansible-Community Unternehmen wie Digital Ocean, 9GAG und TypeForm gehören.

Wenn wir einen so wichtigen Indikator für die Entwicklung von Open-Source-Produkten wie die Anzahl der an der Entwicklung auf GitHub beteiligten Mitwirkenden vergleichen, ist Ansible mit mehr als 4.800 Mitwirkenden Puppet mit seinen 527 Mitwirkenden an der Entwicklung des Produkts weit überlegen. Die Entwicklung von Ansible in den letzten Jahren war so schnell, dass ein separates "galaktisches" Repository von Ansible Galaxy geschaffen wurde . Dies bedeutet, dass die Ansible-Community bestrebt ist, ihren Code zu teilen, um so zur Weiterentwicklung des Produkts beizutragen.

In der Zwischenzeit hat die Puppet-Community, die sich langsamer und stetiger entwickelt, eine Infrastruktur geschaffen, die es einfacher macht, Lösungen zu finden, die Ihren SCM-Anforderungen entsprechen. Puppet Forge bietet Module für allgemeine Konfigurationsverwaltungsaufgaben für die Puppet-Community.

Beide Systeme verfügen über erstklassige Tools zur Überwachung des Lebenszyklus eines Konfigurationsmanagementprojekts über die Befehlszeile. Sowohl Puppet als auch Ansible lassen sich gut in andere weit verbreitete DevOps-Systeme wie Docker, Kubernetes und Jenkins sowie AWS- und Azure-Cloud-Computing-Plattformen integrieren.

Ansible vs Puppet: Was ist besser?


In dieser Angelegenheit liegt die Wahl bei Ihnen. Der deklarative Stil von Ansible und Puppet bedeutet, dass diese Tools viel mehr gemeinsam haben als andere Konfigurationsmanagementsysteme. Um jedoch die beste Wahl zu treffen, müssen Sie besonders darauf achten, wie die Anforderungen Ihres Teams mit dem Design und den Vorteilen eines bestimmten SCM kombiniert werden.
Ansible ist besser für diejenigen geeignet, die an einer Konfiguration im YAML-Stil interessiert sind und die Philosophie von Ansible teilen, so einfach wie möglich zu sein und gleichzeitig einen großen Pool von Maschinen schnell und gleichzeitig zu verwalten. Darüber hinaus konzentriert sich diese Philosophie auf die Verwendung vorhandener SSH-Funktionen, anstatt Benutzeragenten zu erstellen.

Puppet eignet sich eher für Teams, die DSL bevorzugen, das Systemressourcen auf konsistente, sich wiederholende Weise modelliert. Dies ist genau das, was Puppet DSL zusammen mit einem ganzen Ökosystem von Tools tut, um große Teams vorhersehbar und einfach zu machen.

Wenn Sie genau wissen, welche Konfigurationsverwaltungsprinzipien Ihren Anforderungen am besten entsprechen, ist die Wahl zwischen Puppet und Ansible für Sie kein Problem.

Ergebnisse


Um Ihnen die Auswahl zu erleichtern, empfehlen wir Ihnen, sich mit den wichtigsten Vor- und Nachteilen beider Systeme vertraut zu machen.



Ein bisschen Werbung :)


Vielen Dank für Ihren Aufenthalt bei uns. Gefällt dir unser Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung aufgeben oder Ihren Freunden Cloud-basiertes VPS für Entwickler ab 4,99 US-Dollar empfehlen , ein einzigartiges Analogon von Einstiegsservern, das von uns für Sie erfunden wurde: Die ganze Wahrheit über VPS (KVM) E5-2697 v3 (6 Kerne) 10 GB DDR4 480 GB SSD 1 Gbit / s ab 19 $ oder wie teilt man den Server? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).

Dell R730xd 2-mal günstiger im Equinix Tier IV-Rechenzentrum in Amsterdam? Nur wir haben 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2,6 GHz 14C 64 GB DDR4 4 x 960 GB SSD 1 Gbit / s 100 TV von 199 US-Dollar in den Niederlanden!Dell R420 - 2x E5-2430 2,2 GHz 6C 128 GB DDR3 2x960 GB SSD 1 Gbit / s 100 TB - ab 99 US-Dollar! Lesen Sie mehr über den Aufbau eines Infrastrukturgebäudes. Klasse C mit Dell R730xd E5-2650 v4-Servern für 9.000 Euro für einen Cent?

All Articles