Posso usar curingas? é um pacote de marionetes que garante a cobertura de vários releaseversion

5

Usando o fantoche, quero atualizar pacotes nos meus servidores (CentOS 5 e 6) de maneira controlada. Portanto, não quero usar ensure=>latest , mas ensure=>3.0.1-1 .

Exemplo:

class puppet::installation inherits puppet {
        package { "puppet":
            ensure => "3.0.1-1",
        }
}

A atualização funciona bem, mas o agente de marionetes continua reclamando que há uma diferença:

/Stage[main]/Puppet::Installation/Package[puppet]/ensure: current_value 3.0.1-1.el6, should be 3.0.1-1 (noop)

Eu posso resolver isso alterando a regra de garantia para 3.0.1-1.el6 , mas isso não funcionará no CentOS 5.

Existe uma maneira curta / limpa de resolver isso ou eu tenho que escrever para regras dependentes de os-releaseversion separadas.

Estive pesquisando uma solução, mas não encontrei nada relacionado a essa pergunta em particular.

Qualquer sugestão ou referência a um exemplo relevante seria apreciada.

    
por Rob van den Eijnde 22.11.2012 / 12:53

3 respostas

4

Você teria que definir uma variável com uma declaração de caso, mais ou menos assim:

class puppet::installation inherits puppet {

        case $::operatingsystemrelease {
            '5':     { $puppet_ver = '3.0.1-1'}
            default: { $puppet_ver = '3.0.1-1.el6'}
        }

        package { 'puppet':
            ensure => $puppet_ver,
        }
}

No entanto, é um design melhor para usar um arquivo params.pp para esse tipo de lógica. Leia sobre params.pp aqui: link

    
por 24.11.2012 / 18:31
2

O Puppet realmente não tem nenhuma funcionalidade para isso ainda (embora eles realmente precisem).

Você pode usar o yum-versionlock plug-in do yum para bloquear pacotes RPM específicos em versões específicas e, em seguida, usar o fantoche para controlar a configuração do versionlock.

Para algumas outras soluções, consulte esta questão relacionada .

    
por 22.11.2012 / 15:27
1

Na verdade, consegui usar o caractere curinga para instalar uma versão específica do Python, independentemente do sistema operacional. Meu código de pacote para python é o seguinte.

package {
    "python-dev": ensure => "2.7.3*";
    "python-setuptools": ensure => installed;
    "python-pip": ensure => installed;
    "libxml2-dev": ensure => installed;
    "libxslt-dev": ensure => installed;
}

Usando o 2.7.3 * como a versão assegurada, ele instalou o python 2.7.3-0ubuntu2.2 em minha máquina virtual vagrant. Estou usando o Puppet versão 2.7.19.

    
por 25.06.2013 / 00:21