Bonjour,
Complètement ignorant quant à l’utilisation de cet outil, je suis en train d’écrire mon premier module afin d’apprendre à m’en servir.
Sans surprise je butte sur un truc à priori simple, donc je le soumets à votre sagacité légendaire, histoire que vous bossiez à ma place puissiez montrer toute l’étendue de vos connaissances !
Voici l’extrait de mon fichier Puppet :
On récupère le fichier RPM qui va bien et on le copie dans /tmp :
case $::kernelversion {
'6100','7100' : { $package_nrpe='xxx-nrpe-2.15.0-9'
$aix_version='aix6.1' }
'5300' : { $package_nrpe='xxx-nrpe-2.15.0-2'
$aix_version='aix5.3' }
default : { fail('Module NRPE: version AIX non supportée.')}
}
$nrpe_rpm="${package_nrpe}.${aix_version}.noarch.rpm"
file { "/tmp/${nrpe_rpm}":
ensure => present,
source => "puppet:///modules/nrpe/aix/${nrpe_rpm}"
}
Ensuite, si j’ai bien compris, je ne peux pas utiliser le paramètre onlyif
(ou encore unless
) directement sur une ressource de type Package
, je crée donc une ressource de type Exec
:
exec { 'NRPE_not_installed':
command => '/usr/bin/true',
unless => "/usr/bin/rpm -q ${package_nrpe}"
}
que je peux (enfin c’est ce que je croyais…) utiliser comme deuxième pré-requis (ie: paramètre require
) pour ma ressource Package (le premier pré-requis étant la présence du fichier RPM dans /tmp):
package { $nrpe_rpm:
ensure => installed,
provider => 'rpm',
source => "/tmp/${nrpe_rpm}",
require => [File["/tmp/${nrpe_rpm}"],Exec['NRPE_not_installed']]
}
Malheureusement, quand je lance un run Puppet depuis l’agent avec la commande puppet agent -t
, Puppet n’est pas content :
Error: Execution of '/usr/bin/rpm -i /tmp/xxx-nrpe-2.15.0-9.aix6.1.noarch.rpm' returned 1: package xxx-nrpe-2.15.0-9 is already installed
Error: /Stage[main]/Nrpe::Aix/Package[xxx-nrpe-2.15.0-9.aix6.1.noarch.rpm]/ensure: change from absent to present failed: Execution of '/usr/bin/rpm -i /tmp/xxx-nrpe-2.15.0-9.aix6.1.noarch.rpm' returned 1: package xxx-nrpe-2.15.0-9 is already installed
Je ne comprends pas pourquoi ça ne fonctionne pas. Est-ce que je dois, au lieu d’utiliser une ressource de type Package, utiliser une ressource de type Exec qui fait un rpm -i …
?
# ensure present
Posté par Mr Kapouik (site web personnel) . Évalué à 2.
Bonjour,
Tu devrais essayer de mettre present au lieu de installed pour ton paquet :
Comme ça il va vérifier seulement si le paquet est installé sinon il l'installe
[^] # Re: ensure present
Posté par Marotte ⛧ . Évalué à 4.
J’ai le même comportement en remplaçant installed par present…
D’après https://ask.puppet.com/question/4947/is-it-better-to-use-present-or-installed/ il n’y a pas de différence entre les deux.
Finalement je m’en suis sorti en faisant simplement :
et ça fonctionne.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.