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