vcc_caeit.squid
Rol de Ansible: squid
Este rol tiene como objetivo configurar Squid en Ubuntu 16.04 LTS, y ojalá en versiones LTS posteriores.
Además, y la principal inspiración para crear este rol, es integrar soporte para el paquete squid-deb-proxy
(en el momento de escribir esto) del repositorio universe.
Variables del Rol
Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml
):
Configuramos visible_hostname
a lo que esté configurado en ansible_host
.
squid_hostname: "{{ ansible_host }}"
En squid_allowed_networks
definimos una lista de redes permitidas para conectarse.
Por defecto, se utilizan IPv4 RFC1918, IPv6 link-local y localhost para ambas familias.
squid_allowed_networks:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- 127.0.0.1
- fe80::/64
- ::1
Lista de entradas de listas de acceso que deseas agregar. Agregamos automáticamente la palabra clave acl al principio.
Ejemplo: ['example srcdomain .example.com']
.
squid_acls: []
Lista de listas de acceso que coinciden y registran X-Forwarded-For como host en los registros. Esta variable solo se actúa si está definida.
squid_log_xff_acls: []
Establece squid_logformat
si necesitas definir el formato de registro que utiliza squid.
squid_logformat: <retorna al predeterminado>
Configura esto en verdadero si deseas un proxy optimizado para manejar espejos de Ubuntu en lugar de un proxy regular.
squid_deb_proxy: false
Para que Avahi anuncie tu proxy deb en la red, establece esto en verdadero. Con squid-deb-proxy-client
instalado en los clientes, tu proxy se usará automáticamente si está disponible en el mismo dominio multicast.
squid_deb_proxy_avahi: false
Estos son los valores predeterminados para las partes de squid_deb_proxy
y no se aplican cuando la variable squid_deb_proxy
se establece en falso.
squid_mirror_debian
y squid_mirror_ubuntu
son verdaderos o falsos dependiendo del host en el que estás configurando Squid, con las otras opciones, excepto squid_mirror_custom
, dependiendo de estas configuraciones. squid_mirror_custom
debe ser una lista.
squid_mirror_debian: true en servidores Debian, falso de lo contrario
squid_mirror_ubuntu: true en servidores Ubuntu, falso de lo contrario
squid_mirror_default: true
squid_mirror_3rdparty: true
squid_mirror_changelogs: true
squid_mirror_ppas: false
squid_mirror_custom: []
Si no estás seguro de qué repositorios utilizarán tus usuarios, puedes establecer squid_mirror_match_all_repositories
en verdadero.
Esto intentará hacer coincidir la ruta de la URL con formatos de repositorio válidos mediante expresiones regulares.
Dado que las expresiones regulares son lentas, agregamos esto como una última opción y, por defecto, no lo incluimos.
squid_mirror_match_all_repositories: false
Cuando se utiliza la redirección automática de OpenDNS/Cisco Umbrella en tu red, es probable que necesites que el servidor de caché soporte las redirecciones.
squid_mirror_opendns: false
Además de estas variables definidas, hay algunas con valores predeterminados en las plantillas que puedes personalizar. Las enumeramos aquí con sus valores predeterminados en un bloque de variables comunes:
Hay soporte para pares de caché utilizando una lista de diccionarios. Por defecto, esta variable no está establecida. Incluimos un conjunto de ejemplos con todas las opciones aquí.
Para conocer los valores de estas opciones, deberías visitar la documentación de Squid. query_port
se establecerá en el valor predeterminado según query_type
, si no está definido.
squid_cache_peers:
- host: parent.example.org
type: parent
port: 8080
query_type: htcp
query_port: 54213
options:
- default
- htcp
- host: sibling.example.org
type: sibling
port: 3128
query_type: icp
options: no-proxy
Si no quieres especificar squid_cache_peers
, incluimos algunos accesos directos que aplican valores razonables para los otros valores acima.
squid_parent_proxies: http://parent.example.org:8080
squid_sibling_proxies:
- sibling.example.org
- sibling.example.net:3129
Dado que diferentes entornos son diferentes, incluimos squid_direct_connections
para manejar cuando nos conectamos directamente a los servidores de origen.
Siempre verificamos si hay aciertos de caché en nuestros pares de caché antes de decidir cómo cumplir con la solicitud, y es en este punto que esta opción se vuelve interesante.
always
siempre usará una conexión directa y fallará si no funciona. never
siempre utilizará un proxy padre para la solicitud y fallará si eso no funciona. prefer
preferirá conectarse al servidor de origen, pero volverá a los proxies padres en caso de fallos. fallback
siempre intentará los proxies padres primero, pero utilizará conexiones directas como respaldo si eso falla.
Por defecto, esto no está establecido, lo que usará el valor predeterminado que usa tu instalación de Squid.
squid_direct_connections: always never prefer fallback
A veces necesitas omitir el proxy padre para algunos servidores. Ahora permitimos omitir cachés padres estableciendo squid_bypass_parent
, que es una lista de nombres de host.
squid_bypass_parent:
- server1.example.net
- server2.example.com
En algunos casos, necesitas realizar algunas adaptaciones externas para el tráfico que se sirve. Squid admite ICAP (Internet Content Adaptation Protocol) para esto.
Puedes definir servicios según el ejemplo, aunque solo se requiere name
si estás satisfecho con los valores predeterminados. bypass
no se establecerá, a menos que se defina, y usará el valor predeterminado de Squid.
Este rol no se ocupará de configurar el/los servicio(s) ICAP.
squid_icap_policy:
- name: service
direction: in
bypass: false
url: icap://127.0.0.1:1344/service
access:
- acl: all
allow: true
En qué puerto deberíamos escuchar. Si somos un hermano de caché, utilizaremos el puerto definido en lugar de la variable squid_http_port
para squid_deb_proxy
.
Cuando squid_deb_proxy
no está establecido, ahora hay soporte para que esta variable sea una lista de directivas de Listen.
squid_http_port: 3128
¿Cuánto deberían ser grandes los objetos que almacenamos en caché? El valor predeterminado es para squid-deb-proxy.
squid_maximum_object_size: "512 MB"
Configura un cache_dir
si lo deseas. Normalmente Squid almacena en caché en la memoria, pero los valores predeterminados enumerados son para squid-deb-proxy.
squid_cache_size
está en MB, es decir, 40GB.
squid_cache_type: 'aufs'
squid_cache_path: '/var/spool/squid'
squid_cache_size: 40000
squid_cache_options: '16 256'
¿Cuánta memoria queremos usar y qué tan grandes serán los objetos que almacenaremos allí?
squid_cache_mem: "200 MB"
squid_max_object_mem_size: "10240 KB"
En caso de que necesites que Squid use servidores de nombres diferentes a los del sistema, puedes definir squid_nameservers
como una cadena para uno solo o una lista para más de uno. Por defecto, esta opción no está establecida, y usamos el/los servidor(es) de nombres del sistema.
squid_nameservers: 127.0.0.53
Ejemplo de Playbook
- hosts: proxies
vars:
squid_deb_proxy: true
squid_mirror_custom:
- .ftp.acc.umu.se
squid_cache_size: 8000
roles:
- vcc_caeit.squid
Licencia
GPLv2
Información del Autor
Este rol fue creado en 2018 por Nafallo Bjälevik, mientras realizaba trabajos de consultoría para Volvo Cars Corporation.
ansible-galaxy install vcc_caeit.squid