ivansible.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