aboutsummaryrefslogtreecommitdiffhomepage
path: root/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'tasks')
-rw-r--r--tasks/kong-app.yml24
-rw-r--r--tasks/main.yml5
-rw-r--r--tasks/plugins.yml28
-rw-r--r--tasks/routes.yml32
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 }}"