Puppet 3.8 通过 Python pip 安装包的方法

Puppet 3.8 通过 Python pip 安装包的方法

由于我没有用于 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

相关内容