classes parametrizadas do fantoche

2

Estou tendo problemas para obter classes parametrizadas trabalhando no fantoche 2.6.4 (cliente e mestre)

######## from /etc/puppet/manifests/nodes.pp 
# defining one node to use certain version
#######################################################
node 'dev-internal-000008.domain.com' {
         include software($version="dev-2011.02.11")
}
# de /etc/puppet/modules/software/manifests/init.pp

Estou configurando a versão aqui como o "padrão"

#
class software($version="dev-2011.02.04b") {
  File {
    links => follow
  }

  file { "/opt/software_AIR":
    ensure => directory
  }

  file { "/opt/software_AIR/share":
    source => "puppet://puppet/software/air/$version",
    recurse => "true",
  }
}
#

erros do mestre de marionetes

#
err: Could not parse for environment production: Syntax error at '='; expected ')' at /etc/puppet/manifests/nodes.pp:10 on node dev-internal-domain.com
#

encontrou uma correção para isso

tente

node 'dev-internal-000008.domain.com' {
  class { customsoftware:version => "dev-2011.02.04b" }
}
    
por Joey BagODonuts 25.02.2011 / 18:35

2 respostas

7

As classes parametrizadas não funcionam com include , infelizmente. Você precisa usar a nova sintaxe de declaração de classe alternativa que foi introduzida ao mesmo tempo que as classes com parâmetros :

node 'dev-internal-000008.domain.com' {
    # include software($version="dev-2011.02.11") # (doesn't work)
    class {'software':
        version => "dev-2011.02.11",
    } # works
}

Coisas:

  • Observe que parece uma declaração de recurso ( file , service , etc.).
  • O fato de a definição e a declaração começarem com a classe de palavras é confuso, mas tenha cuidado e você ficará bem.
  • Você não pode declarar uma turma dessa maneira mais de uma vez, do mesmo jeito que você pode com include . Espera-se que isso mude em 2.7, e uma sintaxe mais amigável provavelmente será introduzida.
por 25.02.2011 / 21:47
0

Você também pode usar um seletor com base no nome do host:

class {'software':
    version         => $::hostname ? {
      /hostname1/   => 'dev-2011.02.11',
      default       => 'dev-2011.02.04b',
    },
}
    
por 30.11.2016 / 12:51

Tags