![透過 Python pip 安裝套件的 Puppet 3.8 配方](https://rvso.com/image/1465793/%E9%80%8F%E9%81%8E%20Python%20pip%20%E5%AE%89%E8%A3%9D%E5%A5%97%E4%BB%B6%E7%9A%84%20Puppet%203.8%20%E9%85%8D%E6%96%B9.png)
由於我沒有用於 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,
}
}
順便說一句,您還可以使用此腳本以常規 puppet 方式安裝 pip3 套件 - https://github.com/openstack-infra/puppet-pip/blob/master/lib/puppet/provider/package/pip3.rb