puppet: capitalização de definições

1

Eu tenho uma definição no meu manifesto puppet chamado postgresql :: user

Eu coloquei o seguinte, para garantir que o fantoche não tente fazer algo duas vezes:

if !defined (Postgresql::User["dbuser"]) { 
        postgresql::user { "dbuser": 
            ensure => present
        } 
    }

No entanto, ainda estou recebendo os erros no puppetd --test

err: Could not retrieve catalog: Duplicate definition: Postgresql::User[dbuser] is already defined in file /etc/puppet/modules/dbserver/manifests/postgresql8-3.pp at line 22; cannot redefine at /etc/puppet/modules/dbserver/manifests/postgresql8-3.pp:7 on node mynode

Tenho a sensação de que não gosta da capitalização e '::' ao verificar se definido. Existe maneira de escapar disso?

    
por bobinabottle 13.04.2011 / 02:33

1 resposta

3

O problema não é a capitalização, mas a definição duplicada do recurso em /etc/puppet/modules/dbserver/manifests/postgresql8-3.pp. Aqui está um simples manifesto demonstrando isso:

define foo::bar {
  notify { $name: }
}

foo::bar { "hello": }

if !defined (Foo::Bar['hello']) {
  foo::bar { "hello": }
}

Se você mudar! definido para definido, você verá o erro de recurso duplicado semelhante ao seu erro. Eu colocaria seu manifesto completo em vez de um trecho.

Tente também o recurso virtual (@tipo) se este for um problema em que dois módulos precisam realizar o mesmo recurso.

    
por 15.04.2011 / 22:54

Tags