Я хотел бы знать , как настроить :datadir:
в hiera.yaml
для оптимального использования с кукольным и Vagrant. В настоящее время я использую vagrant 1.5.0 с virtualbox 4.2 на Ubuntu 13.10 с гостем Ubuntu 12.04 под управлением puppet 3.1.1
Я пытаюсь настроить среду, аналогичную этой публикации в блоге, Puppet Best Practices: Конфиги, специфичные для среды . В частности, мой Vagrantfile содержит:
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
Я могу подтвердить, что hiera_config_path
это правильно, потому что я получаю ошибку, если удаляю hiera.yaml
.
puppet/hiera.yaml
содержит:
---
:backends: yaml
:yaml:
:datadir: "manifests/configuration"
:hierarchy:
- "%{::clientcert}"
- "%{::environment}"
- "virtual_%{::is_virtual}"
- common
:logger: console
И, кроме того, puppet/manifests/configuration/common.yaml
содержит:
---
myvar: "test"
Тестирование это из командной строки:
$ hiera -c hiera.yaml myvar
test
Все идет нормально. Однако, если я попытаюсь проверить это из файла манифеста марионетки, переменная не найдена, и я получу ошибку. Пример теста:
$myvariable = hiera(myvar)
notice("My variable is: ${myvar}")
Ошибка:
Error: Could not find data item myvar in any Hiera data file and no default supplied at...
Если я захожу в мою машину через ssh vagrant ssh
, я вижу, что Vagrant монтирует мой каталог манифеста в / tmp / vagrant-puppet-2. Если я редактирую hiera.yaml
файл и заменяю :datadir:
его полным путем /tmp/vagrant-puppet-2/manifests/configuration
, тогда мои манифесты Puppet могут получить доступ к моим данным Hiera. Могу ли я сделать это с относительным путем, хотя?
hiera.yaml
файла, один для использования с vagrant и один для использования с Puppet (в производстве)?