nl2go.hetzner_firewall
Rol de Ansible: Firewall de Hetzner
Una Rol de Ansible que gestiona el Firewall de Robot de Hetzner.
Requisitos Previos
- Cuenta existente en Hetzner Online GmbH.
- Cuenta del Servicio Web de Robot de Hetzner configurada.
Requisitos
Nombre | Tipo | Versión | Ubicación |
---|---|---|---|
ansible-filter | Paquete de Python | 1.0.1 | Nodo de control |
Variables de Rol
Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml
):
hetzner_firewall_webservice_base_url: https://robot-ws.your-server.de
URL base que apunta a la API de Robot de Hetzner. Esta variable se utiliza principalmente para pruebas, no es necesario cambiar el valor predeterminado.
hetzner_firewall_webservice_username: robot
Nombre de usuario para el servicio web. Puede ser configurado/cambiado como se describe en la sección Cambiar Datos de Acceso (Wiki de Hetzner).
hetzner_firewall_webservice_password: secret
Contraseña del servicio web. Puede ser configurada/cambiada como se describe en la sección Cambiar Datos de Acceso (Wiki de Hetzner).
hetzner_firewall_templates:
- name: New Template
whitelist_hos: true
is_default: false
rules:
input:
- action: accept
ip_version: ipv4
name: Allow all
Se pueden gestionar múltiples plantillas de firewall usando la variable hetzner_firewall_templates
. Una plantilla de firewall se identifica por el atributo name
. El nombre debe ser único para evitar colisiones o comportamientos inesperados.
El atributo state
para una plantilla tiene un valor predeterminado de present
.
hetzner_firewall_templates:
- name: New Template
state: absent
Para asegurarse de que la plantilla se elimine, agregue state: absent
. El atributo name
sigue siendo obligatorio para identificar el estado de origen.
hetzner_firewall_host:
name: New Template
El firewall del host se puede gestionar haciendo referencia a una plantilla de firewall existente de la lista hetzner_firewall_templates
.
La variable hetzner_firewall_host
puede definirse para un grupo de hosts particular o un host dedicado. Si hetzner_firewall_host
no se define,
el firewall del host o del grupo de hosts relacionado será ignorado por la rol.
hetzner_firewall_host:
absent: true
Para eliminar la configuración del firewall para un host particular, agregue state: absent
a la configuración del firewall del host.
Los parámetros de configuración adicionales no tendrán efecto cuando se proporcione state: absent
.
hetzner_firewall_host:
status: disabled
Para deshabilitar la configuración del firewall para un host particular, agregue status: disabled
a la configuración del firewall del host.
Los parámetros de configuración adicionales no tendrán efecto cuando se proporcione state: disabled
.
hetzner_firewall_webservice_concurrent_requests: 1
hetzner_firewall_webservice_concurrent_poll: 1
Para acelerar la ejecución de la rol al manejar la configuración del firewall para una gran cantidad de hosts, el número de solicitudes paralelas enviadas a la API de Robot de Hetzner
puede controlarse mediante la variable hetzner_firewall_webservice_concurrent_requests
. El intervalo de sondeo para el procesamiento de los resultados de solicitudes asíncronas
se establece mediante hetzner_firewall_webservice_concurrent_poll
. Consulte la documentación oficial sobre
Acciones Asíncronas y Sondeo para más explicaciones.
Etiquetas
Las etiquetas se pueden usar para limitar la ejecución de la rol a una tarea particular. Las siguientes etiquetas están disponibles:
hetzner_firewall
,config
: Cubre todo el ciclo de vida de la rol.hetzner_firewall_template
: Gestiona plantillas de firewall.hetzner_firewall_host
: Gestiona el firewall de hosts.
Dependencias
Ninguna.
Ejemplo de Playbook
- hosts: all
roles:
- nl2go.hetzner_firewall
Ejemplo de Configuración
hetzner_firewall_templates:
- name: Real World Template
whitelist_hos: true
is_default: true
rules:
input:
- name: Allow ICMP
action: accept
ip_version: ipv4
protocol: icmp
- name: Allow TCP based downloads
action: accept
ip_version: ipv4
protocol: tcp
dst_port: 32768-65535
tcp_flags: syn
- name: Allow UDP based downloads
action: accept
ip_version: ipv4
protocol: tcp
dst_port: 32768-65535
- name: Allow SSH Office IP
action: accept
ip_version: ipv4
protocol: tcp
src_ip: 1.1.1.1/32
dst_port: '22'
- name: Allow private range 1
action: accept
ip_version: ipv4
src_ip: 10.0.0.0/8
Desarrollo
Use docker-molecule siguiendo las instrucciones para ejecutar Molecule o instale Molecule localmente (no se recomienda, pueden aparecer conflictos de versiones).
Use lo siguiente para ejecutar pruebas:
molecule test --all
Esta rol depende de hetzner-robot-api-mock para simular interacciones con la API de Robot de Hetzner.
Mantenedores
Licencia
Consulte el archivo LICENSE.md para obtener detalles.
Información del Autor
Esta rol fue creada en 2019 por Newsletter2Go GmbH.
Manage Hetzner Robot Firewall (https://wiki.hetzner.de/index.php/Robot_Firewall/en) using Ansible.
ansible-galaxy install nl2go.hetzner_firewall