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.

Acerca del proyecto

Squid for Ubuntu, with squid-deb-proxy support

Instalar
ansible-galaxy install vcc_caeit.squid
Licencia
gpl-2.0
Descargas
15.6k
Propietario
The CAE IT team handles HPC clusters and Linux applications at Volvo Cars