Puppet hiera не наследует должным образом (версия Puppet 4.3.2)

Моя структура папок /etc/puppetlabs/code:

[vagrant@client code]$ pwd
/etc/puppetlabs/code
[vagrant@client code]$ tree
.
├── environments
│   ├── production
│   │   ├── environment.conf
│   │   ├── hieradata
│   │   ├── manifests
│   │   └── modules
│   └── test
│       ├── hieradata
│       ├── manifests
│       │   └── site.pp
│       └── modules
├── hieradata
│   ├── common.yaml
│   └── hostname
│       └── client.yaml
├── hiera.yaml
└── modules

Затем для моих файлов YAML:

[vagrant@client code]$ cat hiera.yaml 
---
:backends:
  - yaml
:hierarchy:
  - "hostname/%{facts.hostname}"
  - "os/%{facts.osfamily}"
  - common
:yaml:
  :datadir: /etc/puppetlabs/code/hieradata
merge_behavior: deeper

[vagrant@client code]$ cat hieradata/common.yaml 
---
users:
  jill:
    uid: 1000
    home: '/home/jill'
  jack:
    uid: 1001
    home: '/home/jack'

[vagrant@client code]$ cat hieradata/hostname/client.yaml 
---
users:
  jill:
    home: '/homes/jill'
  jack:
    home: '/homes/jack'
  jane:
    uid : 999
    home: '/homes/jane'

Тем не менее, когда я запускаю hiera, я получаю следующее:

[vagrant@client code]$ hiera --hash users
{"jill"=>{"uid"=>1000, "home"=>"/home/jill"},
 "jack"=>{"uid"=>1001, "home"=>"/home/jack"}}
[vagrant@client code]$ hiera --hash users ::hostname=client
{"jill"=>{"uid"=>1000, "home"=>"/home/jill"},
 "jack"=>{"uid"=>1001, "home"=>"/home/jack"}}

Мой hieradata/hostname/client.yaml должен переопределять common.yaml, заставляя команду hiera возвращать что-то другое, когда передается ::hostname=client.

Что я делаю не так?


person lollercoaster    schedule 24.02.2016    source источник


Ответы (1)


Хэш $facts устанавливается агентом puppet / apply, и я не ожидаю, что он будет доступен, когда вы попытаетесь проверить свои настройки с помощью командной строки hiera.

Вы можете либо использовать - "hostname/%{::hostname}" в своей иерархии, чтобы получить ожидаемые результаты от командной строки hiera, либо вместо этого рассмотреть возможность использования командной строки puppet для проверки ваших настроек.

person Ali Ganjei    schedule 24.02.2016
comment
Хм, это частично работает, но не полностью. Он наследуется, но, например, uid=1000 не распространяется на клиента [vagrant@client code]$ hiera --hash users ::hostname=client {"jill"=>{"home"=>"/homes/jill"}, "jack"=>{"home"=>"/homes/jack"}, "jane"=>{"uid"=>999, "home"=>"/homes/jane"}} [vagrant@client code]$ hiera --hash users {"jill"=>{"uid"=>1000, "home"=>"/home/jill"}, "jack"=>{"uid"=>1001, "home"=>"/home/jack"}} - person lollercoaster; 25.02.2016
comment
о да! двоеточие отсутствует перед merge_behaviour. должно быть :merge_behavior: deeper - person Ali Ganjei; 25.02.2016