O Vagrant pode apontar para um diretório de manifestos Puppet para execução?

9

Estou usando o Vagrant para iniciar algumas configurações iniciais do Puppet e estou confuso sobre como incluir / executar vários manifestos (que não sejam apenas o site.pp) no fluxo de trabalho de execução do fantoche sem fazer os manifestos extras nos módulos e incluí-los dessa maneira.

No diretório de manifestos de marionetes para o qual aponto o Vagrant (veja abaixo), tenho dois manifestos que quero executar: site.pp e hierasetup.pp.

config.vm.provision "puppet" do |puppet|
  puppet.manifests_path = "puppet_files/manifests"
  puppet.module_path    = "puppet_files/modules"
  puppet.manifest_file  = "site.pp"
  puppet.options = "--verbose --debug"
end 

Atualmente, estou tendo site.pp como manifesto que chama hierasetup.pp. Meu site.pp fica assim:

File {
  owner => 'root',
  group => 'root',
  mode  => '0644',
}

import "hierasetup.pp"

include jboss

Mas recebo este erro sobre a descontinuação de "importação":

Aviso: O uso de 'import' foi preterido em /tmp/vagrant-puppet-1/manifests/site.pp:33. Veja http://links.puppetlabs.com/puppet-import-deprecation (em grammar.ra: 610: em `_reduce_190 ')

De acordo com a URL referenciada em "O que tentar em vez disso", ele diz " Para manter as definições de nós em arquivos separados, especifique um diretório como seu manifesto principal ".

Além disso, este documento fantoche sobre os principais manifestos diz:

" Recomendado: se você estiver usando o manifesto principal em vez de depender de uma ENC, considere alterar a configuração do manifesto para $ confdir / manifestests. Isso permite que você divida o código de nível superior em vários arquivos, evitando a palavra-chave de importação. também corresponderá ao comportamento de ambientes simples " .

Parece que o Puppet pode fazer referência a um diretório inteiro em vez de apenas um arquivo de manifesto específico, de modo que eu esperaria que o Vagrant fizesse uma provisão para isso e me permitisse descartar a linha " puppet.manifest_file =" site.pp "e aponte para o diretório pai em que todos os arquivos * .pp serão executados. No entanto, a remoção dessa linha no Vagrant simplesmente gera uma reclamação sobre um "default.pp" esperado em seu lugar:

provedor de fantoches: * O manifesto Puppet configurado está ausente. Especifique o caminho para um manifesto existente: /some/path/puppet_files/manifests/default.pp

Assim:

  1. Em primeiro lugar, entendo a maneira "nova" (não importada) de chamar vários manifestos corretamente, pois um diretório deve ser apontado para o qual todos os arquivos * .pp dentro dele serão executados?
  2. E segundo, o Vagrant "acompanhou" essa nova alteração para acomodar a referência de diretórios em conjunto com a descontinuação da "importação" pelo Puppet?

Atualização: Graças a Shane, o problema com o número 2 (o código do Vagrant não foi detectado para permitir apontar para os diretórios de manifesto de marionetes) foi relatado no site do rastreador de problemas do GitHub do Vagrant e, desde então, foi corrigido: https://github.com/mitchellh/vagrant / edições / 4169

SeligkeitIstInGott
fonte

Respostas:

6

Em primeiro lugar, entendo a maneira "nova" (não importada) de chamar vários manifestos corretamente, pois um diretório deve ser apontado para o qual todos os arquivos * .pp dentro dele serão executados?

Sim você faz. Veja aqui :

Se você estiver usando o manifesto principal em vez de depender de uma ENC, considere alterar a configuração do manifesto para $ confdir / manifestests. Isso permite que você divida seu código de nível superior em vários arquivos, evitando a palavra-chave de importação.

Além disso, manifeste modulepathtambém estão ficando obsoletos em favor dos ambientes de diretório e do comportamento do diretório manifesto, veja aqui :

Agora que os ambientes de diretório foram concluídos, os ambientes de arquivos de configuração foram descontinuados. Definir blocos de ambiente no puppet.conf causará um aviso de descontinuação, assim como qualquer uso das configurações de modulepath, manifest e config_version no puppet.conf.

Essa é uma grande mudança para muitas implantações, mas deve ser uma boa melhoria a longo prazo.


E segundo, o Vagrant "acompanhou" essa nova alteração para acomodar a referência de diretórios em conjunto com a descontinuação da "importação" pelo Puppet?

Não, não tem; de seus documentos:

manifest_file (string) - O nome do arquivo de manifesto que servirá como ponto de entrada para a execução do Puppet. Espera-se que este arquivo de manifesto exista no manifest.path configurado

Para uso com o Vagrant, você está preso ao lidar com avisos de descontinuação por enquanto, o que é lamentável. Porém, a importação não está prevista para remoção até a versão 4.x, portanto, isso dá ao Vagrant algum tempo para recuperar o atraso.

Shane Madden
fonte
Bem, é bom saber que não estou enlouquecendo porque estou tentando descobrir qual era o acordo há mais de uma hora. Os desenvolvedores do Vagrant estão cientes da necessidade desse recurso ou, se não, existe um lugar para sugerir essas adições?
SeligkeitIstInGott
Parece que ainda não foi solicitado a eles - veja aqui . Solte um problema lá para alinhá-lo melhor com o boneco moderno (ou farei isso se você não tiver uma conta no github)!
Shane Madden
Acho que todos os meus colegas de desenvolvimento têm contas no github, mas se eu tiver uma, nem sei qual seria o meu login. Não preciso de um, já que sou de TI e não um codificador. Você se importaria terrivelmente de fazer isso?
18714 SeligkeitIstInGott
1
@SeligkeitIstInGott Claro, vou conseguir algo arquivado!
21814 Shane Madden
2
@SeligkeitIstInGott Done - github.com/mitchellh/vagrant/issues/4039
Shane Madden