vcc_caeit.squid
Ansible 角色:squid
本角色旨在配置 Ubuntu 16.04 LTS 上的 Squid,并希望在以后的 LTS 版本中也能使用。
此外,创建该角色的主要灵感来自于集成了(在撰写时)宇宙包 squid-deb-proxy
的支持。
角色变量
可用的变量如下所示,并列出了默认值(请参阅 defaults/main.yml
):
我们将 visible_hostname
设置为 ansible_host
的值。
squid_hostname: "{{ ansible_host }}"
在 squid_allowed_networks
中,我们定义了一列允许连接的网络。默认包括 IPv4 RFC1918、IPv6 链接本地和本地主机。
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 使用的日志格式,请设置 squid_logformat
。
squid_logformat: <fallback to default>
如果希望代理优化以处理 Ubuntu 镜像而不是常规代理,请将此设置为 true。
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
的默认值根据你设置 Squid 的主机而定,其他选项(除了 squid_mirror_custom
)也依赖于这些设置。squid_mirror_custom
应为一个列表。
squid_mirror_debian: 在 Debian 服务器上为 true,其他为 false
squid_mirror_ubuntu: 在 Ubuntu 服务器上为 true,其他为 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 的路径,以便与有效的仓库格式匹配。由于正则表达式速度较慢,因此我们将其作为最后的选择,默认情况下不包含此项。
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(互联网内容适配协议)来实现这一点。你可以按示例定义服务,虽然只需 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
未设置时,现在支持该变量为监听指令的列表。
squid_http_port: 3128
我们应该缓存多大对象?默认值是为 squid-deb-proxy 设置的。
squid_maximum_object_size: "512 MB"
如果你想设置 cache_dir
,可以这样做。通常,Squid 缓存在内存中,但列出的默认值是为 squid-deb-proxy 准备的。
squid_cache_size
的单位为 MB,因此 40GB。
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
示例剧本
- hosts: proxies
vars:
squid_deb_proxy: true
squid_mirror_custom:
- .ftp.acc.umu.se
squid_cache_size: 8000
roles:
- vcc_caeit.squid
许可证
GPLv2
作者信息
本角色由 Nafallo Bjälevik 于 2018 年创建,期间为 福特汽车公司 提供咨询服务。