This ansible role will build python from source.
- EL / Centos (6 / 7)
- Debian (Wheezy / Jessie)
- Ubuntu (Trusty)
- AMZ Linux
The following role variables are defined in defaults/main.yml, and are the
ones required for you to be specified. The ones commented, are not defined.
For a detailed explanation about them you can take a look at the file.
#python_version: 2.7.11
#python_bin: /usr/local/bin/python2.7
#python_setuptools_bin: /usr/local/bin/easy_install-2.7
python_dev_packages: []
python_config_opts_default: '--with-ensurepip=install --enable-unicode=ucs4'
python_config_opts: ''
python_build_opts_default: '-j2 profile-opt'
python_build_opts: ''
python_force_build: False
setuptools_force_build: False
The variables that need to be specified, are:
python_version: Just that, 2.7.11, 3.5.1, or whatever version you needpython_bin: The path to the python binary that will be build, generally/usr/local/bin/python<mayor.minor>python_setuptools_bin: The path to easy_install script to be build, generally/usr/local/bin/easy-install-<mayor.minor>
To build the python interpreter you just need the following:
---
- hosts: some_host
roles:
- {
role: torian.python
python_version: 2.7.11
python_bin: /usr/local/bin/python2.7
python_setuptools_bin: /usr/local/bin/easy-install-2.7
}
The module can handle without issues building multiple python versions:
---
- hosts: some_host
roles:
- {
role: torian.python
python_version: 2.7.11
python_bin: /usr/local/bin/python2.7
python_setuptools_bin: /usr/local/bin/easy-install-2.7
}
- {
role: torian.python
python_version: 3.5.1
python_bin: /usr/local/bin/python3.5
python_setuptools_bin: /usr/local/bin/easy-install-3.5
}
If yo need special configure or build parameters, and/or additional dev libs, the following variables are available:
python_dev_packages: []python_config_opts: ''python_build_opts: ''
There are defaults for configure and build, that will be used in addition to the above mentioned variables:
python_config_opts_default: '--with-ensurepip=install --enable-unicode=ucs4'python_build_opts_default: '-j2 profile-opt'
Since the source code is downloaded from official python site, which forces
requests to HTTPS, if the distro's python version is lower than 2.7.9, support
for SNI might be missing, and you might see an error like:
msg: Failed to validate the SSL certificate for www.python.org:443. Make sure
your managed systems have a valid CA certificate installed. If the website
serving the url uses SNI you need python >= 2.7.9 on your managed machine.
You can use validate_certs=False if you do not need to confirm the server\s
identity but this is unsafe and not recommended Paths checked for this
platform: /etc/ssl/certs, /etc/pki/ca-trust/extracted/pem, /etc/pki/tls/certs,
/usr/share/ca-certificates/cacert.org, /etc/ansible
In that case, you need to set the following role var:
python_download_validate_certs: no
See License
This role was created in 2016 by Emiliano Castagnari.