Ich denke, andere haben das Warum behandelt, also werde ich das Wie ausprobieren. Ich denke, wenn Sie verstehen, wie jemand Puppet verwenden könnte, um das zu tun, was Sie wollen, wird die Entscheidung klarer.
Machen Sie zuerst den Grundfall
Ihr Puppet-Modul für Apache sollte standardmäßig nicht viel bewirken. Installieren Sie Apache, konfigurieren Sie es auf einen Mindeststandard und starten Sie den Dienst. Lassen Sie dies auf allen Distributionen funktionieren, die Sie unterstützen müssen.
Fügen Sie Flexibilität an zweiter Stelle hinzu
Wir müssen vhosts hinzufügen. Sie erhalten ein System, mit dem Sie Dateien löschen oder aus einer Reihe von Verzeichnissen conf.d oder vhosts.d / entfernen können, je nachdem, was Sie benötigen. Gleiches gilt für das Aktivieren oder Konfigurieren von Modulen.
Verwenden Sie Rollen- oder Hostgruppenklassen, um Ihre Bausteine miteinander zu verbinden
Ich denke, der beste Weg, Puppet zu verwenden, besteht darin, sicherzustellen, dass es additiv ist. Anhand der obigen Beispiele sollten wir ein Modul haben, das dies tut
- Installieren Sie Apache
- Grundkonfigurationen einstellen
- Füge vhosts zu Apache hinzu
- Konfigurieren Sie zusätzliche Einstellungen
- Starten Sie Apache
Anstatt unser Standard-Apache-Modul zu überlasten, um genau das zu tun, was wir für einen bestimmten Host oder eine bestimmte Gruppe benötigen, sollten wir damit umgehen, dass es sich um eine Rollen- oder Hostgruppenklasse handelt.
class role::web_cust1 {
include apache
apache::vhost {'www.domain.com': }
apache::vhost {'www.domain2.com': priority => '99', }
include php
include php-fpm
include mysql
}
Wieder additiv.
Setzen Sie Sonderfälle in Hiera
Ich bin ein großer Fan davon, Puppets Hiera als Datenbank für Puppet die speziellen Teile speichern zu lassen. Wenn ein bestimmter Host oder eine bestimmte Hostgruppe eine spezielle Einstellung benötigt, fügen Sie zunächst einen vernünftigen Standard in das Modul ein, damit normale Benutzer nichts darüber wissen müssen. Fügen Sie dann Daten für diese speziellen Hosts oder Hostgruppen ein, damit Hiera sie nach Bedarf an Puppet weitergeben kann.
Mein Anwendungsfall ist Listen Port. Einige Server haben einen Lack oder Haproxy vor sich. Standardmäßig verfügt das Puppet-Modul über Apache-Verwendung von Port 80, aber wenn Hiera Daten findet, wird diese Standardeinstellung überschrieben.