Ank*_*kit 6 python ansible ubuntu-14.04
我正在使用 ansible 来连接服务器。但由于旧版本的 python,某些 pip 包出现错误。如何2.7.10使用 ansible 安装特定版本的 python ( )。服务器上当前的 python 版本是2.7.6
现在我已经手动编译并安装了 python 版本,但更希望有一种方法可以通过 ansible 来完成它。
除了 @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
Run Code Online (Sandbox Code Playgroud)
如果您有兴趣,我也有一个名为ansible-python-latest(github 链接)的角色。
首先要考虑的是,您可能不想更换或升级Python的系统版本。这是因为它被系统本身用于包管理之类的事情,因此替换它可能会导致其他重要的事情被破坏。
安装别人制作的额外 Python 副本
要安装额外版本的 Python,最简单的选择是使用 ppa ,例如https://launchpad.net/~fkrull/+archive/ubuntu/deadsnakes-python2.7,以便其他人完成以下工作将 Python 变成一个适合你的包。
可以使用如下指令将PPA 添加到 Ansible 的apt 存储库模块中,然后您可以使用正常的 ansible 方式从中安装软件包:
apt_repository: repo='ppa:fkrull/deadsnakes-python2.7'
Run Code Online (Sandbox Code Playgroud)
自己构建一个包
如果没有ppa您需要的 Python 版本,那么您可能需要.deb自己构建一个包。最简单的方法是使用像checkinstall这样的工具。还有fpm,它可以获取许多不同的源并使用它们进行 makedeb等rpm。它还可以将一个Python模块只提供pip install给你,并将其变成一个系统包,这非常有用。
一旦你有了一个deb包,你就可以使用 Ansible 的apt 模块来安装它
apt: deb=/tmp/mypackage.deb
Run Code Online (Sandbox Code Playgroud)