2016-11-30 5 views
0

J'ai un environnement mixte où j'ai besoin d'installer des paquets samba/samba3x, libsmbclient sur différents serveurs Red Hat. Quelle est la meilleure façon d'écrire le module, dois-je écrire un module séparé pour chaque paquet OU puis-je écrire un module qui utilisera tous les paquets ET comment puis-je traiter avec différentes versions? Quelle est la meilleure façon de procéder?marionnette installer plusieurs paquets samba avec une version différente

Voici la mise en page:

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 

Répondre

0

Vous avez 2 options ici, et que l'on vous utilisez dépend exactement ce que vous voulez faire.

Si vous voulez juste installer la dernière version ou une version des paquets, utilisez simplement ensure => installed. Cela s'assurera que vous avez installé le paquet, mais ne les mettra pas à jour ou ne les installera pas. Les emballages portent le même nom sur RedHat 5 et 6 RedHat il est donc pas trop difficile:

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

Si vous avez besoin d'une version spécifique des packages, vous pouvez utiliser le modèle params.pp qui est devenu populaire avec de nombreux modules . À l'intérieur du params.pp, ayez une instruction de cas qui détermine votre version de paquetage requise et héritez de là. Cela pourrait ressembler un peu à ceci.

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 
    } 
} 

Maintenant, je remarque vos serveurs RHEL5 ont différentes versions de samba sur eux. Si vous devez supporter que vous aurez besoin d'utiliser quelque chose comme hiera pour remplacer les paramètres ci-dessus par nœud. Cela est vraiment découragé dans Puppet, donc je vous conseille de bien réfléchir avant de descendre cette route, et de vous demander s'il ne serait pas plus facile de tout mettre sur la même version.

+0

Merci beaucoup! Votre réponse est très utile. Donc, juste pour clarifier est-il préférable d'utiliser params.pp ou d'aller avec hiera pour la version du paquet et etc. Malheureusement, je ne peux pas standardiser les versions de paquet à travers le conseil. Certains systèmes doivent avoir des versions différentes. – Ura718

+0

J'utiliserais params.pp et hiera en combinaison si possible. Ce n'est pas une situation ou l'autre, la flexibilité signifie que vous pouvez faire ce qu'il y a de mieux pour vous. – jaxxstorm