ansible-fastly

Módulo de Ansible para configurar servicios en Fastly
Instalación
$ ansible-galaxy install Jimdo.fastly
Documentación
Opciones del módulo
| Nombre |
Requerido |
Descripción |
Por defecto |
| name |
verdadero |
El nombre único para el servicio que se va a crear |
|
| fastly_api_key |
falso |
Clave de API de Fastly. Si no se establece, se utilizará el valor de la variable de entorno FASTLY_API_KEY. |
|
| activate_new_version |
falso |
Configura si las nuevas versiones creadas deben ser activadas automáticamente |
verdadero |
| domains |
verdadero |
Lista de nombres de dominio que servirán como puntos de entrada para su servicio |
|
| backends |
verdadero |
Lista de backends para atender las solicitudes de sus dominios |
|
| cache_settings |
falso |
Lista de configuraciones de caché |
|
| conditions |
falso |
Lista de condiciones |
|
| directors |
falso |
Lista de directores |
|
| gzips |
falso |
Lista de configuraciones gzip |
|
| headers |
falso |
Lista de encabezados a manipular para cada solicitud |
|
| healthchecks |
falso |
Lista de verificaciones de estado para el uso de backend |
|
| request_settings |
falso |
Lista de configuraciones de solicitud |
|
| response_objects |
falso |
Lista de objetos de respuesta |
|
| settings |
falso |
Objeto de configuraciones |
|
| s3s |
falso |
Lista de registradores S3 |
|
| syslogs |
falso |
Lista de registradores Syslog |
|
| vcl_snippets |
falso |
Lista de fragmentos VCL |
|
Backend
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| port |
falso |
entero |
80 |
| address |
verdadero |
cadena |
|
| ssl_hostname |
falso |
cadena |
|
| ssl_ca_cert |
falso |
cadena |
|
| ssl_cert_hostname |
falso |
cadena |
|
| shield |
falso |
cadena |
|
| healthcheck |
falso |
cadena |
|
| weight |
falso |
entero |
100 |
| connect_timeout |
falso |
entero |
1000 |
| first_byte_timeout |
falso |
entero |
15000 |
| between_bytes_timeout |
falso |
entero |
10000 |
| error_threshold |
falso |
entero |
0 |
| max_conn |
falso |
entero |
200 |
Configuraciones de Caché
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| action |
falso |
enum ('cache', 'pass', 'restart') |
|
| cache_condition |
falso |
cadena |
|
| stale_ttl |
falso |
entero |
0 |
Condición
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| comment |
falso |
cadena |
|
| priority |
falso |
entero |
0 |
| statement |
verdadero |
cadena |
|
| type |
verdadero |
enum ('REQUEST', 'PREFETCH', 'CACHE', 'RESPONSE') |
|
Director
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| backends |
falso |
arreglo de cadenas |
|
| capacity |
falso |
entero |
100 |
| comment |
falso |
cadena |
'' |
| quorum |
falso |
entero |
75 |
| shield |
falso |
cadena |
|
| type |
falso |
entero (uno de [1,2,3,4]) |
1 |
| retries |
falso |
entero |
5 |
Encabezado
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| action |
falso |
enum ('set', 'append', 'delete', 'regex', 'regex_repeat') |
set |
| dst |
verdadero |
cadena |
|
| ignore_if_set |
falso |
entero (uno de [0,1]) |
0 |
| priority |
falso |
entero |
100 |
| regex |
falso |
cadena |
|
| request_condition |
falso |
cadena |
|
| response_condition |
falso |
cadena |
|
| cache_condition |
falso |
cadena |
|
| src |
verdadero |
cadena |
|
| substitution |
falso |
cadena |
|
| type |
verdadero |
enum ('request', 'fetch', 'cache', 'response') |
|
Verificación de Estado
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| check_interval |
falso |
entero |
|
| comment |
falso |
cadena |
'' |
| expected_response |
falso |
entero |
200 |
| host |
verdadero |
cadena |
|
| http_version |
falso |
cadena |
1.1 |
| initial |
falso |
entero |
|
| method |
falso |
cadena |
HEAD |
| path |
falso |
cadena |
'/' |
| threshold |
falso |
entero |
|
| timeout |
falso |
entero |
|
| window |
falso |
entero |
|
Configuración de Solicitud
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| request_condition |
falso |
cadena |
|
| action |
falso |
enum ('lookup', 'pass') |
|
| xff |
falso |
enum ('clear', 'leave', 'append', 'append_all', 'overwrite') |
|
| hash_keys |
falso |
cadena |
|
| default_host |
falso |
cadena |
|
| max_stale_age |
falso |
entero |
0 |
| force_miss |
falso |
entero |
0 |
| force_ssl |
falso |
entero |
0 |
| timer_support |
falso |
entero |
0 |
| geo_headers |
falso |
entero |
0 |
| bypass_busy_wait |
falso |
entero |
0 |
Objeto de Respuesta
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| request_condition |
falso |
cadena |
|
| response |
falso |
cadena |
Ok |
| status |
falso |
entero |
200 |
| content |
falso |
cadena |
|
| content_type |
falso |
cadena |
|
Fragmentos VCL
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| dynamic |
falso |
entero |
0 |
| type |
falso |
cadena |
"init" |
| content |
verdadero |
cadena |
|
| priority |
falso |
entero |
100 |
Registro S3
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| access_key |
falso |
cadena |
|
| bucket_name |
falso |
cadena |
|
| domain |
falso |
cadena |
|
| format |
falso |
cadena |
%{%Y-%m-%dT%H:%M:%S}t %h "%r" %>s %b |
| format_version |
falso |
entero |
2 |
| gzip_level |
falso |
entero |
0 |
| message_type |
falso |
enum ('classic', 'loggly', 'logplex', 'blank') |
classic |
| path |
falso |
cadena |
/ |
| period |
falso |
entero |
3600 |
| placement |
falso |
cadena |
|
| redundancy |
falso |
cadena |
|
| response_condition |
falso |
cadena |
'' |
| secret_key |
falso |
cadena |
|
| server_side_encryption_kms_key_id |
falso |
cadena |
|
| server_side_encryption |
falso |
cadena |
|
| timestamp_format |
falso |
cadena |
%Y-%m-%dT%H |
Registro Syslog
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| name |
verdadero |
cadena |
|
| address |
verdadero |
cadena |
|
| format |
falso |
cadena |
%{%Y-%m-%dT%H:%M:%S}t %h "%r" %>s %b |
| format_version |
falso |
entero |
2 |
| hostname |
falso |
cadena |
|
| ipv4 |
falso |
cadena |
|
| message_type |
falso |
enum ('classic', 'loggly', 'logplex', 'blank') |
classic |
| placement |
falso |
cadena |
|
| port |
verdadero |
entero |
|
| response_condition |
falso |
cadena |
'' |
| tls_ca_cert |
falso |
cadena |
|
| tls_hostname |
falso |
cadena |
|
| token |
falso |
cadena |
|
| use_tls |
falso |
entero |
0 |
Configuraciones
Documentación de Fastly
| Campo |
Requerido |
Tipo |
Por defecto |
| general.default_ttl |
falso |
entero |
3600 |
Ejemplos
Usando el módulo fastly_service en un Playbook
---
- hosts: localhost
connection: local
gather_facts: False
roles:
- Jimdo.fastly
tasks:
- fastly_service:
name: Servicio de Redirección
domains:
- name: test1.example.net
comment: dominio de redirección
backends:
- name: localhost
port: 80
address: 127.0.0.1
headers:
- name: Establecer encabezado de ubicación
dst: http.Location
type: response
action: set
src: http://test3.example.net req.url.path
ignore_if_set: 0
priority: 10
response_objects:
- name: Establecer código de estado 301
status: 301
$ ansible-playbook -i localhost, fastly.yml
Desarrollo
Ejecutando las pruebas
FASTLY_API_KEY=some_secret python -m unittest discover tests
Actualizando las cintas de VCR
VCR.py se utiliza en las pruebas para simular solicitudes HTTP.
Para actualizar las cintas, simplemente elimine el directorio tests/fixtures/cassettes y ejecute las pruebas como de costumbre. Debe utilizar una clave API de Fastly válida para que la grabación funcione.