2016-11-30 3 views
0

Ich habe eine gemischte Umgebung, in der ich Samba/Samba3x, libsmbclient-Pakete auf verschiedenen Red Hat-Servern installieren muss. Was ist der beste Weg, um das Modul zu schreiben, sollte ich ein separates Modul für jedes Paket schreiben ODER kann ich ein Modul schreiben, das alle Pakete verwendet UND wie gehe ich mit verschiedenen Versionen um? Was ist der beste Weg, dies zu tun? HierPuppet mehrere Samba-Pakete mit unterschiedlicher Version installieren

ist das Layout:

Redhat 5: 

Host-A: 
samba3x-3.6.23-12.el5_11 
libsmbclient-3.0.33-3.41.el5_11 

Host-B: 
samba-3.0.33-3.41.el5_11 
libsmbclient-3.0.33-3.41.el5_11 

------------------------------- 

Redhat 6: 

Host-C: 
samba-3.6.23-35.el6_8.x86_64 
libsmbclient-3.6.23-35.el6_8.x86_64 

Antwort

0

Sie haben 2 Möglichkeiten hier, und die Sie verwenden, hängt davon ab, genau das, was Sie tun möchten.

Wenn Sie nur die neueste Version oder eine Version der Pakete installieren möchten, verwenden Sie einfach ensure => installed. Dadurch wird sichergestellt, dass Sie das Paket installiert haben, es wird jedoch nicht aktualisiert oder installiert. Die Pakete genannt werden gleich auf RedHat 5 und RedHat 6 so ist es nicht zu schwierig:

package { ['samba', 'libsmbclient']: 
    ensure => installed 
} 

Wenn Sie eine bestimmte Version der Pakete benötigen, können Sie die params.pp Muster verwenden, die in populär wurde mit vielen Modulen . Innerhalb der params.pp, haben Sie eine Case-Anweisung, die Ihre benötigte Paketversion bestimmt und von dort erbt. Es könnte ein bisschen so aussehen.

params.pp

class samba::params { 
case $::operatingsystemmajrelease { 
'5': { 
    $samba_version = '3.6.23-12.el5_11' 
    $libsmb_version = '3.0.33-3.41.el5_11' 
    } 
'6': { 
    $samba_version = '3.6.23-35.el6_8.x86_64' 
    $libsmb_version = '3.6.23-35.el6_8.x86_64' 
    } 
} 
} 

init.pp

class samba (
    $samba_version = $samba::params::samba_version, 
    $libsmb_version = $samba::params::libsmb_version 
) inherits samba::params { 

    package { 'samba3x': 
    ensure => $samba_version 
    } 
    package { 'libsmbclient': 
    ensure => $libsmb_version 
    } 
} 

Jetzt merke ich Ihre RHEL5-Server auf ihnen verschiedene Samba-Versionen haben. Wenn Sie , unterstützen müssen, müssen Sie etwas wie hiera verwenden, um die obigen Parameter auf einer Knotenbasis zu überschreiben. Das ist in Marpet wirklich nicht zu empfehlen, also würde ich Ihnen raten, vor dem Weggehen genau darüber nachzudenken und zu fragen, ob es nicht einfacher wäre, alles auf die gleiche Version zu bekommen.

+0

Danke Frap! Ihre Antwort ist sehr hilfreich. Also, nur um zu klären, ist es am besten, params.pp zu verwenden oder mit hiera für die Paketversion usw. zu gehen. Leider kann ich die Paketversionen nicht auf der ganzen Linie standardisieren. Einige Systeme müssen verschiedene Versionen haben. – Ura718

+0

Ich würde params.pp und hiera in Kombination verwenden, wo es möglich ist. Es ist keine Entweder-Oder-Situation, die Flexibilität bedeutet, dass Sie das Beste für Sie tun können. – jaxxstorm

Verwandte Themen