Eu tenho o seguinte nas minhas definições hiera:
# common.json
{
"classes": [
"sysbase",
],
"sysbase::packages": [
"less", "build-essential", "bash"
]
}
# dev.local.json
{
"sysbase::packages": [
"xmltv"
]
}
E a seguinte classe:
# modules/sysbase/manifests/init.pp
class sysbase($packages){
package{ $packages :
ensure => latest,
}
exec{'select-pager':
command => '/usr/sbin/update-alternatives --set pager /bin/less',
user => 'root',
refreshonly => true,
subscribe => Package['less'],
}
}
Quando eu executo o agente neste nó:
$ facter hostname fqdn domain
domain => dev.local
fqdn => francois.dev.local
hostname => francois
Eu recebo este erro:
Error: Could not retrieve catalog from remote server:
Error 400 on SERVER:
Invalid relationship:
Exec[select-pager] { subscribe => Package[less] },
because Package[less] doesn't seem to be in the catalog
(reformatado para legibilidade)
Para mim, é óbvio que menos pacote está incluído. Quando pergunto a Hiera, até me diz:
# hiera --array sysbase::packages ::hostname=francois ::domain=dev.local ::fqdn=francois.dev.local
[...
"less",
"build-essential",
"bash"]
Os pacotes Puppet instalados no mestre são:
# dpkg -l | grep -i puppet
ii facter 2.3.0-1puppetlabs1 Ruby module for collecting simple facts about a host operating system
ii hiera 1.3.4-1puppetlabs1 A simple pluggable Hierarchical Database.
ii puppet 3.7.3-1puppetlabs1 Centralized configuration management - agent startup and compatibility scripts
ii puppet-common 3.7.3-1puppetlabs1 Centralized configuration management
ii puppetdb 2.2.2-1puppetlabs1 PuppetDB Centralized Storage.
ii puppetdb-terminus 2.2.2-1puppetlabs1 Connect Puppet to PuppetDB by setting up a terminus for PuppetDB.
ii puppetlabs-release 1.0-11 "Package to install Puppet Labs gpg key and apt repo"
ii puppetmaster-common 3.7.3-1puppetlabs1 Puppet master common scripts
ii puppetmaster-passenger 3.7.3-1puppetlabs1 Centralised configuration management - master setup to run under mod passenger
ii ruby-rgen 0.6.5-1puppetlabs1 A framework supporting Model Driven Software Development (MDSD)
# puppet --version
3.7.3
O pior é que nem todos os meus agentes fantoches relatam o mesmo erro!
Por que o pacote menos não é reconhecido? É porque está em uma matriz?