Попытка использовать hiera с vagrant и puppet

Итак, я пытаюсь использовать hiera, чтобы изменить способ настройки git user.name и user.email. на моем бродячем ящике.

У меня есть это в моем default.pp

git::config { 'user.name':
    value => hiera("github_username"),
}

git::config { 'user.email':
    value => hiera("github_email"),
}

В файле Vagrant у меня есть это (внутри параметров марионетки):

puppet.options = "--hiera_config /vagrant/hieradata/hiera.yaml"

Это, кажется, загружается правильно. Что у меня есть в этом файле:

---
:backends:
  - yaml
:hierarchy:
  - defaults
  - "%{clientcert}"
  - "%{environment}"
  - global
  - company

:yaml:
  :datadir:/vagrant/hieradata

Теперь внутри company.yaml у меня есть:

github_username: 'antonio'
github_email: '[email protected]'

Когда я делаю vagrant provision, я получаю следующее сообщение об ошибке:

==> debian_dev: Error: Error from DataBinding 'hiera' while looking up 'apache::apache_name': can't convert Symbol into Integer on node debian.dev
==> debian_dev: Wrapped exception:
==> debian_dev: can't convert Symbol into Integer
==> debian_dev: Wrapped exception:
==> debian_dev: can't convert Symbol into Integer
==> debian_dev: Error: Error from DataBinding 'hiera' while looking up 'apache::apache_name': can't convert Symbol into Integer on node debian.dev
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

Я использую модуль apache, но даже в hiera.yaml по умолчанию (тот, что в /etc/hiera.yaml) не было определения для apache::apache_name.

Если я не передам параметр puppet, просто жалуется, что не могу найти hiera.yaml и что он будет использовать файл по умолчанию.

Любые идеи или предложения о том, как я могу это исправить?

Спасибо!

PS: я использую Windows 7 с Vagrant 1.6.5 и puppet 3.7.1.


person AntonioCS    schedule 30.01.2015    source источник
comment
просто хотел, чтобы вы знали, что у Puppet Provisionner есть эта опция: puppet.hiera_config_path = ../config/hiera.yaml   -  person PapelPincel    schedule 29.05.2015


Ответы (1)


Обновите файл hiera.yaml, чтобы в каталоге данных было место:

:yaml:
  :datadir: /vagrant/hieradata

Чтобы помочь с отладкой, я предлагаю добавить подробные параметры и параметры отладки в ваш Vagrantfile:

config.vm.provision "puppet" do |puppet|
  puppet.options = "--verbose --debug"
end

Вот что вы должны увидеть с неправильным значением datadir:

$ vagrant provision
==> other: Running provisioner: puppet...
==> other: Running Puppet with default.pp...
==> other: stdin: is not a tty
==> other: Notice: Scope(Node[default]): -----
==> other: Debug: hiera(): Hiera YAML backend starting
==> other: Debug: hiera(): Looking up github_username in YAML     backend
==> other: Debug: hiera(): Looking for data source defaults
==> other: Debug: hiera(): Found github_username in defaults    

Вот что вы должны увидеть с обновленным каталогом данных:

$ vagrant provision
==> other: Running provisioner: puppet...
==> other: Running Puppet with default.pp...
==> other: stdin: is not a tty
==> other: Notice: Scope(Node[default]): -----
==> other: Debug: hiera(): Hiera YAML backend starting
==> other: Debug: hiera(): Looking up github_username in YAML     backend
==> other: Debug: hiera(): Looking for data source defaults
==> other: Debug: hiera(): Found github_username in defaults

Это также должно помочь объяснить, как находят значения, когда hiera выполняет поиск.

person invalidusrname    schedule 01.02.2015
comment
Это, кажется, сделало свое дело. Мне кажется немного странным, что пробел имеет такое большое значение, но это работает, спасибо :) - person AntonioCS; 04.02.2015