arillso.traefik
Ansible Role: traefik
Descripción
Traefik es un proxy inverso escrito en Go. Se puede usar en múltiples situaciones con muchos proveedores (Kubernetes, Swarm, ...). La versión 2 también es capaz de enrutar TCP.
Este rol configura traefik en un host como proxy inverso y balanceador de carga. Esto te permite usar un servidor como host para múltiples aplicaciones dockerizadas.
Nota: Este rol te permite usar un (1) servidor como host para muchas aplicaciones. Dependiendo de tu caso de uso, esto puede que no sea lo que buscas. Para servicios que necesitan ser altamente disponibles, considera usar Kubernetes u otros sistemas y configurar traefik allí.
Instalación
ansible-galaxy install arillso.traefik
Requisitos
- Docker
Variables del Rol
Traefik v2.0 en adelante soporta configuración en yaml. Este rol utiliza esto para generar la configuración directamente a partir de las variables de ansible proporcionadas. Existen ciertas variables de configuración rápida que te permiten configurar una instancia simple, pero también hay la opción de configurar cada clave completamente tú mismo. La configuración rápida te permite:
- Configurar un resolvedor de certificados basado en lets-encrypt
- Configurar puntos de entrada estándar
- Configurar un proveedor de Docker estándar
Las variables de configuración rápida están prefijadas con traefik_qs_
.
Nombre | Predeterminado | Descripción |
---|---|---|
traefik_dir |
/etc/traefik |
dónde almacenar los datos de traefik |
traefik_hostname |
"{{ inventory_hostname }}" |
el nombre de host de esta instancia |
traefik_network |
traefik_proxy |
el nombre de la red generada |
traefik_qs_send_anonymous_usage |
false |
si enviar estadísticas anónimas |
traefik_qs_https |
false |
si configurar un punto final https |
traefik_qs_https_redirect |
false |
si configurar una redirección a https |
traefik_qs_https_le |
false |
si configurar letsencrypt usando tls (solo si https está habilitado) |
traefik_qs_https_le_mail |
indefinido | el correo electrónico para usar con letsencrypt (Requerido) |
traefik_qs_log_level |
ERROR |
el nivel de registro a aplicar |
traefik_container_name |
'traefik' |
el nombre del contenedor |
traefik_network_name |
'traefik_proxy' |
el nombre de la red |
traefik_network_ipam_subnet |
'172.16.1.0/24' |
subred |
traefik_network_ipam_gateway |
'172.16.1.1' |
puerta de enlace |
traefik_network_ipam_iprange |
'172.16.1.0/24' |
rango de ip |
traefik_image |
'traefik' |
la imagen utilizada |
traefik_add_volumes |
[] |
volúmenes adicionales a montar |
traefik_ports |
['80:80', '443:443'] |
los puertos compartidos |
traefik_labels |
{} |
etiquetas para establecer en el contenedor traefik |
Los nombres predeterminados de las configuraciones generadas son:
- Puntos de entrada:
http
https
- Proveedores:
docker
- Resolutores de certificados:
letsencrypt
Configuración Detallada
Como se mencionó anteriormente, este rol también te permite configurar traefik en detalle usando la configuración yaml de traefik. Las siguientes variables pueden ser utilizadas:
Nombre | Predeterminado | Descripción |
---|---|---|
traefik_confkey_global |
indefinido | ver Documentación 📑 |
traefik_confkey_serversTransport |
indefinido | ver Documentación 📑 |
traefik_confkey_entryPoints |
indefinido | ver Documentación 📑 |
traefik_confkey_providers |
indefinido | ver Documentación 📑 |
traefik_confkey_api |
indefinido | ver Documentación 📑 |
traefik_confkey_metrics |
indefinido | ver Documentación 📑 |
traefik_confkey_ping |
indefinido | ver Documentación 📑 |
traefik_confkey_log |
indefinido | ver Documentación 📑 |
traefik_confkey_accessLog |
indefinido | ver Documentación 📑 |
traefik_confkey_tracing |
indefinido | ver Documentación 📑 |
traefik_confkey_hostResolver |
indefinido | ver Documentación 📑 |
traefik_confkey_certificatesResolvers |
indefinido | ver Documentación 📑 |
Estas claves se combinan en la configuración después de la configuración de instalación rápida usando el filtro combine()
en modo no recursivo. Esto te permite añadir opciones de configuración según las necesites. Si deseas sobrescribir los elementos de la instalación rápida, utiliza su clave (como se especifica arriba).
Compatibilidad con sbaerlocher/ansible.traefik
Este rol está destinado como una continuación del rol sbaerlocher/ansible.traefik para traefik v2. La mayoría de las variables establecidas para dicho rol seguirán funcionando en este rol, excepto por tres casos especiales, donde debes recrear una configuración personalizada usando las variables _confkey_
.
Estos se explican en las siguientes secciones.
Variables que requieren acción manual
traefik_configuration_file
Usar traefik_configuration_file
no influye en tu instalación. La configuración de Traefik ha cambiado con la introducción de la v2 y no es compatible con versiones anteriores. Utiliza la documentación de Traefik para recrear tu configuración personalizada usando las variables _confkey_
.
traefik_api
La forma en que se define la API en Traefik v2 te permite usar varias configuraciones diferentes. Por simplicidad, eliminamos la generación automática de una configuración de API, ya que no se puede combinar fácilmente con una configuración personalizada y podría causar efectos secundarios no deseados.
Para configurar una API simple y no segura en el puerto del contenedor 8080
, utiliza la siguiente configuración (Nota: este ejemplo no es seguro, considera asegurar tu API para uso en producción):
traefik_confkey_api:
insecure: true
dashboard: true # usa esto para habilitar el panel
traefik_ports:
- '80:80'
- '443:443'
- '8080:8080'
Esto configurará automáticamente un punto de entrada en el puerto 8080
.
traefik_ping
De manera similar a la definición de API, la definición de ping permite configuración personalizada a través de múltiples claves de configuración diferentes, lo que hace que una configuración generada automáticamente no sea factible.
Sigue la documentación de configuración de Traefik sobre ping para encontrar la configuración que deseas aplicar. Como ejemplo, mira esta configuración, que expondrá el endpoint de ping en el puerto 8082
:
traefik_confkey_entryPoints:
ping:
address: ':8082'
traefik_confkey_ping:
entryPoint: 'ping'
traefik_ports:
- '80:80'
- '443:443'
- '8082:8082'
ansible-galaxy install arillso.traefik