В Фактере 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