Как вы тестируете / устраняете неполадки hiera в среде Puppet

Я использую Puppet вместе с Foreman для подготовки хостов, и в настоящее время у меня есть все конфигурации Puppet в виде модулей в репозиторий. Я' Я хотел бы использовать Hiera, но мне никогда не удавалось получить даже самую простую вещь, которую можно извлечь из одного из добавленных мной файлов .yaml . Мой главный puppet.conf :

[main]
    basemodulepath = /etc/puppetlabs/code/environments/common:/etc/puppetlabs/code/modules:/opt/puppetlabs/puppet/modules:/usr/share/puppet/modules
    codedir = /etc/puppetlabs/code
    environmentpath = /etc/puppetlabs/code/environments
    hiera_config = /etc/puppetlabs/code/environments/production/hiera.yaml
    hostprivkey = $privatekeydir/$certname.pem { mode = 640 }
    logdir = /var/log/puppetlabs/puppet
    pluginfactsource = puppet:///pluginfacts
    pluginsource = puppet:///plugins
    privatekeydir = $ssldir/private_keys { group = service }
    reports = foreman
    rundir = /var/run/puppetlabs
    server = foreman.domain.net
    show_diff = false
    ssldir = /etc/puppetlabs/puppet/ssl
    vardir = /opt/puppetlabs/puppet/cache

[agent]
    certname = foreman.domain.net
    classfile = $statedir/classes.txt
    default_schedules = false
    environment = production
    listen = false
    localconfig = $vardir/localconfig
    masterport = 8140
    noop = false
    pluginsync = true
    report = true
    runinterval = 1800
    splay = false
    splaylimit = 1800
    usecacheonfailure = true

[master]
    autosign = /etc/puppetlabs/puppet/autosign.conf { mode = 0664 }
    ca = true
    certname = foreman.domain.net
    external_nodes = /etc/puppetlabs/puppet/node.rb
    logdir = /var/log/puppetlabs/puppetserver
    node_terminus = exec
    parser = current
    rundir = /var/run/puppetlabs/puppetserver
    ssldir = /etc/puppetlabs/puppet/ssl
    strict_variables = false
    vardir = /opt/puppetlabs/server/data/puppetserver

содержимое /etc/puppetlabs/code/environments/production/hiera.yaml :

---
version: 5
defaults:
  datadir: hieradata
  data_hash: yaml_data
hierarchy:
  - name: "Per-node data"
    path: "nodes/%{trusted.certname}.yaml"
  - name: "Per-domain data"
    path: "domains/%{facts.networking.domain}.yaml"
  - name: "OS family"
    path: "os/%{facts.os.family}.yaml"
  - name: "Other hierarchy levels"
    path: "common.yaml"

и структура hieradata :

hieradata/
├── common.yaml
├── domains
│   └── domain.net.yaml
├── nodes
│   ├── foreman.domain.net.yaml
│   └── test.domain.net.yaml
└── os
    └── Debian.yaml

и, например, содержание файла с данными для специалиста:

---
environment: production
classes:
  - roles::default

наконец, версии вещей, которые кажутся актуальными:

$ puppet --version
5.5.3
$ facter --version
3.11.3 (commit 1854ababc68ec12ca40bdc143e46c3d5434b92ba)
$ hiera --version
3.4.3

Мне кажется, что я следил за различными руководствами по Интернету, но ни один из похоже, мои хосты используют настройки из файлов .yaml . Как вы тестируете hiera ? Я ожидал, что будет какой-то разумный способ решить, какие файлы применяются к отдельному узлу, но я не могу найти команду, которая работает для этого, или даже поискать некоторые классы, которые я создал в своих средах. Я бы также подумал, что смогу использовать что-то вроде hiera -c hiera.yaml --hash profiles , но это дает ошибку о синтаксисе v5.

0
задан 1 August 2018 в 02:02
1 ответ

Я думаю, что ответ на вопрос заключается в том, что я вставил в комментарий, который я сделал.

puppet lookup --node test.domain.net --explain classes

Выполнение этой команды на сервере показало, что она должна работать. Моя настоящая проблема заключалась в том, что в моем манифесте сайта для узла не было hiera_include ('classes') , которое я получил из-за поиска.

0
ответ дан 5 December 2019 в 05:26

Теги

Похожие вопросы