Назад | Перейти на главную страницу

Доступ к массивам / хешам в фактах Facter 2

В Фактере 2 теперь вы можете использовать массивы / хэши как факты.

Например:

os => {
  "name"=>"CentOS",
  "family"=>"RedHat",
  "release"=>{
    "major"=>"7",
    "minor"=>"0",
    "full"=>"7.0.1406"
  }
}

Какой формат для доступа os=>release=>major из манифеста?

Например так:

notify { $::os[release][major] : }

Обратите внимание, что вам нужно установить опцию stringify_facts значение false, чтобы это работало (по умолчанию на момент написания с Puppet 3.7.1: true).

Должен быть возможен доступ к нему как к обычному хэш-типу данных: https://docs.puppetlabs.com/puppet/latest/reference/lang_datatypes.html#indexing-1

$myhash = {os => {
  "name"=>"CentOS",
  "family"=>"RedHat",
  "release"=>{
    "major"=>"7",
    "minor"=>"0",
    "full"=>"7.0.1406"
  }
 }
}

notice( $myhash[os][release][major] )

Вы можете получить доступ к фактам из манифестов, используя хеши, например:

notify { $::os['release']['major']: }

Пример:

# puppet apply -e 'notify { $::os['release']['major']: }'
Notice: Compiled catalog for mon.adriatic.local in environment production in 0.04 seconds
Notice: 6
Notice: /Stage[main]/Main/Notify[6]/message: defined 'message' as '6'
Notice: Applied catalog in 0.28 seconds