Forum Programmation.autre Installation d’un RPM sur AIX à l’aide de Puppet

Posté par . Licence CC By‐SA.
Étiquettes :
1
17
jan.
2018

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 . Évalué à 2.

    Bonjour,

    Tu devrais essayer de mettre present au lieu de installed pour ton paquet :

    package { $nrpe_rpm:
    ensure => present,
    provider => 'rpm',
    source => "/tmp/${nrpe_rpm}",
    require => [File["/tmp/${nrpe_rpm}"],Exec['NRPE_not_installed']]
    }

    Comme ça il va vérifier seulement si le paquet est installé sinon il l'installe

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.