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.
ansible-galaxy install vcc-caeit/ansible-role.squid