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.
- ¿Por qué usar entornos virtuales de Python para el desarrollo de Ansible?
- Sientese
- Crear un nuevo entorno virtual de Python
- Activar un entorno virtual Python
- Instalar Ansible en un entorno virtual
- Instalar roles o colecciones de Ansible
- Desactivar un entorno virtual de Python
- Cree otro entorno virtual de Python para Ansible 3.0
- Concluir
¿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
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