How to use Ansible Modules without Python installed
How to use Ansible Modules without Python and a package manager.
Okay, the title might not be 100% correct. A bit of clickbait 😉
I had to deal with a distro for containers that did not have Python installed and also did not have a package manager. In my case, it was Flatcar Linux (once CoreOS).
In the beginning Ansible raw commands did work but at some point, it got too complex and unreliable.
I have written about how to reboot a machine with Ansible raw command here: https://www.ajfriesen.com/reboot-with-ansible-raw/
I asked myself: How I could use modules without having a package manager?
I found PyPy. You can just download and extract that archive on your host and you have a fully working Python environment.
Here is a small Ansible playbook on how to install PyPy via Ansible raw commands:
---
- name: Add pypy to flatcar
gather_facts: false
hosts: all
vars:
pypy_version: pypy3.9-v7.3.9-linux64
tasks:
- name: Download pypy archive
raw: wget -q -P /opt/ https://downloads.python.org/pypy/{{ pypy_version }}.tar.bz2
- name: Extract pypy archive
raw: tar -xf /opt/{{ pypy_version }}.tar.bz2 -C /opt
- name: Remove archive
raw: rm -rf /opt/{{ pypy_version }}.tar.bz2
- name: Create /opt/bin for older
raw: mkdir -p /opt/bin
- name: Create symlink for python
raw: ln -s /opt/{{ pypy_version }}/bin/python /opt/bin/python
And here you can finally use Ansible module actions. Just remember to specify the Python path for Ansible:
---
- name: Reboot flatcar
hosts: all
remote_user: root
gather_facts: yes
vars:
ansible_python_interpreter: /opt/bin/python
tasks:
- name: Going for a reboot ᕕ( ᐛ )ᕗ
reboot:
reboot_timeout: 600
Last Words
How am I doing?
I love hearing from readers, and I am always looking for feedback.
Click on the 👍 or 👎 down below, it is that easy.
What do you enjoy most about the newsletter, just let me know in the comments.
Have a great day! 👋