web-dev-qa-db-ja.com

特定の変数/ファクト/ hiera-valueからhieraファイルをロードします

特定のフラグに従ってhieraファイルをロードしようとしています。

Hierahierarachy構成は

:hierarchy:
  - "%{environment}/%{::fqdn}"
  - "%{environment}/%{nodetype}"
  - "%{environment}/%{calling_module}"
  - "%{environment}"
  - "common/%{calling_module}"
  - "common"

実際、「ノードタイプ」レベルでいくつかの構成を因数分解したいと考えています。目標は、ファイル内に同じhiera「ブロック」を配置しないようにすることです。

  • environment/test/myhost1.example.com.yaml
  • environment/test/myhost2.example.com.yaml
  • environment/test/myhost3.example.com.yaml

しかし、代わりに:の一般的な部分

  • 共通構成に関連するすべてのnfsサーバーのenvironment/test/nfs-server.yaml
  • 共通に関連するすべてのバックエンドサーバーのenvironment/test /backend-server.yaml

その後、すべてのサーバーはfqdnyamlファイルを使用して独自の特定の値を取得します。 (この部分は大丈夫です)

現在、hieraコンテキストに「ノードタイプ」データを提供する方法がわかりません。

私はそれを次のようにメインマニフェストファイルに入れようとしました(ええ、私はドキュメントを読んで、それが悪い考えだと知っていますが、絶望の試みがあっても、とにかく機能しません)

node 'nfs1.example.com', 'nfs2.example.com' {
  $nodetype= 'nfs-server'

ただし、ファイルenvironment/test/nfs-server.yamlはhieraによってロードされません。

カスタムファクトも使用しようとしましたが、カスタムファクトを使用しています

modules/hosts/facts.d/Host-fact-test.txt

ファイルはエージェントのホストに送信されますが、ここでも、hieraは専用ファイルを使用しません。

Notice: /File[/var/lib/puppet/facts.d/Host-fact-test.txt]/ensure: defined content as '{md5}d7492faae1bfe55f65f9958a7a5f6df9'

notify puppetコマンドを使用すると、値は問題ありません

if $nodetype== 'nfs-server' {
  notify {"Running with \$nodetype ${nodetype} ID defined":
    withpath => true,
  }
}

結果:

Notice: /Stage[main]/attemps/Notify[Running with $nodetype nfs-server ID defined]/message: Running with $nodetype nfs-server ID defined

StackはUbuntu14のPuppetオープンソースであるため、バージョンは次のとおりです。

  • 人形3.8.4
  • hiera 1.3.4
  • 事実2.4.4

それを機能させる(または同様の動作を実現する)ためのアイデアや提案はありますか?

1
DevOps

Puppetマスタープロセスは通常、/etc/hiera.yamlの構成を使用しないため、混乱する可能性があります。 Puppet 3.xの場合、通常は/etc/puppet/hiera.yamlです。

(rootとして)使用していることを確認できます

puppet master --configprint hiera_config

マスターマシン上。

0
Felix Frank