2016-11-30 13 views
0

У меня смешанная среда, где мне нужно установить пакеты samba/samba3x, libsmbclient на разные серверы red hat. Каков наилучший способ написать модуль, должен ли я писать отдельный модуль для каждого пакета, или я могу написать один модуль, который будет использовать все пакеты И как я могу работать с разными версиями? Каков наилучший способ сделать это?puppet install несколько пакетов samba с другой версией

Вот раскладка:

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 

ответ

0

У вас есть 2 варианта здесь, и какой из них вы используете, зависит от того, что вы хотите сделать.

Если вы просто хотите установить последнюю версию или a версии пакетов, просто используйте ensure => installed. Это позволит вам установить пакет, но не будет его обновлять или устанавливать. Пакеты называются одинаково на RedHat 5 и RedHat 6, так что это не так уж сложно:

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

Если вам нужен конкретную версию из пакетов, вы можете использовать params.pp шаблон, который стал популярным в многих модулей , Внутри params.pp есть оператор case, который определяет вашу требуемую версию пакета и наследует ее оттуда. Это может показаться немного похожим на это.

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

Теперь я замечаю серверы RHEL5 разные версии самбы на них. Если вам нужно поддерживать , то вам нужно использовать что-то вроде hiera, чтобы переопределить приведенные выше параметры для каждого узла. Это действительно обескуражено в Puppet, поэтому я бы посоветовал вам тщательно подумать, прежде чем идти по этому маршруту, и спросить, не будет ли проще получить все на одной и той же версии.

+0

Thank You Frap! Ваш ответ очень полезен. Поэтому просто уточнить, лучше ли использовать params.pp или пойти с hiera для версии пакета и т. Д. К сожалению, я не могу стандартизировать версии пакетов по всем направлениям. Некоторые системы должны иметь разные версии. – Ura718

+0

Я использовал бы params.pp и hiera в комбинации, где это возможно. Это не одно или тоже, гибкость означает, что вы можете делать все, что лучше для вас. – jaxxstorm