J'ai les éléments suivants dans les définitions de ma hiérarchie :
# common.json
{
"classes": [
"sysbase",
],
"sysbase::packages": [
"less", "build-essential", "bash"
]
}
# dev.local.json
{
"sysbase::packages": [
"xmltv"
]
}
Et la classe suivante :
# 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'],
}
}
Quand je lance l'agent sur ce noeud :
$ facter hostname fqdn domain
domain => dev.local
fqdn => francois.dev.local
hostname => francois
Je reçois cette erreur :
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
(reformaté pour plus de lisibilité)
Pour moi, il est évident que le moins de paquet est inclus. Quand je demande à Hiera, elle me le dit même :
# hiera --array sysbase::packages ::hostname=francois ::domain=dev.local ::fqdn=francois.dev.local
[...
"less",
"build-essential",
"bash"]
Les paquets Puppet installés sur le master sont :
# 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
Le pire, c'est que tous mes agents Puppet ne signalent pas la même erreur !
Pourquoi le paquet moins n'est-il pas reconnu ? Est-ce parce qu'il est dans un tableau ?