Puppet & Facter - como determinar se está executando o Cent 6 ou o Cent 5

4

Como você usaria faceta e fantoche para determinar se o sistema operacional está rodando Cent 6.x ou Cent 5.x?

facter operatingsystemrelease 
6.4

Eu só me importo com o grande lançamento (6)

Eu pensei em usar o awk, mas deve haver uma maneira melhor que seja mais amigável.

   #This works, but is ugly trying to use this in a puppet manifest

facter operatingsystemrelease |awk -F. '{print $1}'
6

Atualizar :

Parece que as versões mais recentes do facter têm algumas informações adicionais sobre os principais lançamentos que não estão na minha versão. Meu provisionamento inicial precisa assumir que o facter está desatualizado.

facter --version
1.6.4
puppet --version
2.7.20

Eu tentei procurar por fatos adicionais que possam mostrar a versão principal, com o seguinte comando

facter |grep 6
    
por spuder 06.08.2013 / 00:28

2 respostas

9

Existe operatingsystemmajrelease

% facter operatingsystemmajrelease
6

Se você tiver o pacote redhat-lsb-core instalado, o facter obterá também a família de fatos fornecidos pelo lsb (que inclui lsbmajdistrelease ):

% facter |grep ^lsb
lsbdistcodename => Final
lsbdistdescription => CentOS release 6.4 (Final)
lsbdistid => CentOS
lsbdistrelease => 6.4
lsbmajdistrelease => 6
lsbrelease => :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch

OBSERVAÇÃO: você precisa de pelo menos Facter 1.7 para ter operatingsystemmajrelease . Os principais fatos do Facter 1.6 são bastante limitados.

    
por 06.08.2013 / 00:41
5

Suponho que você esteja tentando tomar algum tipo de decisão com base na versão de instalação.

Você pode usar expressões regulares em sua lógica.

Então, algo como:

case $operatingsystemrelease {
    /^6.*/: {
        //do 6.x stuff
    }
    /^5.*/: {
        //do 5.x stuff
    }
}

ou se if for mais seu estilo:

if $operatingsystemrelease =~ /^6.*/ {
    //do 6.x stuff
}
elsif $operatingsystemrelease =~ /^5.*/ {
   // do 5.x stuff
}

Lembre-se de que todos os fatos sobre fatores estão disponíveis em variáveis de escopo global para seus manifestos.

Se você tiver um ambiente misto, provavelmente vai querer incluir isso em algo como:

if $operatingsystem == "CentOS" {
}
    
por 06.08.2013 / 00:37