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

私は何を間違っていますか?

4

1 に答える 1

1

$facts ハッシュは puppet エージェント / 適用によって設定されます。hiera コマンド ラインで設定を検証しようとしたときに、それが利用できるとは思いません。

階層で使用- "hostname/%{::hostname}"して、hiera cmd から期待される結果を取得するか、代わりに puppet コマンドラインを使用して設定を確認することを検討してください。

于 2016-02-24T16:18:51.010 に答える