Eu gostaria de saber como configurar :datadir:
no hiera.yaml
para uma utilização óptima com fantoche e Vagrant. Atualmente, estou usando o vagrant 1.5.0 com o virtualbox 4.2 no Ubuntu 13.10 com um convidado do Ubuntu 12.04 executando o fantoche 3.1.1
Estou tentando configurar um ambiente semelhante a este post do blog, Puppet Best Practices: Configurações específicas do ambiente . Especificamente, meu Vagrantfile contém:
config.vm.define "servername" do |servername|
servername.vm.box = "precise-puppet-3"
servername.vm.network "private_network", ip: "192.168.213.2",
virtualbox__intnet: "networkname"
# Provision with puppet.
servername.vm.provision :puppet do |puppet|
puppet.hiera_config_path = "puppet/hiera.yaml"
puppet.manifests_path = "puppet/manifests"
puppet.module_path = "puppet/modules"
puppet.manifest_file = "servername.pp"
puppet.facter = {
"vagrant" => "1",
"server" => "servername",
}
end
end
Posso confirmar que hiera_config_path
está correto, pois recebo um erro se excluir hiera.yaml
.
puppet/hiera.yaml
contém:
---
:backends: yaml
:yaml:
:datadir: "manifests/configuration"
:hierarchy:
- "%{::clientcert}"
- "%{::environment}"
- "virtual_%{::is_virtual}"
- common
:logger: console
E, além disso, puppet/manifests/configuration/common.yaml
contém:
---
myvar: "test"
Testando isso na linha de comando:
$ hiera -c hiera.yaml myvar
test
Por enquanto, tudo bem. No entanto, se eu tentar testar isso de dentro de um arquivo de manifesto de fantoches, a variável não poderá ser encontrada e recebo um erro. Exemplo de teste:
$myvariable = hiera(myvar)
notice("My variable is: ${myvar}")
O erro é:
Error: Could not find data item myvar in any Hiera data file and no default supplied at...
Se eu entrar na minha máquina via vagrant ssh
, posso ver que o Vagrant está montando meu diretório de manifesto em / tmp / vagrant-puppet-2. Se eu editar o hiera.yaml
arquivo e substituí :datadir:
-lo pelo caminho completo /tmp/vagrant-puppet-2/manifests/configuration
, meus manifestos do Puppet poderão acessar meus dados do Hiera. Posso fazer isso com um caminho relativo?
hiera.yaml
arquivos, um para uso com vagrant e outro para uso com Puppet (em produção)?O que
hiera.yaml
eu estou trabalhando especifica:datadir: /etc/puppet/hiera
e não tive sorte em definir a--yamldir
opção, como algumas das outras respostas especificadas. No entanto, percebi depois de um tempo que era possível mapear meus hieradados para esse local na vm convidada:Isso funciona muito bem :-)
fonte
config.vm.synced_folder("D:/branches/preprod/hieradata", "/etc/puppet/hieradata")
e também especifiqueipuppet.hiera_config_path = "D:/branches/preprod/hiera.yaml"
em estrofes de configuração de fantoches.É o que estou fazendo em meus próprios experimentos de marionetes.
Meu hiera.yaml minimalista fica assim:
E para fins de ilustração, minha estrutura de diretórios no host (MacBook) é semelhante a esta:
fonte
Seu problema original foi /
:datadir
precisa ser um caminho absoluto. O Hiera não permite que você especifique caminhos relativos para o:datadir
. Se você acha que isso deve ser permitido, envie uma solicitação para alterá-lo .O manifestdir está obsoleto . Você pode preferir usar o yamldir . Você pode substituir essa configuração quando passar na aplicação de bonecos.
Para vagrant:
ATUALIZAÇÃO : Como você precisa fornecer um caminho absoluto (e porque é vagante), configure sua própria pasta compartilhada para ser explícito sobre onde está e não fazer suposições sobre um caminho definido para a execução de fantoches. Adicione isso ao seu
Vagrantfile
:e altere a primeira linha acima para:
fonte
config.vm.synced_folder "puppet/manifests/configuration", "/hieradata"
puppet apply
. O datadir será relativo ao diretório atual em que o Puppet foi executado.