Puppet 3.8-Rezept zum Installieren von Paketen über Python pip

Puppet 3.8-Rezept zum Installieren von Paketen über Python pip

Da ich für den Pip3-Anbieter weder Puppet 4.2 noch höher habe, stellt sich die Frage, was ein alternativer Ansatz zur manuellen Installation von Python-Paketen über den Befehl „pip3“ ist.

Wenn ich den „exec“-Ansatz verwende, wie verhindere ich, dass das Paket ständig neu installiert wird? (Wie teile ich also „puppet apply“ mit, dass das Paket bereits installiert ist?)

Antwort1

nachdem ich mich selbst mit diesem Problem befasst habe ...

Sie können überprüfen, ob das Paket, das Sie installieren möchten, vorhanden ist

  exec { 'install python packages':
     command   => 'pip3 install flask flask_restful apiai',
     path => ['/usr/bin/'],
     unless  => '/usr/bin/test -f /usr/local/lib/python3.4/dist-packages/flask/app.py'
  }

Wenn das bei Ihnen nicht funktioniert (vielleicht möchten Sie viele Pakete installieren), können Sie einen benutzerdefinierten Faktor verwenden und die Installation nur durchführen, wenn dieser Faktor nicht vorhanden ist. Sie müssen so etwas tun -

if ($need_to_install == undef ) {

  exec { 'install python packages':
    command   => 'pip3 install flask flask_restful apiai; touch /root/installed.txt',
    path      => ['/usr/bin/'],
    before    => Exec['create custom facter'],
  }

  exec { 'create custom facter':
    command  => "mkdir -p /etc/facter/facts.d; echo 'need_to_install=false' > /etc/facter/facts.d/check_pip_install.txt",
    provider => shell,
  }

 }

Übrigens können Sie dieses Skript auch verwenden, um das Pip3-Paket auf die normale Puppet-Art zu installieren. https://github.com/openstack-infra/puppet-pip/blob/master/lib/puppet/provider/package/pip3.rb

verwandte Informationen