-1

各環境タイプ dev、qa、統合用に yaml ファイルを作成しました。ただし、複数の開発環境があり、ホスト固有の yaml ファイルを介していくつかの変更をオーバーライドしたいと考えています。

Hiera
|--host
|  |-dev1.internet.com
|  |-dev2.intranet.com
|--servertype
|  |-dev
|  |-qa

dev.yaml
augeas_xml:
  - 'set /root/node/servername/#text 'dev'
  - 'set /root/node/serverlocation/#text 'London'
  - 'set /root/node/ntp/#text '123.123.123.123'

dev1.internet.com.yaml
augeas_xml:
  - 'set /root/node/serverlocation/#text 'New York'
  - 'set /root/node/ntp/#text '123.123.123.125'

dev2.intranet.com.yaml
augeas_xml:
  - 'set /root/node/serverlocation/#text 'Accrington'

次のように dev1.internet.com.yaml の構成を取得する方法が必要です

augeas_xml:
  - 'set /root/node/servername/#text 'dev'
  - 'set /root/node/serverlocation/#text 'New York'
  - 'set /root/node/ntp/#text '123.123.123.125'

hiera_array で目的の結果が得られず、hiera_hash で次のエラーが表示されます: Hiera type mismatch for key 'augeas_xml': expected Hash and got Array

ホスト固有の設定は、環境固有の設定よりも優先されません。私が示した例は、サーバーの小さなセット用です。パペットを使用して何百ものサーバーを管理しています。hiera を使用して、ホストごとに yaml ファイルを作成できます。ただし、default.yaml が必要であり、host.yaml の変更をオーバーライドできるようにしたい

---
:hierarchy:
  - "host/%{::fqdn}"
  - "server_type/%{server_type}"
  - default
:backends:
  - yaml
:yaml:
  :datadir: "/puppet/hieradata/%{::environment}"
:merge_behavior: deeper

後者は生産している

    dev1.internet.com.yaml
    augeas_xml:
      - 'set /root/node/serverlocation/#text 'New York'
      - 'set /root/node/ntp/#text '123.123.123.125'
      - 'set /root/node/servername/#text 'dev'
      - 'set /root/node/serverlocation/#text 'London'
      - 'set /root/node/ntp/#text '123.123.123.123'

しかし、私はそれをしたい

    dev1.internet.com.yaml
    augeas_xml:
      - 'set /root/node/servername/#text 'dev'
      - 'set /root/node/serverlocation/#text 'London'
      - 'set /root/node/ntp/#text '123.123.123.123'
      - 'set /root/node/serverlocation/#text 'New York'
      - 'set /root/node/ntp/#text '123.123.123.125'
4

1 に答える 1