Receta de Puppet 3.8 para instalar el paquete a través de Python pip

Receta de Puppet 3.8 para instalar el paquete a través de Python pip

Dado que no tengo Puppet 4.2 o posterior para el proveedor pip3, ¿cuál es un enfoque alternativo para instalar paquetes de Python manualmente mediante el comando 'pip3'?

Si uso el enfoque 'exec', ¿cómo puedo controlar que el paquete no se reinstale todo el tiempo? (es decir, ¿cómo le digo a 'puppet apply' que el paquete ya está instalado)?

Respuesta1

después de lidiar con este problema yo mismo...

puedes comprobar si el paquete que deseas instalar está ahí

  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'
  }

Si eso no funciona para usted (tal vez desee instalar muchos paquetes), puede usar un factor personalizado y realizar la instalación solo si ese hecho no existe. necesitas hacer algo como esto -

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,
  }

 }

Por cierto, también puede utilizar este script para instalar el paquete pip3 de la forma habitual con títeres. https://github.com/openstack-infra/puppet-pip/blob/master/lib/puppet/provider/package/pip3.rb

información relacionada