diff options
Diffstat (limited to 'tasks')
-rw-r--r-- | tasks/kong-app.yml | 24 | ||||
-rw-r--r-- | tasks/main.yml | 5 | ||||
-rw-r--r-- | tasks/plugins.yml | 28 | ||||
-rw-r--r-- | tasks/routes.yml | 32 |
4 files changed, 89 insertions, 0 deletions
diff --git a/tasks/kong-app.yml b/tasks/kong-app.yml new file mode 100644 index 0000000..d50c193 --- /dev/null +++ b/tasks/kong-app.yml | |||
@@ -0,0 +1,24 @@ | |||
1 | - name: Check if service exists | ||
2 | uri: | ||
3 | url: "{{ kong_app_admin_url }}/services/{{ kong_app_service_name }}" | ||
4 | method: GET | ||
5 | headers: | ||
6 | apikey: "{{ kong_app_admin_apikey }}" | ||
7 | status_code: 200,404 | ||
8 | register: kong_app_check_service | ||
9 | |||
10 | #- name: Update or Create service | ||
11 | # uri: | ||
12 | # url: "{{ kong_app_admin_url }}/services/{{ kong_app_service_name }}" | ||
13 | # method: "{{ (kong_app_check_service.status_code == 404) | ternary ('POST', 'PATCH') }}" | ||
14 | # body: "{{ kong_app_service_body | to_json }}" | ||
15 | # headers: | ||
16 | # apikey: "{{ kong_app_admin_apikey }}" | ||
17 | # Content-Type: application/json | ||
18 | # status_code: 200,201 | ||
19 | |||
20 | - name: Setup plugins | ||
21 | import_tasks: plugins.yml | ||
22 | |||
23 | - name: Setup routes | ||
24 | import_tasks: routes.yml | ||
diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..4bb562f --- /dev/null +++ b/tasks/main.yml | |||
@@ -0,0 +1,5 @@ | |||
1 | --- | ||
2 | - name: Include kong-app tasks | ||
3 | import_tasks: kong-app.yml | ||
4 | tags: | ||
5 | - kong-app | ||
diff --git a/tasks/plugins.yml b/tasks/plugins.yml new file mode 100644 index 0000000..c8f165c --- /dev/null +++ b/tasks/plugins.yml | |||
@@ -0,0 +1,28 @@ | |||
1 | - name: Get plugins | ||
2 | uri: | ||
3 | url: "{{ kong_app_admin_url }}/services/{{ kong_app_service_name }}/plugins" | ||
4 | method: GET | ||
5 | validate_certs: no | ||
6 | register: kong_app_service_plugins_check | ||
7 | |||
8 | - name: Set plugins facts | ||
9 | set_fact: | ||
10 | kong_app_current_plugins: "{{ kong_app_service_plugins_check.json | default('{}') | from_json }}" | ||
11 | |||
12 | - name: Setup plugin {{ plugin.name }} | ||
13 | uri: | ||
14 | url: "{{ kong_app_admin_url }}/services/{{ kong_app_service_name }}/plugins" | ||
15 | method: "{{ (current_config == {}) | ternary ('POST', 'PATCH') }}" | ||
16 | body: "{{ plugin | combine(current_body) | to_json }}" | ||
17 | headers: | ||
18 | apikey: "{{ kong_app_admin_apikey }}" | ||
19 | Content-Type: application/json | ||
20 | status_code: 200,201 | ||
21 | with_items: "{{ kong_app_plugins }}" | ||
22 | loop_control: | ||
23 | loop_var: plugin | ||
24 | vars: | ||
25 | current_config: "{{ kong_app_current_plugins.data | selectattr('name', plugin.name) | first |default({}) }}" | ||
26 | current_id_hash: | ||
27 | id: "{{ current_config.id | default('')}}" | ||
28 | current_body: "{{ (current_id_hash.id == '') | ternary({}, current_id_hash) }}" | ||
diff --git a/tasks/routes.yml b/tasks/routes.yml new file mode 100644 index 0000000..1a9f6db --- /dev/null +++ b/tasks/routes.yml | |||
@@ -0,0 +1,32 @@ | |||
1 | - name: Get app routes | ||
2 | uri: | ||
3 | url: "{{ kong_app_admin_url }}/services/{{ kong_app_service_name }}/routes" | ||
4 | method: GET | ||
5 | validate_certs: no | ||
6 | register: kong_app_service_routes_check | ||
7 | |||
8 | - name: Set routes facts | ||
9 | set_fact: | ||
10 | kong_app_current_routes: "{{ kong_app_service_routes_check.json |default('{\"data\": []}') | from_json }}" | ||
11 | |||
12 | - name: Setup route | ||
13 | uri: | ||
14 | url: "{{ kong_app_admin_url }}/services/{{ kong_app_service_name }}/routes" | ||
15 | method: POST | ||
16 | body: "{{ route | to_json }}" | ||
17 | headers: | ||
18 | apikey: "{{ kong_app_admin_apikey }}" | ||
19 | Content-Type: application/json | ||
20 | status_code: 201 | ||
21 | with_items: "{{ kong_app_routes }}" | ||
22 | loop_control: | ||
23 | loop_var: route | ||
24 | |||
25 | - name: Delete old routes | ||
26 | uri: | ||
27 | url: "{{ kong_app_admin_url }}/services/routes/{{ item.id }}" | ||
28 | method: DELETE | ||
29 | headers: | ||
30 | apikey: "{{ kong_app_admin_apikey }}" | ||
31 | status_code: 204 | ||
32 | with_items: "{{ kong_app_current_routes.data }}" | ||