commit
671b2346fb
7 changed files with 312 additions and 0 deletions
@ -0,0 +1,4 @@ |
|||||
|
*.retry |
||||
|
*.crt |
||||
|
*.csr |
||||
|
*.key |
||||
@ -0,0 +1,43 @@ |
|||||
|
{ |
||||
|
"services": [ |
||||
|
{ |
||||
|
"id": 1234, |
||||
|
"backend_version": 1, |
||||
|
"proxy": { |
||||
|
"api_backend": "http://127.0.0.1:8081", |
||||
|
"hostname_rewrite": "echo", |
||||
|
"hosts": [ |
||||
|
"localhost", |
||||
|
"127.0.0.1" |
||||
|
], |
||||
|
"backend": { |
||||
|
"endpoint": "http://127.0.0.1:8081", |
||||
|
"host": "echo" |
||||
|
}, |
||||
|
"policy_chain": [ |
||||
|
{ "name": "apicast.policy.apicast" } |
||||
|
], |
||||
|
"proxy_rules": [ |
||||
|
{ |
||||
|
"http_method": "GET", |
||||
|
"pattern": "/", |
||||
|
"metric_system_name": "hits", |
||||
|
"delta": 1 |
||||
|
}, |
||||
|
{ |
||||
|
"http_method": "POST", |
||||
|
"pattern": "/", |
||||
|
"metric_system_name": "hits", |
||||
|
"delta": 1 |
||||
|
}, |
||||
|
{ |
||||
|
"http_method": "PUT", |
||||
|
"pattern": "/", |
||||
|
"metric_system_name": "hits", |
||||
|
"delta": 1 |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,35 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Deploy an APIcast gateway with the Echo API |
||||
|
gather_facts: no |
||||
|
hosts: localhost |
||||
|
tasks: |
||||
|
- name: Deploy APIcast |
||||
|
docker_container: |
||||
|
name: apicast-hello-world |
||||
|
image: quay.io/3scale/apicast:v3.3.0 |
||||
|
volumes: |
||||
|
- '{{ playbook_dir }}/config:/config:ro' |
||||
|
env: |
||||
|
THREESCALE_CONFIG_FILE: /config/apicast.conf |
||||
|
ports: |
||||
|
- 8080:8080 |
||||
|
cleanup: yes |
||||
|
detach: yes |
||||
|
state: started |
||||
|
|
||||
|
- name: Wait for APIcast to start |
||||
|
pause: |
||||
|
seconds: 5 |
||||
|
|
||||
|
- name: Ensure the Echo API is working |
||||
|
uri: |
||||
|
url: http://localhost:8080/?user_key=dummy |
||||
|
method: GET |
||||
|
timeout: 5 |
||||
|
status_code: 200 |
||||
|
|
||||
|
- name: Delete APIcast |
||||
|
docker_container: |
||||
|
name: apicast-hello-world |
||||
|
state: absent |
||||
@ -0,0 +1,71 @@ |
|||||
|
{ |
||||
|
"services": [ |
||||
|
{ |
||||
|
"id": 123, |
||||
|
"backend_version": 1, |
||||
|
"proxy": { |
||||
|
"api_backend": "http://127.0.0.1:8081", |
||||
|
"hostname_rewrite": "echo", |
||||
|
"hosts": [ |
||||
|
"localhost" |
||||
|
], |
||||
|
"backend": { |
||||
|
"endpoint": "http://127.0.0.1:8081", |
||||
|
"host": "echo" |
||||
|
}, |
||||
|
"policy_chain": [ |
||||
|
{ "name": "apicast.policy.apicast" }, |
||||
|
{ |
||||
|
"name": "apicast.policy.headers", |
||||
|
"configuration": { |
||||
|
"response": [ |
||||
|
{ "op": "set", "header": "X-SVC", "value": "svc1" } |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
], |
||||
|
"proxy_rules": [ |
||||
|
{ |
||||
|
"http_method": "GET", |
||||
|
"pattern": "/svc1", |
||||
|
"metric_system_name": "hits", |
||||
|
"delta": 1 |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
}, { |
||||
|
"id": 456, |
||||
|
"backend_version": 1, |
||||
|
"proxy": { |
||||
|
"api_backend": "http://127.0.0.1:8081", |
||||
|
"hostname_rewrite": "echo", |
||||
|
"hosts": [ |
||||
|
"localhost" |
||||
|
], |
||||
|
"backend": { |
||||
|
"endpoint": "http://127.0.0.1:8081", |
||||
|
"host": "echo" |
||||
|
}, |
||||
|
"policy_chain": [ |
||||
|
{ "name": "apicast.policy.apicast" }, |
||||
|
{ |
||||
|
"name": "apicast.policy.headers", |
||||
|
"configuration": { |
||||
|
"response": [ |
||||
|
{ "op": "set", "header": "X-SVC", "value": "svc2" } |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
], |
||||
|
"proxy_rules": [ |
||||
|
{ |
||||
|
"http_method": "GET", |
||||
|
"pattern": "/svc2", |
||||
|
"metric_system_name": "hits", |
||||
|
"delta": 1 |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,55 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Deploy an APIcast gateway with Path Routing enabled |
||||
|
gather_facts: no |
||||
|
hosts: localhost |
||||
|
tasks: |
||||
|
- name: Deploy APIcast |
||||
|
docker_container: |
||||
|
name: apicast-path-routing |
||||
|
image: quay.io/3scale/apicast:v3.3.0 |
||||
|
volumes: |
||||
|
- '{{ playbook_dir }}/config:/config:ro' |
||||
|
env: |
||||
|
THREESCALE_CONFIG_FILE: /config/apicast.conf |
||||
|
APICAST_PATH_ROUTING: 'true' |
||||
|
ports: |
||||
|
- 8080:8080 |
||||
|
cleanup: yes |
||||
|
detach: yes |
||||
|
state: started |
||||
|
|
||||
|
- name: Wait for APIcast to start |
||||
|
pause: |
||||
|
seconds: 5 |
||||
|
|
||||
|
- name: Ensure Service1 is working |
||||
|
uri: |
||||
|
url: http://localhost:8080/svc1?user_key=dummy |
||||
|
method: GET |
||||
|
timeout: 5 |
||||
|
status_code: 200 |
||||
|
register: response |
||||
|
|
||||
|
- name: The X-SVC HTTP header must be equal to "svc1" |
||||
|
assert: |
||||
|
that: |
||||
|
- response.x_svc == 'svc1' |
||||
|
|
||||
|
- name: Ensure Service2 is working |
||||
|
uri: |
||||
|
url: http://localhost:8080/svc2?user_key=dummy |
||||
|
method: GET |
||||
|
timeout: 5 |
||||
|
status_code: 200 |
||||
|
register: response |
||||
|
|
||||
|
- name: The X-SVC HTTP header must be equal to "svc2" |
||||
|
assert: |
||||
|
that: |
||||
|
- response.x_svc == 'svc2' |
||||
|
|
||||
|
- name: Delete APIcast |
||||
|
docker_container: |
||||
|
name: apicast-path-routing |
||||
|
state: absent |
||||
@ -0,0 +1,43 @@ |
|||||
|
{ |
||||
|
"services": [ |
||||
|
{ |
||||
|
"id": 1234, |
||||
|
"backend_version": 1, |
||||
|
"proxy": { |
||||
|
"api_backend": "http://127.0.0.1:8081", |
||||
|
"hostname_rewrite": "echo", |
||||
|
"hosts": [ |
||||
|
"localhost", |
||||
|
"127.0.0.1" |
||||
|
], |
||||
|
"backend": { |
||||
|
"endpoint": "http://127.0.0.1:8081", |
||||
|
"host": "echo" |
||||
|
}, |
||||
|
"policy_chain": [ |
||||
|
{ "name": "apicast.policy.apicast" } |
||||
|
], |
||||
|
"proxy_rules": [ |
||||
|
{ |
||||
|
"http_method": "GET", |
||||
|
"pattern": "/", |
||||
|
"metric_system_name": "hits", |
||||
|
"delta": 1 |
||||
|
}, |
||||
|
{ |
||||
|
"http_method": "POST", |
||||
|
"pattern": "/", |
||||
|
"metric_system_name": "hits", |
||||
|
"delta": 1 |
||||
|
}, |
||||
|
{ |
||||
|
"http_method": "PUT", |
||||
|
"pattern": "/", |
||||
|
"metric_system_name": "hits", |
||||
|
"delta": 1 |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
} |
||||
|
] |
||||
|
} |
||||
@ -0,0 +1,61 @@ |
|||||
|
--- |
||||
|
|
||||
|
- name: Deploy an APIcast gateway with HTTPS |
||||
|
gather_facts: no |
||||
|
hosts: localhost |
||||
|
tasks: |
||||
|
- name: Generate a private key |
||||
|
openssl_privatekey: |
||||
|
path: '{{ playbook_dir }}/config/tls.key' |
||||
|
size: 1024 |
||||
|
state: present |
||||
|
|
||||
|
- name: Generate a CSR |
||||
|
openssl_csr: |
||||
|
path: '{{ playbook_dir }}/config/tls.csr' |
||||
|
privatekey_path: '{{ playbook_dir }}/config/tls.key' |
||||
|
common_name: localhost |
||||
|
subject_alt_name: 'DNS:localhost' |
||||
|
state: present |
||||
|
|
||||
|
- name: Generate a self-signed certificate |
||||
|
openssl_certificate: |
||||
|
path: '{{ playbook_dir }}/config/tls.crt' |
||||
|
privatekey_path: '{{ playbook_dir }}/config/tls.key' |
||||
|
csr_path: '{{ playbook_dir }}/config/tls.csr' |
||||
|
provider: selfsigned |
||||
|
state: present |
||||
|
|
||||
|
- name: Deploy APIcast |
||||
|
docker_container: |
||||
|
name: apicast-https |
||||
|
image: quay.io/3scale/apicast:v3.3.0 |
||||
|
volumes: |
||||
|
- '{{ playbook_dir }}/config:/config:ro' |
||||
|
env: |
||||
|
THREESCALE_CONFIG_FILE: /config/apicast.conf |
||||
|
APICAST_HTTPS_PORT: 8443 |
||||
|
APICAST_HTTPS_CERTIFICATE: /config/tls.crt |
||||
|
APICAST_HTTPS_CERTIFICATE_KEY: /config/tls.key |
||||
|
ports: |
||||
|
- 8443:8443 |
||||
|
cleanup: yes |
||||
|
detach: yes |
||||
|
state: started |
||||
|
|
||||
|
- name: Wait for APIcast to start |
||||
|
pause: |
||||
|
seconds: 5 |
||||
|
|
||||
|
- name: Ensure the Echo API is working |
||||
|
uri: |
||||
|
url: https://localhost:8443/?user_key=dummy |
||||
|
method: GET |
||||
|
timeout: 5 |
||||
|
status_code: 200 |
||||
|
validate_certs: no |
||||
|
|
||||
|
- name: Delete APIcast |
||||
|
docker_container: |
||||
|
name: apicast-https |
||||
|
state: absent |
||||
Loading…
Reference in new issue