geerlingguy.varnish
Ansible 角色: Varnish
在 RedHat/CentOS 或 Debian/Ubuntu Linux 上安装 Varnish HTTP Cache。
要求
在 RedHat/CentOS 上需要 EPEL 仓库(可以使用 geerlingguy.repo-epel
角色来安装)。
角色变量
可用变量列在下面,并附带默认值(请参见 defaults/main.yml
):
varnish_package_name: "varnish"
要安装的 Varnish 包名称。有关可用候选项的列表,请参见 apt-cache policy varnish
或 yum list varnish
。
varnish_version: "6.6"
要安装的 Varnish 版本。有关可用版本的列表,请参见 Varnish Cache packagecloud.io 仓库。一些示例包括: 6.6
、6.5
、6.4
、4.1
、3.0
和 2.1
。
varnish_config_path: /etc/varnish
Varnish 配置文件将存储的路径。
varnish_use_default_vcl: true
是否使用包含的(简单的)默认 Varnish VCL,使用接下来两个变量定义的后端主机/端口。如果希望使用更复杂的设置,请将此设置为 false
,并将自己的 default.vcl
文件复制到 varnish_config_path
。如果该变量设置为 true
,所有其他配置将来自 Varnish 自己的 默认 VCL。
varnish_default_vcl_template_path: default.vcl.j2
将被复制的默认 VCL 文件(如果 varnish_use_default_vcl
为 true
)。默认为 templates/default.vcl.j2
中的简单模板。该路径应相对于运行 playbook 的目录。
varnish_listen_address: ""
varnish_listen_port: "80"
Varnish 监听的地址和端口。默认情况下,Varnish 在所有接口上监听 80 端口,但可以根据需要指定地址和/或备用端口。
varnish_default_backend_host: "127.0.0.1"
varnish_default_backend_port: "8080"
将要复制到 varnish_config_path
文件夹中的默认 "default.vcl" 模板的一些设置。默认的后端主机/端口可以是运行在同一主机或其他主机上的 Apache 或 Nginx(在这种情况下,您可以使用 80 端口)。
varnish_limit_nofile: 131072
Varnish 尝试设置的 nofiles
PAM 限制。正常的默认值为 1024,这对 Varnish 的使用来说低得多。
varnish_secret: "14bac2e6-1e34-4770-8078-974373b76c90"
用于连接 Varnish 管理后端(例如清除请求等)的秘密/密钥。
varnish_admin_listen_host: "127.0.0.1"
varnish_admin_listen_port: "6082"
Varnish 将接受管理请求(如清除和状态请求)的主机和端口。
varnish_storage: "file,/var/lib/varnish/varnish_storage.bin,256M"
Varnish 存储缓存条目的方式(作为 -s
的参数传递)。如果要使用内存存储,可以改为使用 malloc,256M
。有关更多信息,请阅读 Varnish 的 入门指南。
varnish_pidfile: /run/varnishd.pid
Varnish PID 文件路径。如果不想使用 PID 文件,请将其设置为空字符串。
varnishd_extra_options: ""
启动 Varnish 守护进程时传递的额外选项或标志(例如 -p http_max_hdr=128
)。
varnish_enabled_services:
- varnish
在启动时将启动的服务,并且在角色完成后应继续运行。如果需要,可以添加其他服务,例如 varnishncsa
和 varnishlog
。如果设置为空数组,则不会在启动时启用任何服务。
varnish_packagecloud_repo_yum_repository_priority: "1"
(仅限 RedHat/CentOS)用于安装 Varnish 的 Packagecloud 仓库的 yum
优先级。显式设置此值将强制 yum 使用 Packagecloud 仓库来安装 Varnish,即使在其他仓库的优先级高于默认值的环境(例如 Amazon Linux)中也是如此。
varnish_apt_repo: deb https://packagecloud.io/varnishcache/{{ varnish_packagecloud_repo }}/{{ ansible_distribution | lower }}/ {{ ansible_distribution_release }} main
(仅限 Debian/Ubuntu)apt 仓库的 repo
。
varnish_yum_repo_baseurl: https://packagecloud.io/varnishcache/{{ varnish_packagecloud_repo }}/el/{{ ansible_distribution_major_version|int }}/$basearch
(仅限 RedHat/CentOS)yum 仓库的 baseurl
。
varnish_backends:
apache:
host: 10.0.2.2
port: 80
nodejs:
host: 10.0.2.3
port: 80
varnish_vhosts:
example.com:
backend: apache
nodejs.example.com:
backend: nodejs
您可以使用 varnish_backends
和 varnish_vhosts
变量配置多个后端(并将来自多个虚拟主机的流量定向到不同的后端)。如果您只使用一个后端(通过 varnish_default_backend_host
和 varnish_default_backend_port
定义),则无需定义这些变量。请勿在 vhosts
键中添加 www
,它会由 default.vcl.j2
VCL 模板自动添加。
依赖
无。
示例 Playbook
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- geerlingguy.varnish
在 vars/main.yml
中:
varnish_secret: "[由 uuidgen 生成的秘密]"
varnish_default_backend_port: 81
... 等等 ...
许可证
MIT / BSD
作者信息
该角色由 Jeff Geerling 创建于 2014 年,他是 Ansible for DevOps 的作者。
ansible-galaxy install geerlingguy.varnish