Eu uso o Puppet 3.7 no modo cliente-servidor padrão, com ambientes e usando o Hiera para dados.
Eu uso o Vagrant para testar os manifestos Puppet diretamente do meu repositório Puppet.
Eu recentemente comecei a usar o Hiera e mudei meu Vagrantfile (e o diretório do Vagrant) para trabalhar com ele. Agora parece funcionar com Hiera, mas outro problema aparece: Vagrant acha que minha VM está em produção de ambiente quando está em experimental. (isso funcionou bem antes)
O repositório de fantoches se parece com
~/code/puppet
└── environments
├── experimental
│ ├── manifests
│ │ └── site.pp
│ ├── modules
│ └── Puppetfile
├── production
│ ├── manifests
│ │ └── site.pp
│ ├── modules
│ └── Puppetfile
└── testing
├── manifests
│ └── site.pp
├── modules
└── Puppetfile
Minha configuração do Vagrant é armazenada em outro diretório. Eu criei um link simbólico (ln -s) para ~ / code / puppet chamado puppet neste diretório.
O Vagrantfile parece
config.vm.define "standalone", primary: true do |config|
config.vm.box = "debian_wheezy+vbox_jessie+puppet_3.7"
config.vm.hostname = "standalone.puppet.vagrant"
config.vm.network "private_network", ip:"192.168.10.21"
config.vm.synced_folder "puppet/hieradata", "/etc/puppet/hieradata"
config.vm.provision :puppet, :options => ["--yamldir /hieradata"] do |puppet|
puppet.manifests_path = "puppet/environments/experimental/manifests"
puppet.manifest_file = "site.pp"
puppet.module_path = [ "puppet/environments/experimental/modules", "puppet/environments/production/modules", "puppet/modules" ]
puppet.hiera_config_path = "puppet/hiera.yaml"
end
end
Eu imagino que minhas mudanças recentes após o uso de Hiera não estão corretas para o Vagrant, e talvez os hacks (linkando o diretório de códigos de marionetes) sejam a causa, mas não consigo ver como isso deve ser organizado.
Há algumas pessoas que conhecem esse problema e como resolvê-lo?
Obrigado
Atualizar
eu mudei
puppet.manifests_path = "puppet/environments/#{env}/manifests"
e removi o arquivo puppet.working_directory para que minha VM fique com / provisionada.
com
puppet.module_path = [ "puppet/modules", "puppet/environments/production/modules" ]
parece que minha VM acessa os módulos de produção e env atuais, que eu preciso.