Python pip를 통해 패키지를 설치하기 위한 Puppet 3.8 레시피

Python pip를 통해 패키지를 설치하기 위한 Puppet 3.8 레시피

pip3 공급자를 위한 Puppet 4.2 이상이 없기 때문에 'pip3' 명령을 통해 Python 패키지를 직접 설치하는 대체 접근 방식은 무엇입니까?

'exec' 접근 방식을 사용하는 경우 패키지가 항상 다시 설치되지 않도록 어떻게 제어합니까? (즉, 패키지가 이미 설치되어 있다는 것을 'puppet Apply'에 어떻게 알릴 수 있습니까?)

답변1

이 문제를 직접 처리한 후...

설치하려는 패키지가 있는지 확인할 수 있습니다

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

그래도 문제가 해결되지 않으면(많은 패키지를 설치하고 싶을 수도 있음) 사용자 정의 요소를 사용하고 해당 요소가 존재하지 않는 경우에만 설치를 수행할 수 있습니다. 당신은 이런 일을해야합니다 -

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

 }

그런데, 이 스크립트를 사용하여 일반 꼭두각시 방식으로 pip3 패키지를 설치할 수도 있습니다. https://github.com/openstack-infra/puppet-pip/blob/master/lib/puppet/provider/package/pip3.rb

관련 정보