squid

Ansible Роль: squid

Эта роль предназначена для настройки Squid на Ubuntu 16.04 LTS и, надеемся, на более поздних версиях LTS.

Кроме того, основной вдохновляющей идеей для создания этой роли является интеграция поддержки пакета squid-deb-proxy (на момент написания доступного в universe).

Переменные Роли

Доступные переменные перечислены ниже, вместе с их значениями по умолчанию (см. defaults/main.yml):

Мы устанавливаем visible_hostname в значение, заданное в ansible_host.

squid_hostname: "{{ ansible_host }}"

В squid_allowed_networks мы определяем список сетей, которым разрешено подключение. По умолчанию используются IPv4 RFC1918, локальные IPv6 и localhost для обеих семейств.

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

Список записей для контроля доступа, которые вы хотите добавить. Мы автоматически добавим ключевое слово acl перед ним. Пример: ['example srcdomain .example.com'].

squid_acls: []

Список соответствующих списков доступа, которые будут отслеживаться и записываться в логи в качестве хоста с X-Forwarded-For. Эта переменная будет действовать только в том случае, если она определена.

squid_log_xff_acls: []

Установите squid_logformat, если вам нужно задать формат лога, который использует Squid.

squid_logformat: <fallback to default>

Установите это значение в true, если хотите прокси, оптимизированный для обработки зеркал Ubuntu, а не обычного прокси.

squid_deb_proxy: false

Чтобы Avahi объявлял ваш deb-прокси в сети, установите это в true. С установленным squid-deb-proxy-client на клиентах ваш прокси будет автоматически использоваться, если доступен в одной мульткастовой доменной сети.

squid_deb_proxy_avahi: false

Это значения по умолчанию для частей squid_deb_proxy и не применяются, когда переменная squid_deb_proxy установлена в false. squid_mirror_debian и squid_mirror_ubuntu по умолчанию равно true или false в зависимости от хоста, на котором вы настраиваете Squid, при этом другие параметры, кроме squid_mirror_custom, зависят от этих настроек. squid_mirror_custom должен быть списком.

squid_mirror_debian: true на серверах Debian, false в противном случае
squid_mirror_ubuntu: true на серверах Ubuntu, false в противном случае
squid_mirror_default: true
squid_mirror_3rdparty: true
squid_mirror_changelogs: true
squid_mirror_ppas: false
squid_mirror_custom: []

Если вы не уверены, какие репозитории будут использовать ваши пользователи, вы можете установить squid_mirror_match_all_repositories в true. Это попытается сопоставить путь URL с действительными форматами репозиториев с помощью regex. Поскольку регулярные выражения работают медленно, мы добавляем это как последнее средство и по умолчанию не включаем.

squid_mirror_match_all_repositories: false

Когда автоматическое перенаправление OpenDNS/Cisco Umbrella используется в вашей сети, вам, вероятно, понадобится, чтобы кэш-сервер поддерживал редиректы.

squid_mirror_opendns: false

Помимо определенных переменных, есть некоторые с значениями по умолчанию в шаблонах, которые вы можете настроить. Мы перечисляем их здесь с их значениями по умолчанию:

Поддержка кэш-пиров осуществляется с помощью списка словарей. По умолчанию эта переменная не задана. Мы приводим набор примеров со всеми параметрами здесь. Чтобы узнать значения для этих параметров, вам следует посетить документацию Squid. query_port будет установлен на значение по умолчанию, основанное на query_type, если не задано.

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

Если вы не хотите задавать squid_cache_peers, мы включаем некоторые сокращения, которые применяют разумные значения по умолчанию для остальных значений выше.

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

Поскольку разные окружения различаются, мы включили squid_direct_connections, чтобы обрабатывать соединения напрямую с исходными серверами. Мы всегда проверяем наличие кэша на наших кэш-пирах перед тем, как решить, как выполнить запрос, и именно в этот момент данный параметр становится актуальным. always всегда будет использовать прямое соединение и потерпит неудачу, если оно не сработает. never всегда будет использовать родительский прокси для запроса и потерпит неудачу, если это не сработает. prefer будет предпочитать подключение к исходному серверу, но вернется к родительским прокси в случае сбоя. fallback всегда будет сначала пробовать родительские прокси, но использовать прямые соединения в качестве запасного варианта, если это не сработает. По умолчанию этот параметр не задан и будет использовать то значение по умолчанию, которое использует ваша установка Squid.

squid_direct_connections: always never prefer fallback

Иногда вам необходимо обойти родительский прокси для некоторых серверов. Теперь мы позволяем обходить родительские кэши, задав squid_bypass_parent, который является списком имен хостов.

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

В некоторых случаях вам нужно сделать некоторые внешние адаптации к тому, какой трафик будет обрабатываться. Squid поддерживает ICAP (Internet Content Adaptation Protocol) для этого. Вы можете определить службы по примеру, хотя только name является обязательным, если вы довольны значениями по умолчанию. bypass не будет установлен, если не задан, и будет использовать значение по умолчанию Squid. Эта роль не займется настройкой ICAP службы(ей).

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

На каком порту мы должны слушать. Если мы кэш-сосед, мы будем использовать заданный порт вместо переменной squid_http_port для squid_deb_proxy. Когда squid_deb_proxy не установлен, теперь поддерживается использование этого параметра как списка директив Listen.

squid_http_port: 3128

Какие большие объекты мы должны кэшировать? По умолчанию установлено для squid-deb-proxy.

squid_maximum_object_size: "512 MB"

Настройте cache_dir, если хотите. Обычно Squid хранит кэш в памяти, но значения по умолчанию перечислены для squid-deb-proxy. squid_cache_size в МБ, т.е. 40 ГБ.

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

Сколько памяти мы хотим использовать и насколько большие объекты мы будем там хранить.

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

Если вам нужно, чтобы Squid использовал другие серверы имён, отличные от системных, вы можете определить squid_nameservers как строку для одного или как список для нескольких. По умолчанию этот параметр не задан, и мы используем системные серверы имен.

squid_nameservers: 127.0.0.53

Пример Playbook

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

Лицензия

GPLv2

Информация об Авторе

Эта роль была создана в 2018 году Нафаллою Бьялевиком во время работы в качестве консультанта для Volvo Cars Corporation.

О проекте

Squid for Ubuntu, with squid-deb-proxy support

Установить
ansible-galaxy install vcc-caeit/ansible-role.squid
Лицензия
gpl-2.0
Загрузки
15584
Владелец
The CAE IT team handles HPC clusters and Linux applications at Volvo Cars