srv_cdn
ivansible.srv_cdn
Эта роль настраивает простой CDN на основе nginx.
Любой запрос CDN может иметь несколько необязательных HTTP заголовков:
X-CDN-Front
- желаемое имя фронтального хоста, по умолчанию используется имя хоста из запроса.X-CDN-Host
- желаемое имя сервера, определяет источник, по умолчанию$cdn_front
.X-CDN-Back
- желаемое имя хоста источника, необязательный заголовок, переопределяет источник.
Требования
Нет
Переменные
Доступные переменные перечислены ниже, вместе с их значениями по умолчанию.
srv_cdn_sites:
- server: .mydomain.com
origin: www.example.com
lecert: mydomain.com
Основной список сайтов содержит записи со следующими полями:
server
- имя фронтального сервера, может бытьfull.host.name
или.domain.name
(обязательно);origin
- имя хоста сервера-источника, который должен поддерживать https (обязательно);lecert
- имя пользовательского сертификата letsencrypt для сервера (необязательно);hidden
- если true, сопоставление сервер-источник определено, но имя сервера пропускается (необязательно, по умолчаниюfalse
).
srv_cdn_default_origin: example.com
Резервный источник.
srv_cdn_cloudflare:
- zone: example.com
name: {{ inventory_hostname }}
type: AAAA
value: {{ ansible_default_ipv6.address }}
proxied: false
Список записей Cloudflare для каждого хоста имеет следующие поля:
zone
- зона для записи (обязательно);name
- имя записи (обычно неквалифицированное имя хоста), обязательно;type
- тип записи, один из: A AAAA CNAME и т.д. (обязательно);value
- необязательное значение, запись будет пропущена, если это пусто или имеет ложное значение;proxied
- true или false, по умолчаниюfalse
.
srv_cdn_cloudflare_email: ~
srv_cdn_cloudflare_token: ~
Учетные данные CloudFlare. Если эти настройки пусты, ложны или неопределены, то задачи Cloudflare будут пропущены.
srv_cdn_cloudfront:
- server: www.mydomain.com
reference: www.mydomain.com_cdn1
origin: override.example.com
lecert: mydomain.com
cache: false
Этот массив настраивает распределения CloudFront CDN с полными веб-адресами
такими как cloudfront -> server -> origin
, где каждая запись имеет поля:
server
- имя фронтального сервера, соответствующее записи из списка сайтов выше (обязательно);origin
- необязательный, переопределяетorigin
из списка сайтов выше;reference
- уникальный идентификатор cloudfront (необязательно, по умолчанию соответствует имени сервера с суффиксом);lecert
- имя пользовательского сертификата letsencrypt для сервера (необязательно);cache
-false
отключает кэширование cloudfront,true
- включает его (необязательно, по умолчаниюsrv_cdn_cloudfront_default_cache
);delete
- если true, распределение будет удалено вместо создания/обновления (необязательно, по умолчаниюfalse
).
srv_cdn_cloudfront_default_reference: SERVER_cdn
Имя по умолчанию для ссылки на распределение (SERVER
заменяется на фактическое имя сервера).
srv_cdn_filters:
- src: ...
dst: ...
Эти замены будут применены к HTML.
srv_cdn_cloudfront_max_ttl: 2592000 # один месяц
srv_cdn_cloudfront_default_ttl: 86400 # один день
srv_cdn_cloudfront_cached_methods: [GET, HEAD]
srv_cdn_cloudfront_default_cache: true
Разные настройки по умолчанию для кэширования CloudFront.
srv_cdn_cloudfront_access_key: ~
srv_cdn_cloudfront_secret_key: ~
Учетные данные Amazon CloudFront, обязательные если в srv_cdn_cloudfront
есть записи,
другие - необязательные. Если эти настройки пусты или неопределены, по умолчанию используются
переменные среды AWS_ACCESS_KEY_ID
и AWS_SECRET_ACCESS_KEY
на хосте контроллера ansible.
Теги
srv_cdn_cloudflare
- настраивает DNS записи в CloudFlaresrv_cdn_cloudfront
- настраивает распределения CloudFrontsrv_cdn_nginx
- настраивает сайты CDN и сопоставления в nginxsrv_cdn_nginx_site
- настраивает общие настройки сайта CDN в nginxsrv_cdn_all
- все вышеперечисленные
Зависимости
ivansible.nginx_base
- наследует настройки по умолчанию и обработчикиivansible.lin_nginx
(неявная зависимость)
Пример Playbook
- hosts: myserver
roles:
- role: ivansible.srv_cdn
Лицензия
MIT
Информация об авторе
Создан в 2020-2021 году IvanSible
ansible-galaxy install ivansible/srv-cdn