如何使用Ansible在服务器上安装Python版本

时间:2016-03-07 19:47:32

标签: python ubuntu-14.04 ansible

我使用ansible连接服务器。但由于python的旧版本,我得到某些pip包的错误。如何使用ansible安装特定版本的python(2.7.10)。 服务器上的当前python版本是2.7.6

目前我手动编译并安装了python版本,但更愿意通过ansible来实现。

2 个答案:

答案 0 :(得分:2)

首先要考虑的是,您可能想要替换或升级Python的系统版本。这是因为它被系统本身用于包管理之类的东西,因此替换它可能会导致其他重要的事情破裂。

安装其他人制作的额外Python副本

要安装额外版本的Python,最简单的选择是使用ppa,例如https://launchpad.net/~fkrull/+archive/ubuntu/deadsnakes-python2.7,以便其他人完成将Python转换为包的工作。< / p>

可以使用下面的指令在Ansible的apt repository module中添加PPA,然后允许您以正常的安全方式从中安装包:

apt_repository: repo='ppa:fkrull/deadsnakes-python2.7'

自行构建软件包

如果没有ppa具有您需要的Python版本,那么您可能需要自己构建一个.deb包。最简单的方法是使用像checkinstall这样的工具。还有fpm,它可以使用许多不同的来源,并使用debrpm等等。它也可以使用只有pip install的Python模块,并将它变成一个系统包,这非常有用。

获得deb个套餐后,您可以使用Ansible的apt module

进行安装
apt: deb=/tmp/mypackage.deb

答案 1 :(得分:2)

除了@Simon Fraser的回答之外,我在Ansible中使用以下手册来准备具有某些特定Python 3版本的服务器:

# python_version is a given variable, eg. `3.5`
- name: Check if python is already latest
  command: python3 --version
  register: python_version_result
  failed_when: "{{ python_version_result.stdout | replace('Python ', '') | version_compare(python_version, '>=') }}"

- name: Install prerequisites
  apt: name=python-software-properties state=present
  become: true

- name: Add deadsnakes repo
  apt_repository: repo="ppa:deadsnakes/ppa"
  become: true

- name: Install python
  apt: name="python{{ python_version }}-dev" state=present
  become: true

我也有上述角色,如果您有兴趣,可以称为ansible-python-latestgithub link)。