Установка и включение python 3 с шеф-поваром - PullRequest
1 голос
/ 29 января 2020

Я пытаюсь установить python с шеф-поваром, это Runbook

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

4-й шаг требует python 3. Когда я делаю это вручную, он работает как положено, как всегда, когда я сделайте это через шеф-повара, он все еще думает, что это 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

Ответы [ 2 ]

2 голосов
/ 29 января 2020

Я предполагаю, что вы используете chef как root пользователь, так что вы должны быть в состоянии избавиться от всех sudo s и нескольких операторов execute и просто выполнить все в одном execute или bash ресурсе или даже лучше: используйте ресурс package для заданий yum.

Насколько я понимаю, scl enable либо манипулирует средой оболочки и / или изменяет направления символических ссылок. В вашем примере вы, кажется, нацелены на среду bash, поэтому вы, вероятно, хотите использовать ресурс bash chef. В зависимости от того, как работает scl, вам может потребоваться предоставить атрибут "flag" для поездки.

1 голос
/ 29 января 2020

Возможно, вы захотите взглянуть на poise- python поваренную книгу сообщества. Поваренная книга позволяет вам указать, какую python и версию pip вы хотите использовать, и позволяет устанавливать python пакеты через pip, используя пользовательские ресурсы поваренной книги. Вот пример блока кода для установки python 3:

python_runtime '3' do
  version 3
  action :install
end

И затем вы можете установить свой пакет через:

python_package 'datadog-checks-dev[cli]'
...