Рецепт Puppet 3.8 для установки пакета через Python pip

Рецепт Puppet 3.8 для установки пакета через Python pip

Поскольку у меня нет Puppet 4.2 или более поздней версии для поставщика pip3, какой альтернативный подход к установке пакетов Python вручную с помощью команды «pip3»?

Если я использую подход «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 обычным способом puppet- https://github.com/openstack-infra/puppet-pip/blob/master/lib/puppet/provider/package/pip3.rb

Связанный контент