Cómo configurar y usar entornos virtuales de Python para Ansible

Es esencial probar nuevas tecnologías antes de implementarlas en su entorno de producción. Me gusta usar los entornos virtuales de Python proporcionados por el venv módulo para desarrollar y probar playbooks y características de Ansible. En lugar de usar los comandos predeterminados de Python y Ansible instalados en su sistema, puede configurar fácilmente varios entornos de Python y probar diferentes versiones de Ansible y sus bibliotecas de componentes.

Índice

¿Por qué usar entornos virtuales de Python para el desarrollo de Ansible?

Los entornos virtuales son como una máquina virtual o Linux chroot, pero crean una estructura aislada de directorios livianos separados de los directorios reales del sistema de Python. Esto significa que puede tener diferentes conjuntos de entornos de Python, cada uno con diferentes versiones de módulos, archivos o configuraciones.

Ansible se basa en Python y aprovecha muchos módulos y complementos de Python. Cuando prueba algo nuevo, es posible que deba actualizar un módulo del que depende su instalación de Ansible. Actualizar un componente del que depende su entorno de producción anula el propósito de la prueba. Sin embargo, puede tener diferentes versiones de Ansible y otros módulos importantes de Python en un directorio de prueba dedicado con un entorno virtual.

Sientese

Escribí este artículo para un ordenador Linux con Python 3.x. En este escenario, esta es su máquina de desarrollo Ansible. Primero, verifique la versión y la ruta de Python instalada:

# check Python version
$ python3 -V
Python 3.6.8

$ which python3
/usr/bin/python3

Recomiendo configurar un directorio para el entorno virtual:

$ mkdir python-venv
$ cd !$

Puede omitir esta parte si desea mantenerla en una ubicación aleatoria, pero me resulta útil mantener juntos mis directorios de prueba consolidados.

Crear un nuevo entorno virtual de Python

Cree un entorno virtual utilizando el python3 -m venv <environment-name> pedido. Puede darle cualquier nombre a su entorno virtual de Python. quiero probar el Ansible 2.9 versión, así que le puse un nombre para que el directorio se pueda identificar fácilmente:

$ python3 -m venv ansible2.9
$ ls
ansible2.9

Activar un entorno virtual Python

Después de crear un entorno virtual, debe ingresar el entorno manualmente. Cambia tu activo Variables de entorno desde su shell actual hasta los requeridos por Python para crear un entorno virtual:

$ source ansible2.9/bin/activate
(ansible2.9)$ python3 -V
Python 3.6.8

Luego actualice el instalador preferido (pip) en su entorno virtual:

(ansible2.9)$ python3 -m pip install --upgrade pip

Instalar Ansible en un entorno virtual

Una vez que su entorno virtual esté configurado y activo, puede instalar una versión dedicada de Ansible en él. Este ejemplo instala la versión 2.9, pero puede instalar cualquier versión actual (o en desarrollo):

(ansible2.9)$ python3 -m pip install ansible==2.9
(ansible2.9)$ which ansible
~/python-venv/ansible2.9/bin/ansible

Comprueba tu nueva instalación:

(ansible2.9)$ ansible --version
ansible 2.9.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/devops/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/devops/python-venv/ansible2.9/lib64/python3.6/site-packages/ansible
  executable location = /home/devops/python-venv/ansible2.9/bin/ansible
  python version = 3.6.8 (default, Aug 24 2020, 17:57:11) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]

Puede ver que la versión y la ruta de Ansible en su entorno virtual de Python son diferentes de la instalación de su sistema.

Prueba de módulos de Python

Ahora puede instalar cualquier biblioteca o módulo en su entorno virtual sin afectar el resto de su sistema:

(ansible2.9)$ python3 -m pip install dnspython
Collecting dnspython
  Downloading dnspython-2.1.0-py3-none-any.whl (241 kB)
     |████████████████████████████████| 241 kB 8.9 MB/s 
Installing collected packages: dnspython
Successfully installed dnspython-2.1.0
(ansible2.9)$ python3 -m pip list
Package      Version
------------ -------
ansible      2.9.0
cffi         1.14.6
cryptography 3.4.7
dnspython    2.1.0
Jinja2       3.0.1
MarkupSafe   2.0.1
pip          21.2.1
pycparser    2.20
PyYAML       5.4.1
setuptools   39.2.0

Instalar roles o colecciones de Ansible

También puede instalar roles y colecciones de Ansible en una ruta de entorno virtual de Python para realizar pruebas. Por ejemplo, para probar un Colección Ansible Kubernetes.Core:

(ansible2.9)$ ansible-galaxy collection install 
  kubernetes.core:==1.2.1 -p collections

Desactivar un entorno virtual de Python

Una vez que haya terminado de trabajar en su entorno virtual de Python (o sea el momento de cambiar a otro entorno virtual de Python), puede desactivarlo:

(ansible2.9)$ deactivate  

Cree otro entorno virtual de Python para Ansible 3.0

Después de deshabilitar el primer entorno virtual, intente crear otro entorno virtual de Python para comprender el poder que le brinda esta tecnología. En este nuevo entorno, puede instalar Ansible 3.0 (o cualquier versión), incluso si hay una versión diferente instalada en su sistema, y ​​otra versión en un entorno virtual de Python separado:

$ python3 -m venv ansible3.0
$ ls -1
ansible2.9
ansible3.0
$ source ansible3.0/bin/activate
(ansible3.0)$ which python
~/python-venv/ansible3.0/bin/python
(ansible3.0)$ python3 -m pip install --upgrade pip
(ansible3.0)$ python3 -m pip install ansible==3.0

Concluir

Los entornos virtuales de Python le brindan la libertad de probar qué versión de módulos, complementos y paquetes de Python necesita. Esto incluye software de administración de sistemas vital como Ansible, para que pueda probar nuevas funciones de Ansible sin interrumpir la instalación de su sistema.

Artículos de interés

Subir