2015-07-20 3 views
0

Я использую Puppet Enterprise 3.7.2 и на одном из моих узлов я создаю файл:Почему данные не поступают из моего файла hier yaml?

[[email protected] ~]# cat /etc/profile.d/POD_prefix.sh 
export FACTER_pod_prefix=vii-osc4 

Затем я перезагрузил узел и войти обратно в систему и проверить, что FACTER_pod_prefix получает набор и facter pod_prefix выводит ожидаемое значение.

[[email protected] ~]# env | grep FACTER_pod_prefix 
FACTER_pod_prefix=vii-osc4 
[[email protected] ~]# facter pod_prefix 
vii-osc4 

На мой PE 3.7 кукловод Я создал файл /var/lib/hiera/vii-osc4.yaml. Я создал /var/lib/hiera/vii-osc4.yaml из файла /var/lib/hiera/defaults.yaml , что я использовал вот так:

# cp /var/lib/hiera/defaults.yaml /var/lib/hiera/vii-osc4.yaml 

Этот файл имеет кучу значений параметра класса. Например, есть эта строка в файле:

controller_vip_name: vii-osc4.example.com 

Затем я изменил файл hiera.yaml, чтобы выглядеть следующим образом:

[[email protected] ~]# cat /etc/puppetlabs/puppet/hiera.yaml 
--- 
:backends: 
    - yaml 
:hierarchy: 
    - "%{pod_prefix}" 
    - defaults 
    - "%{clientcert}" 
    - "%{environment}" 
    - global 

:yaml: 
# datadir is empty here, so hiera uses its defaults: 
# - /var/lib/hiera on *nix 
# - %CommonAppData%\PuppetLabs\hiera\var on Windows 
# When specifying a datadir, make sure the directory exists. 
    :datadir: 

Тогда я перезагрузил мою службу ре-HTTPd как так (RHEL7):

# systemctl restart pe-httpd 

Тогда я сделать небольшое изменение в /var/lib/hiera/vii-osc4.yaml, например я изменить линию ...

controller_vip_name: vii-osc4.example.com 

... до ...

controller_vip_name: VII-osc4.example.com 

Но когда я бегу puppet agent -t --noop на моем узле, VII-osc4-Упр-001, я не вижу изменений , что я ожидал увидеть. Если я внес изменения в /var/lib/hiera/defaults.yaml, а затем запустил puppet agent -t --noop на моем узле, я вижу ожидаемые изменения. Что я здесь делаю неправильно?

ОБНОВЛЕНИЕ: с использованием /etc/facter/facts.d способ установления фактов.

Я изучил использование /etc/facter/facts.d для того, что я пытаюсь сделать. То, что я пытаюсь сделать, это установить пользовательский факт «pod_prefix». Я хочу использовать этот факт в моем hiera.yaml как так ...

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

:yaml: 
# datadir is empty here, so hiera uses its defaults: 
# - /var/lib/hiera on *nix 
# - %CommonAppData%\PuppetLabs\hiera\var on Windows 
# When specifying a datadir, make sure the directory exists. 
    :datadir: 

... так что узлы, которые имеют pod_prefix установлено vii-osc4 будут получать свои параметры класса из файла /var/lib/hiera/vii-osc4/yaml и хоста, pod_prefix множества в ix-xyz получит свои параметры класса от /var/lib/hiera/ix-xyz.yaml. Я не вижу, как создать файл /etc/facter/facts.d/pod_prefix.txt на моем кукловода, который содержит что-то вроде этого ...

# cat pod_prefix.txt 
pod_prefix=vii-osc4 

... могло быть решением моей проблемы. Наверное, я должен что-то недопонимать. Может кто-нибудь помочь?

UPDATE 2.

/etc/facter/facts.d/pod_prefix.txt файл идет на моих узлах. Я думаю, что моя самая большая проблема в том, что просто выполнить systemctl restart pe-httpd было недостаточно, и все не начало работать, пока я не выполнил полную перезагрузку моего марионеточного мастера. Мне нужно взглянуть на документы и выяснить, что является правильным способом перезапустить «марионеточного мастера».

ответ

1

Сам подход к управлению настраиваемыми фактами посредством переменных окружения довольно хрупкий. В этом случае я подозреваю, что это не сработало, потому что вы изменили среду шаблонов входа через /etc/profile.d. Однако системные службы не запускаются в таких оболочках.

Чистым подходом было бы определить ваше значение факта в /etc/facter/facts.d.

+0

Да, вы второй человек, чтобы предложить это. Однако я смущен. Где я могу создать файлы /etc/facter/facts.d, на марионеточном мастере или на узле? Считаете ли вы, что установка FACTER_pod_prefix env var будет работать, если я положу файл/etc/sysconfig/pe-puppet на узел в set env var в этом файле? –

+0

Привет, Феликс, я обновил свой вопрос с помощью моей попытки facts.d. Не могли бы вы взглянуть :) –

+0

Значения статического факта можно поместить в каталог 'facts.d' в [любом модуле] (https://docs.puppetlabs.com/facter/2.4/custom_facts.html#fact-locations). Если вам нужно, чтобы вещи были более динамичными, вам придется управлять файлами, используя простые старые ресурсы 'file', как и все остальное. –

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