Eu estou tentando trabalhar com estrutura de módulos usando módulos do puppetlabs, mas não estou conseguindo. Minha estrutura segue esse padrão:
manifests
nodes.pp
web.pp
modules
django
manifests
init.pp
files
(empty directory)
postgres
manifests
init.pp
files
(empty directory)
No vagrantfile eu coloquei a linha:
puppet.module_path = "/vagrant/modules"
E nos arquivos web.pp e nodes.pp eu faço a chamada, sendo que no arquivo web.pp você faz a chamada do nó:
import 'nodes.pp'
No arquivo nodes.pp eu faço os includes dos módulos que eu tenho que são os nomes das classes, no caso por exemplo, o django e o postgres:
node default {
include django
include postgres
}
Se executar, com script normal que tenha suas classes apenas pra fazer algo, funciona numa boa. O problema é quando trabalha com módulos do puppetlabs, quando inclui as classes desses módulo, dá erro, o puppet não aceita.
O que eu vi é que normalmente pra executar com estruturas de módulos as classes são declaradas da seguinte forma:
class django {
}
Mas as classes para os módulos do puppetlabs qualquer que seja, são declaradas da seguinte forma:
class { 'django':
}
E dessa forma dá erro, pra eu conseguir fazer executar o script e funcionar, tive que deixar de trabalhar com estrutura de módulos e coloquei tudo em um script só, no caso o web.pp dentro do manifests. Ainda estou verificando como trabalhar com os módulos puppetlabs usando a estrutura de módulos.