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_debiansquid_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 年创建,期间为 福特汽车公司 提供咨询服务。

关于项目

Squid for Ubuntu, with squid-deb-proxy support

安装
ansible-galaxy install vcc_caeit.squid
许可证
gpl-2.0
下载
15.6k
拥有者
The CAE IT team handles HPC clusters and Linux applications at Volvo Cars