2016-12-21 5 views
1

Я изучаю Кукольный и просто читаю о Hiera.Puppet Hiera lookup in manifest не работает

До прихода к вопросу, я обеспечиваю некоторые параметры конфигурации ниже:

$ cat /etc/puppetlabs/puppet/puppet.conf 
[master] 
codedir = /etc/puppetlabs/code 

[agent] 
server = puppet.example.com 

[master] 
certname = puppet.example.com 

[master] 
vardir = /var/opt/puppetlabs/puppetserver 
ssldir = $vardir/ssl 

[main] 
environmentpath = /etc/puppetlabs/code/environments 
basemodulepath = /etc/puppetlabs/code/modules 


$ cat /etc/puppetlabs/puppet/hiera.yaml 
--- 
:backends: 
    - yaml 
:hierarchy: 
    - "nodes/%{::trusted.certname}" 
    - common 

:yaml: 
# datadir is empty here, so hiera uses its defaults: 
# - /etc/puppetlabs/code/environments/%{environment}/hieradata on *nix 
# - %CommonAppData%\PuppetLabs\code\environments\%{environment}\hieradata on Windows 
# When specifying a datadir, make sure the directory exists. 
    :datadir: 

UPDATE: После прохождения через @ ит-FelixFrank ответ, я изменил свое местоположение по умолчанию Hiera конфигурационный файл. Файл конфигурации имеет следующее содержание:

$ cat /etc/puppetlabs/code/hiera.yaml 
--- 
:backends: 
- yaml 
:hierarchy: 
- "hostname/%{facts.hostname}" 
- "os/%{facts.osfamily}" 
- common 
:yaml: 
:datadir: /etc/puppetlabs/code/hieradata 

я создал hieradata реж под /etc/puppetlabs/code

$ ll /etc/puppetlabs/code/ 
total 4 
drwxr-xr-x. 4 root root 32 Dec 20 11:17 environments 
drwxr-xr-x. 3 root root 39 Dec 21 12:22 hieradata 
-rw-r--r--. 1 root root 153 Dec 20 16:51 hiera.yaml 
drwxr-xr-x. 2 root root 6 Dec 21 11:02 modules 

$ cat /etc/puppetlabs/code/hieradata/common.yaml 
--- 
puppet::status: 'running' 
puppet::enabled: true 

Я попытался перезапись вышеуказанные значения в моем файле YAML имя хоста, как указано в разделе:

$ cat /etc/puppetlabs/code/hieradata/hostname/delvmplgc1.yaml 
--- 
puppet::status: 'stopped' 
puppet::enabled: false 

$ facter hostname 
delvmplgc1 

Я создал образец манифеста на сервере Puppet, чтобы узнать, могу ли я выполнить поиск в Hiera в манифесте.

$ cat /etc/puppetlabs/code/environments/qa/manifests/hierasample.pp 
notify { 'welcome': 
     message => "Hello!", 
} 

$status = lookup({ name => 'puppet::status', default_value => 'running' }) 
$enabled = lookup({ name => 'puppet::enabled', default_value => true }) 

service { 'puppet': 
     ensure => $status, 
     enable => $enabled, 
} 

Теперь проблема в том, что когда я пытаюсь выполнить манифест, я не вижу сообщений, связанных с Hiera.

$ puppet apply /etc/puppetlabs/code/environments/qa/manifests/hierasample.pp 
Notice: Compiled catalog for delvmplgc1.sapient.com in environment production in 0.99 seconds 
Notice: Hello! 
Notice: /Stage[main]/Main/Notify[welcome]/message: defined 'message' as 'Hello!' 
Notice: Applied catalog in 0.10 seconds 

Любая помощь будет оценена по достоинству.

+0

Можете ли вы добавить содержимое '/ etc/puppetlabs/puppet/hiera.yaml' к вопросу? –

+0

Обновлено сообщение с содержимым '/ etc/puppetlabs/puppet/hiera.yaml' – Technext

ответ

3

Как комментируют в стандартных hiera.yaml штатах, datadir находится в

/etc/puppetlabs/code/environments/%{environment}/hieradata 

Таким образом, вместо создания hieradata в /etc/puppetlabs/code непосредственно, переместите его вниз на два уровня в /etc/puppetlabs/code/environments/qa и других средах.

+0

Я попытался изменить местоположение файла конфигурации по умолчанию hiera, вместо этого используя' hiera_config = $ codedir/hiera.yaml', и он взял изменение. Спасибо, что указали на ошибку! :) – Technext

+0

Хотя есть еще один запрос: перезаписанные значения в файле delvmplgc1.yaml, показанные в моем сообщении, меняют как «статус», так и «включен» на «остановлен» и false соответственно. Однако в марионеточной продукции упоминаются только: «Примечание:/Stage [main]/Main/Service [марионетка]/обеспечить: обеспечить замену« running »на« stop ». Он также должен был упомянуть «Примечание:/Stage/Main/Service [марионетка]/enable: enable изменено« true »на« false ». Любая идея, почему она это пропустила? – Technext

+0

Я вставлял содержимое своего пользовательского файла hiera.yaml в свой пост. – Technext

Смежные вопросы