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