ansible-fastly

Модуль Ansible для настройки сервисов в Fastly
Установка
$ ansible-galaxy install Jimdo.fastly
Документация
Опции модуля
| Название |
Обязательно |
Описание |
По умолчанию |
| name |
да |
Уникальное имя для создаваемого сервиса |
|
| fastly_api_key |
нет |
Ключ API Fastly. Если не указан, используется значение переменной окружения FASTLY_API_KEY. |
|
| activate_new_version |
нет |
Настройка автоматической активации вновь созданных версий |
true |
| domains |
да |
Список доменных имен, которые будут служить точками доступа для вашего сервиса |
|
| backends |
да |
Список бэкендов для обслуживания запросов от ваших доменов |
|
| cache_settings |
нет |
Список настроек кэша |
|
| conditions |
нет |
Список условий |
|
| directors |
нет |
Список директоров |
|
| gzips |
нет |
Список настроек gzip |
|
| headers |
нет |
Список заголовков для изменения для каждого запроса |
|
| healthchecks |
нет |
Список проверок работоспособности для бэкендов |
|
| request_settings |
нет |
Список настроек запросов |
|
| response_objects |
нет |
Список объектов ответов |
|
| settings |
нет |
Объект настроек |
|
| s3s |
нет |
Список логгеров S3 |
|
| syslogs |
нет |
Список логгеров Syslog |
|
| vcl_snippets |
нет |
Список фрагментов VCL |
|
Бэкенд
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| port |
нет |
целое число |
80 |
| address |
да |
строка |
|
| ssl_hostname |
нет |
строка |
|
| ssl_ca_cert |
нет |
строка |
|
| ssl_cert_hostname |
нет |
строка |
|
| shield |
нет |
строка |
|
| healthcheck |
нет |
строка |
|
| weight |
нет |
целое число |
100 |
| connect_timeout |
нет |
целое число |
1000 |
| first_byte_timeout |
нет |
целое число |
15000 |
| between_bytes_timeout |
нет |
целое число |
10000 |
| error_threshold |
нет |
целое число |
0 |
| max_conn |
нет |
целое число |
200 |
Настройки кэша
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| action |
нет |
перечисление ('cache', 'pass', 'restart') |
|
| cache_condition |
нет |
строка |
|
| stale_ttl |
нет |
целое число |
0 |
Условие
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| comment |
нет |
строка |
|
| priority |
нет |
целое число |
0 |
| statement |
да |
строка |
|
| type |
да |
перечисление ('REQUEST', 'PREFETCH', 'CACHE', 'RESPONSE') |
|
Директор
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| backends |
нет |
массив строк |
|
| capacity |
нет |
целое число |
100 |
| comment |
нет |
строка |
'' |
| quorum |
нет |
целое число |
75 |
| shield |
нет |
строка |
|
| type |
нет |
целое число (одно из [1,2,3,4]) |
1 |
| retries |
нет |
целое число |
5 |
Заголовок
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| action |
нет |
перечисление ('set', 'append', 'delete', 'regex', 'regex_repeat') |
set |
| dst |
да |
строка |
|
| ignore_if_set |
нет |
целое число (одно из [0,1]) |
0 |
| priority |
нет |
целое число |
100 |
| regex |
нет |
строка |
|
| request_condition |
нет |
строка |
|
| response_condition |
нет |
строка |
|
| cache_condition |
нет |
строка |
|
| src |
да |
строка |
|
| substitution |
нет |
строка |
|
| type |
да |
перечисление ('request', 'fetch', 'cache', 'response') |
|
Проверка состояния
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| check_interval |
нет |
целое число |
|
| comment |
нет |
строка |
'' |
| expected_response |
нет |
целое число |
200 |
| host |
да |
строка |
|
| http_version |
нет |
строка |
1.1 |
| initial |
нет |
целое число |
|
| method |
нет |
строка |
HEAD |
| path |
нет |
строка |
'/' |
| threshold |
нет |
целое число |
|
| timeout |
нет |
целое число |
|
| window |
нет |
целое число |
|
Настройка запроса
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| request_condition |
нет |
строка |
|
| action |
нет |
перечисление ('lookup', 'pass') |
|
| xff |
нет |
перечисление ('clear', 'leave', 'append', 'append_all', 'overwrite') |
|
| hash_keys |
нет |
строка |
|
| default_host |
нет |
строка |
|
| max_stale_age |
нет |
целое число |
0 |
| force_miss |
нет |
целое число |
0 |
| force_ssl |
нет |
целое число |
0 |
| timer_support |
нет |
целое число |
0 |
| geo_headers |
нет |
целое число |
0 |
| bypass_busy_wait |
нет |
целое число |
0 |
Объект ответа
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| request_condition |
нет |
строка |
|
| response |
нет |
строка |
Ok |
| status |
нет |
целое число |
200 |
| content |
нет |
строка |
|
| content_type |
нет |
строка |
|
Фрагменты VCL
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| dynamic |
нет |
целое число |
0 |
| type |
нет |
строка |
"init" |
| content |
да |
строка |
|
| priority |
нет |
целое число |
100 |
Логирование S3
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| access_key |
нет |
строка |
|
| bucket_name |
нет |
строка |
|
| domain |
нет |
строка |
|
| format |
нет |
строка |
%{%Y-%m-%dT%H:%M:%S}t %h "%r" %>s %b |
| format_version |
нет |
целое число |
2 |
| gzip_level |
нет |
целое число |
0 |
| message_type |
нет |
перечисление ('classic', 'loggly', 'logplex', 'blank') |
classic |
| path |
нет |
строка |
/ |
| period |
нет |
целое число |
3600 |
| placement |
нет |
строка |
|
| redundancy |
нет |
строка |
|
| response_condition |
нет |
строка |
'' |
| secret_key |
нет |
строка |
|
| server_side_encryption_kms_key_id |
нет |
строка |
|
| server_side_encryption |
нет |
строка |
|
| timestamp_format |
нет |
строка |
%Y-%m-%dT%H |
Логирование Syslog
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| name |
да |
строка |
|
| address |
да |
строка |
|
| format |
нет |
строка |
%{%Y-%m-%dT%H:%M:%S}t %h "%r" %>s %b |
| format_version |
нет |
целое число |
2 |
| hostname |
нет |
строка |
|
| ipv4 |
нет |
строка |
|
| message_type |
нет |
перечисление ('classic', 'loggly', 'logplex', 'blank') |
classic |
| placement |
нет |
строка |
|
| port |
да |
целое число |
|
| response_condition |
нет |
строка |
'' |
| tls_ca_cert |
нет |
строка |
|
| tls_hostname |
нет |
строка |
|
| token |
нет |
строка |
|
| use_tls |
нет |
целое число |
0 |
Настройки
Документация Fastly
| Поле |
Обязательно |
Тип |
По умолчанию |
| general.default_ttl |
нет |
целое число |
3600 |
Примеры
Использование модуля fastly_service в плейбуке
---
- hosts: localhost
connection: local
gather_facts: False
roles:
- Jimdo.fastly
tasks:
- fastly_service:
name: Redirect service
domains:
- name: test1.example.net
comment: redirect domain
backends:
- name: localhost
port: 80
address: 127.0.0.1
headers:
- name: Set Location header
dst: http.Location
type: response
action: set
src: http://test3.example.net req.url.path
ignore_if_set: 0
priority: 10
response_objects:
- name: Set 301 status code
status: 301
$ ansible-playbook -i localhost, fastly.yml
Разработка
Запуск тестов
FASTLY_API_KEY=some_secret python -m unittest discover tests
Обновление кассет VCR
VCR.py используется в тестах для имитации HTTP-запросов.
Чтобы обновить кассеты, просто удалите директорию tests/fixtures/cassettes и запустите тесты как обычно. Вам необходимо использовать действительный ключ API Fastly для корректной записи.