itnok.is_ubuntu
is-ubuntu
Detecta si el host objetivo de Ubuntu es... un contenedor o eventualmente localhost.
Los pasos realizados son:
- Establecer el hecho is_ubuntu_localhost
- Verificar si está dentro de un contenedor o no
- Establecer el hecho is_ubuntu_inside_container
- Verificar si hay configuraciones de proxy presentes o no
:exclamation: Requisitos
Ninguno.
:abcd: Variables del Rol
Variable | Descripción | Valor por Defecto |
---|---|---|
is_force_lookup |
La búsqueda de hechos adicionales personalizados no ocurre si ya existen. Esto es para forzar la búsqueda. | no |
is_test_url_list |
Lista de URLs para probar la conectividad/accesibilidad a Internet | [] |
:link: Dependencias
Ninguna.
:loudspeaker: Hechos
Este rol crea los siguientes hechos que pueden ser usados por otros roles o playbooks:
Hecho | Descripción |
---|---|
is_ubuntu_behind_proxy |
Versión etiquetada para el rol actual de Ansible cuando se ejecuta (este hecho NO se actualiza si ya está presente, a menos que is_force_lookup esté configurado en yes ) |
is_ubuntu_inside_container |
Verdadero cuando está dentro de un contenedor. Esto sucede cuando el PID 1 no es init ni systemd (este hecho NO se actualiza si ya está presente, a menos que is_force_lookup esté configurado en yes ) |
is_ubuntu_localhost |
Verdadero cuando la máquina objetivo del Rol es localhost (este hecho NO se actualiza si ya está presente, a menos que is_force_lookup esté configurado en yes ) |
is_ubuntu_network_reachable |
Verdadero cuando todos los URLs pasados en is_test_url_list son alcanzables (también incluye todos los URLs de /etc/apt/sources.list por defecto) |
is_ubuntu_url_reachable_list |
Lista de todos los URLs alcanzables |
is_ubuntu_url_unreachable_list |
Lista de todos los URLs inalcanzables |
:notebook: Ejemplo de Playbook
Aquí hay un ejemplo de cómo usar este rol en tus playbooks:
---
- hosts: servers
remote_user: ubuntu # opcional (tu usuario remoto)
gather_facts: yes # opcional
roles:
- { role: itnok.is_ubuntu }
:microscope: Pruebas
Este rol soporta pruebas usando Molecule para verificar sus funcionalidades en un entorno genérico.
Molecule NO es necesario para usar el Rol, pero es necesario para probarlo en una instalación local o en CI. Un ejemplo del uso de Molecule para CI se puede encontrar en las GitHub Actions de este repositorio. Para instalar Molecule, por favor consulta las instrucciones en la documentación en línea de Molecule. Si las dependencias necesarias que se mencionan allí están instaladas, todo debería ser tan simple como ejecutar:
$ python3 -m pip install --user "molecule[ansible,docker,lint]"
Las pruebas se ejecutan dentro de contenedores construidos sobre la marcha para este propósito (para ser lo más genérico posible). Por esta razón, Molecule necesita que Docker esté instalado. Si Podman es una alternativa preferida para manejar contenedores, el comando necesario para instalar Molecule debería cambiarse de la siguiente manera:
$ python3 -m pip install --user "molecule[ansible,podman,lint]"
Para usar Podman, el controlador usado por Molecule también debe ser cambiado en el archivo molecule/default/molecule.yml
: las líneas #5-6 deben cambiarse de la siguiente manera:
driver:
name: podman
Todas las pruebas, además de las verificaciones de formato, linting e idempotencia, se pueden ejecutar usando:
$ molecule test --parallel
(Se recomienda encarecidamente usar la opción --parallel
opcional al lanzar la suite de pruebas, ya que al probar múltiples contenedores objetivo reduce significativamente el tiempo de ejecución de las pruebas.)
Se pueden añadir pruebas adicionales al playbook molecule/default/verify.yml
si surge la necesidad.
:guardsman: Licencia
MIT (lee más)
Detects whether the target Ubuntu host is... a container or eventually localhost (and more).
ansible-galaxy install itnok.is_ubuntu