geerlingguy.varnish
Ansibleロール: Varnish
RedHat/CentOSまたはDebian/Ubuntu LinuxにレバースプロキシキャッシュVarnishをインストールします。
必要条件
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
内のシンプルなテンプレートになります。このパスは、プレイブックを実行するディレクトリからの相対パスである必要があります。
varnish_listen_address: ""
varnish_listen_port: "80"
Varnishがリッスンするアドレスとポート。デフォルトではポート80のすべてのインターフェースでリッスンしますが、必要に応じて指定できます。
varnish_default_backend_host: "127.0.0.1"
varnish_default_backend_port: "8080"
varnish_config_path
フォルダーにコピーされる「default.vcl」のデフォルト設定です。デフォルトのバックエンドホスト/ポートは、同じホスト上で稼働するApacheやNginx(あるいは他のHTTPサーバー)である場合に使用されます。
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
優先度。これを明示的に設定することで、他のリポジトリの優先度がデフォルトより高い環境(例:Amazon Linux)でも、yumがPackagecloudリポジトリを使用してVarnishをインストールするようになります。
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テンプレートで自動的に追加されます。
依存関係
なし。
例プレイブック
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- geerlingguy.varnish
vars/main.yml
内:
varnish_secret: "[uuidgenによって生成された秘密]"
varnish_default_backend_port: 81
... その他 ...
ライセンス
MIT / BSD
著者情報
このロールは2014年にJeff Geerlingによって作成されました。彼はAnsible for DevOpsの著者です。
Varnish for Linux.
ansible-galaxy install geerlingguy.varnish