Setting Up Ansible for Legacy Python Environments
Introduction
Last week, I learned a new fix for managing legacy Python environments with Ansible. This guide walks you through setting up an environment where you can use Ansible 2.10, which supports Python 2.7, using a tool called uv
.
Step-by-Step Setup
1. Install uv
uv
is a faster alternative to pip
, designed for creating Python virtual environments. To install uv
, you can use the following command:
curl -LsSf https://astral.sh/uv/install.sh | sh
This command fetches the installation script from the official uv
repository and executes it.
2. Create a Directory for Your Virtual Environment
mkdir .venv
This command creates a directory named .venv
where your virtual environments will be stored.
3. Create a Virtual Environment with Python 3.8
Even though we’re targeting an older Python for Ansible, we’ll use Python 3.8 in our local environment for compatibility with uv
:
uv venv --python 3.8 .venv/ansible-old
Here, --python 3.8
specifies that this virtual environment should use Python 3.8.
4. Activate the Virtual Environment
source .venv/ansible-old/bin/activate
This command activates your newly created Python environment. Your prompt should change to show you’re now operating within this environment.
5. Install Ansible 2.10
uv pip install ansible==2.10
This installs Ansible version 2.10 into your virtual environment and you will be able to execute your playbook on your legacy servers.
Conclusion
By leveraging tools like uv
for environment management, you can maintain compatibility with older systems while still using modern tools on your local setup. Remember, while this setup allows you to manage legacy systems, planning for upgrades to more secure and supported versions should be on your roadmap.