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

1184
tgharold

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

Если я использую подход 'exec', как я могу контролировать повторную установку пакета? (т.е. как я могу сказать 'puppet apply', что пакет уже установлен)

0

1 ответ на вопрос

2
Gilad Sharaby

после решения этой проблемы сам ...

Вы можете проверить, есть ли пакет, который вы хотите установить

 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