Dependências da classe Puppet dentro dos módulos

3

Atualmente, estou escrevendo um módulo de fantoches para gerenciar minha configuração sensu.

Divida a coisa toda em várias classes e coloque-as em seus respectivos arquivos no diretório sensu "manifests":

sensu::common          (common.pp)
sensu::common::package (common/package.pp)
sensu::common::config  (common/config.pp)
sensu::server          (server.pp)
sensu::server::config  (server/config.pp)

No meu server.pp , tenho o seguinte

class sensu::server {
  include sensu::common
  include sensu::server::config

  Class['sensu::common'] -> Class['sensu::server::config']
}

E o nodes.pp é assim:

class role_monitoring_server {
  $my_role = 'monitoring_server'
  ...
  include sensu::server
}

node my_cool_server {
  include role_monitoring_server
}

Como a maioria de vocês deve ter adivinhado, tenho problemas com a dependência de classes em server.pp :

Class['sensu::common'] -> Class['sensu::server::config']

simplesmente não funciona. A classe sensu::server::config precisa colocar um arquivo em um diretório, que será criado apenas por sensu::common . A questão é que sensu::server::config será sempre aplicado antes de sensu::common e não após como esperado.

O que eu sinto falta? Existem muitas perguntas na web, mas eu simplesmente não encontro uma resposta, já que não sei o que procurar.

    
por Tobias 06.09.2012 / 08:12

1 resposta

2

Você está criando um relacionamento de dependência com a classe sensu::common , mas não há nenhum relacionamento de dependência implícito entre sensu::common e seus "filhos", package e config . Então, a menos que sua configuração pareça diferente (suponho que a classe sensu::common seja apenas um par include linhas?), Elas ainda estarão livres para serem aplicadas a qualquer momento em relação à classe sensu::server::config .

Você provavelmente desejará construir o relacionamento com a classe que contém os recursos necessários; você está efetivamente criando um relacionamento obrigatório, cada recurso em uma classe para cada recurso do outro (o que for necessário, ou ambos):

Class['sensu::common::package'] -> Class['sensu::server::config']
Class['sensu::common::config'] -> Class['sensu::server::config']
    
por 06.09.2012 / 08:34

Tags