2016-07-06 5 views
0

Gibt es eine Möglichkeit, die Knoten eine gemeinsame Gruppe von Modulen zu teilen und ihnen dann bestimmte Module hinzuzufügen?Gibt es eine Möglichkeit, die Knoten eine gemeinsame Gruppe von Modulen zu teilen und ihnen dann bestimmte Module hinzuzufügen?

In meiner Konfiguration haben alle Knoten eine Basiskonfiguration, aber einige von ihnen haben bestimmte Module.

In diesen allgemeinen Modulen ist die Konfiguration genau gleich, egal welches Modul, also würde der "einfache" Pfad einfach zu jedem Knoten im Hauptmanifest hinzugefügt werden.

Fest programmierte würde wie folgt sein:

node default{ 
    include module 1 
    include module 2 
    include module 3 
    include module 4 
} 

node 'www.example1.com'{ 
    include module 1 
    include module 2 
    include module 3 
    include module 4 

    include module 5 
    include module 6 
} 

node 'www.example2.com'{ 
    include module 1 
    include module 2 
    include module 3 
    include module 4 

    include module 7 
    include module 8 
} 
[...] 

Wie Sie sehen können, ist es sehr repetitiv und ineffizient, vor allem beacause ich mehrere Knoten und Module hinzufügen.

Gibt es eine Möglichkeit, dies nur mit Puppet zu erreichen?

+0

Sie wollen Rollen und Profile: http://garylarizza.com/blog/2014/02/17/puppet-workflow-part -2/https://docs.puppet.com/pe/latest/puppet_assign_configurations.html#assigning-configuration-data-with-role-and-profile-modules https://rnelson0.com/2014/07/14/ Intro-zu-Rollen-und-Profile-mit-Puppet-und-Hiera/ –

Antwort

3

Gibt es eine Möglichkeit, die Knoten eine gemeinsame Gruppe von Modulen zu teilen und ihnen dann bestimmte Module hinzuzufügen?

Ja, es gibt mehrere Möglichkeiten. Vor Puppet 4 gab es mehr, aber ich bleibe bei Mechanismen, deren Haltbarkeitsdauer nicht bekannt ist.

Es gibt drei allgemeine Möglichkeiten:

  1. Statt jedes spezifische Modul für jeden Knoten zu deklarieren, Klassen definieren, die gemeinsame Gruppen von Modulen aggregieren und jene auf Ihrem Knoten erklären.

  2. Veröffentlichen Sie die Klassen, die auf Ihre Knoten angewendet werden sollen, und laden Sie sie über eine hierarchische Array-Merge-Suche. Sie erhalten dann alle Vorteile von Hiera für den Austausch von Daten. Es gibt eine Standardfunktion, die dies sehr einfach macht: hiera_include().

  3. Verwenden Sie eine ENC, um [help] Ihre Knoten zu klassifizieren. Verwenden Sie den von Ihnen gewünschten Mechanismus in der Ausgangssprache der ENC, um Klassen zu gruppieren und Gruppen Knoten zuzuweisen.

Die Rollen & Profile Muster, die Verweise in seinem Kommentar @MattSchuchard ist ein verbreiteter und mächtiger Ansatz des Typs (1), und Sie sollten prüfen es auf jeden Fall. Es wäre jedoch Overkill für Ihren Beispielcode; Ich könnte stattdessen umschreiben das Beispiel wie folgt aus (ein einfacher Typ-1-Ansatz):

class default_modules { 
    include module 1 
    include module 2 
    include module 3 
    include module 4 
} 

node default{ 
    include default_modules 
} 

node 'www.example1.com'{ 
    include default_modules 

    include module 5 
    include module 6 
} 

node 'www.example2.com'{ 
    include default_modules 

    include module 7 
    include module 8 
} 
[...] 
+1

Sie können auch alle drei kombinieren. Ich persönlich verwende Rollen und Profile mit einem Hiera ENC, der Facter und eine CMDB nutzt. Alles bleibt sauber und organisiert, und alles funktioniert automatisch mit wenig Aufwand. –

+0

Ich beginne, Rollen und Profile zu verwenden. Ich denke, es wird passen. Vielen Dank. – EGS

Verwandte Themen