web-dev-qa-db-ja.com

Puppet:役割が一致した場合、階層はどのように機能しますか?

Puppet階層がどのように機能するかを理解しようとしています。

私のPuppetサーバーのhiera.yamlは次のようになります。

[root@puppet puppet]# cat hiera.yaml 
:backends: 
  - yaml 
:yaml: 
  :datadir: '/etc/puppet/hieradata/%{::environment}' 
:hierarchy: 
  - fqdns/%{::fqdn} 
  - roles/%{::role} 
  - domains/%{::domain} 
  - common

すべてのサーバーに持たせたいモジュールがあるので、それらをcommon.yamlファイルに入れ、各role.yamlファイルに含まれている役割固有のモジュールがあります。

Puppetの役割に一致するサーバーが起動すると、role.yamlファイルのモジュールが最初にロードされます。私の質問は、サーバーが役割と一致すると...そこで停止しますか?それとも、階層内で継続し、common.yamlの下のモジュールもロードしますか?

そうでない場合、これがどのように動作するかを確認するにはどうすればよいですか?

編集#1:role.yamlファイルの1つの例を次に示します。

[root@puppet roles]# cat dataorigin.yaml 
classes:
  - workspace

jdk_enable: true
jdk_ver: 1.6.0_41
component_ver: 1-1-5-17
Tomcat_enable: true
debug_mode: true

fstab_params:
  mount1:
    mnt_src:  "isilonnj01.eyedcny.local:/ifs/Peer39/do_share"
    mnt_dest: "/doshare"
    mnt_opts: "tcp,hard,intr,noatime"
    mnt_dest_parent: ""

そして、サーバーのsite.ppは次のようになります。

hiera_include("classes", [])
Package {  allow_virtual => false, }
node default {
include stdlib
}

編集#2:これはmotdモジュールの例です:

include stdlib
class motd {
    file { "/etc/custom_motd.sh":
    path    => '/etc/custom_motd.sh',
    ensure  => present,
    owner   => "root",
    group   => "root",
    mode    => "775",
    content => template('motd/custom_motd.sh.erb'),
    #require => Class['nagios_client'],
    }

    file_line { 'enable motd':
    ensure  => present,
    line    => '/etc/custom_motd.sh',
    path    => '/etc/profile',
    require  => File['/etc/custom_motd.sh']
    }
}

motd modulecommon.yamlファイルで構成され、role.yamlファイルにはworkspaceというモジュールがあります。 motd moduleファイルからcommon.yamlをロードするようにPuppetに指示するにはどうすればよいですか?

2
Itai Ganot

Hieraは、データを検索するためのツールです。キー名を付けると、データファイルを調べて、最初に一致したもの(最も具体的なものである必要があります)を返し、階層を下に移動します。

puppet内で使用 、キーに複数の値がある場合にどうするかについて、より多くのオプションがあります。

hiera
    Standard priority lookup. Gets the most specific value for a given key. 
    This can retrieve values of any data type (strings, arrays, hashes) 
    from Hiera.
hiera_array
    Uses an array merge lookup. Gets all of the string or array values 
    in the hierarchy for a given key, then flattens them into a single 
    array of unique values.
hiera_hash
    Uses a hash merge lookup. Expects every value in the hierarchy for
    a given key to be a hash, and merges the top-level keys in each 
    hash into a single hash. Note that this does not do a deep-merge 
    in the case of nested structures.

モジュールをロードするためのENCとしてhieraを使用すると、次のように機能します this (強調が追加されました):

hiera_include関数は、配列マージルックアップを使用してクラス配列を取得することに注意してください。これは、すべてのノードがその階層からeveryクラスを取得することを意味します。

したがって、ドキュメントに従ってhiera_includeを使用した場合、ノードの階層全体で指定したすべてのクラスがロードされます。

あなたの例では、role=dataoriginを想定し、common.yamlは次のようになります。

---
classes:
 - a

Site.ppを使用すると、モジュールworkspacestdlib、およびaがクエリノードに割り当てられます。

2
fuero