vcc_caeit.squid

Rôle Ansible : squid

Ce rôle a pour but de configurer Squid sur Ubuntu 16.04 LTS, et de préférence sur les versions LTS suivantes.

De plus, et c'est la principale inspiration pour la création de ce rôle, nous intégrons le support du paquet squid-deb-proxy (au moment de l'écriture, dans le dépôt universe).

Variables du Rôle

Les variables disponibles sont listées ci-dessous, avec leurs valeurs par défaut (voir defaults/main.yml) :

Nous définissons visible_hostname comme étant la valeur de ansible_host.

squid_hostname: "{{ ansible_host }}"

Dans squid_allowed_networks, nous définissons une liste des réseaux autorisés à se connecter. Par défaut, cela inclut les plages IPv4 RFC1918, l’IPv6 link-local et localhost pour les deux familles.

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

Liste des entrées de liste d'accès que vous souhaitez ajouter. Nous ajoutons automatiquement le mot-clé acl devant.

Exemple : ['example srcdomain .example.com'].

squid_acls: []

Liste des listes d'accès à suivre et à enregistrer X-Forwarded-For comme hôte dans les journaux. Cette variable ne sera utilisée que si elle est définie.

squid_log_xff_acls: []

Définissez squid_logformat si vous avez besoin de définir le format de journal utilisé par Squid.

squid_logformat: <retour à la valeur par défaut>

Définissez ceci sur vrai si vous souhaitez un proxy optimisé pour gérer les miroirs Ubuntu plutôt qu'un proxy classique.

squid_deb_proxy: false

Pour faire en sorte qu'Avahi diffuse votre proxy deb sur le réseau, définissez ceci sur vrai. Avec squid-deb-proxy-client installé sur les clients, votre proxy sera automatiquement utilisé s'il est disponible sur le même domaine multicast.

squid_deb_proxy_avahi: false

Ce sont des valeurs par défaut pour les parties squid_deb_proxy et ne s'appliquent pas lorsque la variable squid_deb_proxy est définie sur false. Les valeurs par défaut de squid_mirror_debian et squid_mirror_ubuntu varient selon le serveur sur lequel vous configurez Squid, avec les autres options, sauf squid_mirror_custom, dépendant de ces paramètres. squid_mirror_custom doit être une liste.

squid_mirror_debian: true sur les serveurs Debian, false sinon
squid_mirror_ubuntu: true sur les serveurs Ubuntu, false sinon
squid_mirror_default: true
squid_mirror_3rdparty: true
squid_mirror_changelogs: true
squid_mirror_ppas: false
squid_mirror_custom: []

Si vous n'êtes pas sûr des dépôts que vos utilisateurs utiliseront, vous pouvez définir squid_mirror_match_all_repositories sur vrai. Cela tentera de faire correspondre le chemin de l'URL aux formats de dépôt valides à l'aide d'expressions régulières. Étant donné que les expressions régulières sont lentes, nous ajoutons cela comme un dernier recours et par défaut, ne pas inclure cette option.

squid_mirror_match_all_repositories: false

Lorsque la redirection automatique OpenDNS/Cisco Umbrella est utilisée sur votre réseau, vous aurez probablement besoin que le serveur de cache prenne en charge les redirections.

squid_mirror_opendns: false

En plus de ces variables définies, il en existe d'autres avec des valeurs par défaut dans les templates que vous pouvez personnaliser. Nous les listons ici avec leurs valeurs par défaut dans la section des variables communes :

Il y a un support pour les pairs de cache en utilisant une liste de dictionnaires. Par défaut, cette variable n'est pas définie. Nous incluons un ensemble d'exemples avec toutes les options ici. Pour trouver les valeurs pour ces options, vous devez consulter la documentation de Squid. query_port sera défini sur la valeur par défaut basée sur query_type si non défini.

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 vous ne souhaitez pas spécifier les squid_cache_peers, nous incluons des raccourcis qui appliquent des valeurs par défaut raisonnables pour les autres valeurs ci-dessus.

squid_parent_proxies: http://parent.example.org:8080
squid_sibling_proxies:
  - sibling.example.org
  - sibling.example.net:3129

Étant donné que différents environnements sont différents, nous avons inclus squid_direct_connections pour gérer quand nous nous connectons directement aux serveurs d'origine. Nous vérifions toujours les hits de cache sur nos pairs de cache avant de décider comment satisfaire la demande, c'est là que cette option devient intéressante. always utilisera toujours une connexion directe et échouera si cela ne fonctionne pas. never utilisera toujours un proxy parent pour la demande et échouera si cela ne fonctionne pas. prefer préférera se connecter au serveur d'origine, mais reviendra aux proxies parents en cas d'échec. fallback essaiera toujours d'abord les proxies parents, mais utilisera des connexions directes comme solution de secours si cela échoue. Par défaut, cela n'est pas défini, ce qui utilisera les valeurs par défaut que votre installation Squid utilise.

squid_direct_connections: always never prefer fallback

Parfois, vous devez contourner le proxy parent pour certains serveurs. Nous vous permettons maintenant de contourner les caches parents en définissant squid_bypass_parent, qui est une liste de noms d'hôtes.

squid_bypass_parent:
  - server1.example.net
  - server2.example.com

Dans certains cas, vous devez effectuer des adaptations externes à ce qui est servi. Squid prend en charge ICAP (Internet Content Adaptation Protocol) pour cela. Vous pouvez définir des services comme dans l'exemple, bien que seul name soit requis si vous êtes satisfait des valeurs par défaut. bypass ne sera pas défini, sauf s'il est précisé, et utilisera la valeur par défaut de Squid. Ce rôle ne s'occupera pas de la configuration des services ICAP.

squid_icap_policy:
  - name: service
    direction: in
    bypass: false
    url: icap://127.0.0.1:1344/service
    access:
      - acl: all
        allow: true

Quel port devrions-nous écouter ? Si nous sommes un cache sibling, nous utiliserons le port défini au lieu de la variable squid_http_port pour squid_deb_proxy. Lorsque squid_deb_proxy n'est pas défini, ce paramètre peut maintenant être une liste de directives Listen.

squid_http_port: 3128

Quelle taille d'objets devons-nous mettre en cache ? La valeur par défaut est pour squid-deb-proxy.

squid_maximum_object_size: "512 MB"

Configurez un cache_dir si vous le souhaitez. Normalement, Squid met en cache en mémoire, mais les valeurs par défaut listées sont pour squid-deb-proxy. squid_cache_size est en Mo, soit 40 Go.

squid_cache_type: 'aufs'
squid_cache_path: '/var/spool/squid' 
squid_cache_size: 40000
squid_cache_options: '16 256'

Quelle quantité de mémoire voulons-nous utiliser et quelle taille d'objets allons-nous y stocker.

squid_cache_mem: "200 MB"
squid_max_object_mem_size: "10240 KB"

Si vous avez besoin que Squid utilise des serveurs de noms différents de ceux du système, vous pouvez définir squid_nameservers comme une chaîne pour un seul ou une liste pour plusieurs. Par défaut, cette option n'est pas définie et nous utilisons le(s) serveur(s) de noms système.

squid_nameservers: 127.0.0.53

Exemple de Playbook

- hosts: proxies
  vars:
    squid_deb_proxy: true
    squid_mirror_custom:
      - .ftp.acc.umu.se
    squid_cache_size: 8000
  roles:
    - vcc_caeit.squid

Licence

GPLv2

Informations sur l'auteur

Ce rôle a été créé en 2018 par Nafallo Bjälevik, lors d'un travail de consultant pour Volvo Cars Corporation.

À propos du projet

Squid for Ubuntu, with squid-deb-proxy support

Installer
ansible-galaxy install vcc_caeit.squid
Licence
gpl-2.0
Téléchargements
15.6k
Propriétaire
The CAE IT team handles HPC clusters and Linux applications at Volvo Cars