Puppet 3.8 Rezept für die Installation von Paketen über Python Pip

1277
tgharold

Was ist ein alternativer Ansatz für die manuelle Installation von Python-Paketen über den Befehl 'pip3', da ich nicht über Puppet 4.2 oder höher für den pip3-Provider verfügt?

Wenn ich den "exec" -Ansatz verwende, wie kann ich kontrollieren, dass das Paket ständig neu installiert wird? (dh wie sage ich "puppet apply", dass das Paket bereits installiert ist)

0

1 Antwort auf die Frage

2
Gilad Sharaby

nachdem ich mich mit diesem Thema befasst habe ...

Sie können überprüfen, ob das zu installierende Paket 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 dies nicht funktioniert (möglicherweise möchten Sie viele Pakete installieren), können Sie einen benutzerdefinierten Facter verwenden und die Installation nur dann durchführen, wenn diese Tatsache 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, Sie können dieses Skript auch verwenden, um das pip3-Paket in der üblichen Art und Weise zu installieren: https://github.com/openstack-infra/puppet-pip/blob/master/lib/puppet/provider/package/pip3.rb