使用 Chef 安装并启用 python 3

Installing and enabling python 3 with Chef

我正在尝试使用 Chef 安装 python 这是操作手册

sudo yum -y install centos-release-scl
sudo yum -y install rh-python36
sudo scl enable rh-python36

第 4 步需要 python 3。当我手动执行此操作时,它按预期工作,但是当我通过 chef 执行时,它仍然认为它是 python 2.7,因此它在第 4 次失败步。我该如何解决这个问题?

execute "install centos-release-scl" do
    command "sudo yum -y install centos-release-scl"
    action :run
  end

  execute "install rh-python36" do
    command "sudo yum -y install rh-python36"
    action :run
  end

  execute "enable rh-python3" do
    command "sudo scl enable rh-python36 bash"
    action :run
  end

  execute "pip install dd-check-dev" do
    command "pip install 'datadog-checks-dev[cli]'"
    action :run
  end

您可能想看看 poise-python 社区食谱。该说明书允许您指定要使用的 python 和 pip 版本,并允许您使用说明书的自定义资源通过 pip 安装 python 包。这是安装 python 3 :

的示例代码块
python_runtime '3' do
  version 3
  action :install
end

然后您可以通过以下方式安装您的软件包:

python_package 'datadog-checks-dev[cli]'

我假设你是 运行 厨师作为 root 用户,所以你应该能够摆脱所有的 sudos 和 multipe execute 语句,并一次执行所有内容executebash 资源甚至更好:为 yum 作业使用 package 资源。

据我了解 scl enable 要么操纵 shell 环境 and/or 改变符号链接方向。在您的示例中,您似乎以 bash 环境为目标,因此您可能想要使用 bash 厨师资源。根据 scl 的工作方式,您可能必须提供 ride "flag" 属性。