skip to Main Content

I’m trying to install minimal ansible 2.9.x on Ubuntu Bionic (18.04 LTS).

The final goal is to build new disk image (using packer) on every commit and want the process to be as fast as possible.

Using default Ubuntu ansible

Default ansible in bionic is 2.5.x.

This is too old, all ansible scripts are written for 2.9+.

Using official PPA

Using recommended way to install suggests adding following line to /etc/apt/sources.list:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main

and running following commands:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt update
$ sudo apt install ansible

but it still requires python2 packages:

$ sudo apt install ansible
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-asn1crypto
  python-cffi-backend python-crypto python-cryptography python-enum34 python-httplib2
  python-idna python-ipaddress python-jinja2 python-markupsafe python-minimal
  python-paramiko python-pkg-resources python-pyasn1 python-setuptools python-six
  python-yaml python2.7 python2.7-minimal sshpass
Suggested packages:
  python-doc python-tk python-crypto-doc python-cryptography-doc
  python-cryptography-vectors python-enum34-doc python-jinja2-doc python-gssapi
  python-setuptools-doc python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  ansible libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python
  python-asn1crypto python-cffi-backend python-crypto python-cryptography python-enum34
  python-httplib2 python-idna python-ipaddress python-jinja2 python-markupsafe
  python-minimal python-paramiko python-pkg-resources python-pyasn1 python-setuptools
  python-six python-yaml python2.7 python2.7-minimal sshpass
0 upgraded, 25 newly installed, 0 to remove and 33 not upgraded.
Need to get 11.3 MB of archives.
After this operation, 83.3 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Using pip

This is my current approach but installing pip3 and then installing ansible via pip is another extra step:

$ sudo apt install python3-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils binutils-common binutils-x86-64-linux-gnu build-essential cpp cpp-7 dh-python dpkg-dev fakeroot g++ g++-7 gcc gcc-7 gcc-7-base libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan4 libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot
  libfile-fcntllock-perl libgcc-7-dev libgomp1 libisl19 libitm1 liblsan0 libmpc3 libmpx2 libpython3-dev libpython3.6-dev libquadmath0 libstdc++-7-dev libtsan0 libubsan0
  linux-libc-dev make manpages-dev python-pip-whl python3-crypto python3-dev python3-distutils python3-keyring python3-keyrings.alt python3-lib2to3
  python3-secretstorage python3-setuptools python3-wheel python3-xdg python3.6-dev
Suggested packages:
  binutils-doc cpp-doc gcc-7-locales debian-keyring g++-multilib g++-7-multilib gcc-7-doc libstdc++6-7-dbg gcc-multilib autoconf automake libtool flex bison gdb gcc-doc
  gcc-7-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan4-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx2-dbg libquadmath0-dbg
  glibc-doc bzr libstdc++-7-doc make-doc python-crypto-doc gnome-keyring libkf5wallet-bin gir1.2-gnomekeyring-1.0 python-secretstorage-doc python-setuptools-doc
The following NEW packages will be installed:
  binutils binutils-common binutils-x86-64-linux-gnu build-essential cpp cpp-7 dh-python dpkg-dev fakeroot g++ g++-7 gcc gcc-7 gcc-7-base libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan4 libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot
  libfile-fcntllock-perl libgcc-7-dev libgomp1 libisl19 libitm1 liblsan0 libmpc3 libmpx2 libpython3-dev libpython3.6-dev libquadmath0 libstdc++-7-dev libtsan0 libubsan0
  linux-libc-dev make manpages-dev python-pip-whl python3-crypto python3-dev python3-distutils python3-keyring python3-keyrings.alt python3-lib2to3 python3-pip
  python3-secretstorage python3-setuptools python3-wheel python3-xdg python3.6-dev
0 upgraded, 57 newly installed, 0 to remove and 33 not upgraded.
Need to get 85.3 MB of archives.
After this operation, 248 MB of additional disk space will be used.
Do you want to continue? [Y/n]

…which adds unnecessary time to the packer process 🙁

Any hints?

Ubuntu 18.04 comes with python3 already installed and ansible can be easily configured to use python3.
Does anyone know a way how to install ansible 2.9 without the need to install python2 or pip3?

5

Answers


  1. I’ve had the same problem. In my case was mandatory to be in 2.9.+ because of AWX requirements … If you are in Ubuntu 18.04 you can follow these steps:

    $ sudo apt install software-properties-common
    $ sudo apt-add-repository ppa:ansible/ansible
    $ sudo apt update
    
    $ sudo apt install ansible
    

    That’s it.

    $ ansible --version
      |___ ansible 2.9.7
    

    Note: I recommend you to ask this kind of questions in Unix & Linux

    Login or Signup to reply.
  2. I hit the same issue. When I used

    sudo apt install ansible

    ansible was installed with Python 2.7.x

    I uninstalled everything and installed ansible using pip. Now, when I do ansible –version I get

    ansible 2.9.11
    config file = /etc/ansible/ansible.cfg
    configured module search path = [‘/root/.ansible/plugins/modules’, ‘/usr/share/ansible/plugins/modules’]
    ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
    executable location = /usr/local/bin/ansible
    python version = 3.6.9 (default, Apr 18 2020, 01:56:04) [GCC 8.4.0]

    Login or Signup to reply.
  3. As mentioned on the issue, it is currently recommended for Ubuntu users to use the Debian repository. You can download it directly here, and install the downloaded deb package using

    sudo apt-get install ./ansible_x.y.z_all.deb
    

    This will install ansible without installing python2.
    I have successfully tested this on Ubuntu 19.10.

    Login or Signup to reply.
  4. I have recompiled the focal version of ansible (which uses python3) against bionic and published that in my PPA. There were only minimal changes necessary. You can use only the package in question instead of enabling the entire PPA. You will end up with ansible 2.9.6.

    Login or Signup to reply.
  5. To install Ansible version 2.9 on Ubuntu 18 04:

    Check if you have already a repostory configured:

    deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main
    

    This repository above does not install the 2.9 anymore, instead, use:

    deb http://ppa.launchpad.net/ansible/ansible-2.9/ubuntu focal main
    

    If you do not have any repository of http://ppa.launchpad.net/ansible

    Add a new file to: /etc/apt/sources.list.d/ansible.list

    deb http://ppa.launchpad.net/ansible/ansible-2.9/ubuntu focal main
    

    Run (Check if the order of the repositories are good)

    sudo apt update
    

    Install ansible:

    sudo apt install ansible
    

    Check version:

    ansible --version
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search