Я использую 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
было недостаточно, и все не начало работать, пока я не выполнил полную перезагрузку моего марионеточного мастера. Мне нужно взглянуть на документы и выяснить, что является правильным способом перезапустить «марионеточного мастера».
Да, вы второй человек, чтобы предложить это. Однако я смущен. Где я могу создать файлы /etc/facter/facts.d, на марионеточном мастере или на узле? Считаете ли вы, что установка FACTER_pod_prefix env var будет работать, если я положу файл/etc/sysconfig/pe-puppet на узел в set env var в этом файле? –
Привет, Феликс, я обновил свой вопрос с помощью моей попытки facts.d. Не могли бы вы взглянуть :) –
Значения статического факта можно поместить в каталог 'facts.d' в [любом модуле] (https://docs.puppetlabs.com/facter/2.4/custom_facts.html#fact-locations). Если вам нужно, чтобы вещи были более динамичными, вам придется управлять файлами, используя простые старые ресурсы 'file', как и все остальное. –