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  (site web personnel) . É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.