Role Variables
--------------
-
-* `kong_app_admin_url` the kong admin url (mandatory).
-* `kong_app_admin_apikey` the apikey to use kong admin api. Default to ""
-* `kong_services` an array of services to setup (default to [])
- * `name` the name of the service to create for this app, mandatory
- * `url` the url of the backend of the app, mandatory
- * `plugins` An array of plugins to activate with their name and config in a dict
- * `name`
- * `config`
- * `routes` An array of routes to create for this service.
- * `hosts`
- * `paths`
- * `protocols`
- * `methods`
+* `kong_servers`: an array of kong\_server to configure with followin configuration:
+ * `kong_app_admin_url` the kong admin url (mandatory).
+ * `kong_app_admin_apikey` the apikey to use kong admin api. Default to ""
+ * `kong_services` an array of services to setup (default to [])
+ * `name` the name of the service to create for this app, mandatory
+ * `url` the url of the backend of the app, mandatory
+ * `plugins` An array of plugins to activate with their name and config in a dict
+ * `name`
+ * `config`
+ * `routes` An array of routes to create for this service.
+ * `hosts`
+ * `paths`
+ * `protocols`
+ * `methods`
Dependencies
------------
---
-kong_app_admin_apikey: ""
-kong_services: []
+kong_servers: []
- name: Check if service exists
uri:
- url: "{{ kong_app_admin_url }}/services/{{ service.name }}"
+ url: "{{ server.kong_app_admin_url }}/services/{{ service.name }}"
method: GET
headers:
- apikey: "{{ kong_app_admin_apikey }}"
+ apikey: "{{ server.kong_app_admin_apikey }}"
status_code: 200,404
register: kong_app_check_service
- name: Update or Create service
uri:
- url: "{{ kong_app_admin_url }}/services/{{ exists_service | ternary('', service.name) }}"
+ url: "{{ server.kong_app_admin_url }}/services/{{ exists_service | ternary('', service.name) }}"
method: "{{ exists_service | ternary('POST', 'PATCH') }}"
body: "{{ service_body | to_json }}"
status_code: 200,201
headers:
- apikey: "{{ kong_app_admin_apikey }}"
+ apikey: "{{ server.kong_app_admin_apikey }}"
Content-Type: application/json
vars:
exists_service: "{{ kong_app_check_service.status|default(404) == 404 }}"
---
-- name: Include kong-app tasks
- include_tasks: kong-app.yml
+- name: Include kong server tasks
+ include_tasks: server.yml
tags:
- kong-app
- with_items: "{{ kong_services }}"
+ with_items: "{{ kong_servers }}"
loop_control:
- loop_var: service
+ loop_var: server
- name: Get plugins
uri:
- url: "{{ kong_app_admin_url }}/services/{{ service.name }}/plugins"
+ url: "{{ server.kong_app_admin_url }}/services/{{ service.name }}/plugins"
method: GET
validate_certs: no
headers:
- apikey: "{{ kong_app_admin_apikey }}"
+ apikey: "{{ server.kong_app_admin_apikey }}"
register: kong_app_service_plugins_check
- name: Setup plugin
uri:
- url: "{{ kong_app_admin_url }}/{{ exists_plugin | ternary('services/' ~ service.name ~ '/plugins','plugins/' ~ current_config.id) }}"
+ url: "{{ server.kong_app_admin_url }}/{{ exists_plugin | ternary('services/' ~ service.name ~ '/plugins','plugins/' ~ current_config.id) }}"
method: "{{ exists_plugin | ternary ('POST', 'PATCH') }}"
body: "{{ plugin | combine(current_body) | to_json }}"
headers:
- apikey: "{{ kong_app_admin_apikey }}"
+ apikey: "{{ server.kong_app_admin_apikey }}"
Content-Type: application/json
status_code: 200,201
with_items: "{{ service.plugins | default([]) }}"
- name: Get app routes
uri:
- url: "{{ kong_app_admin_url }}/services/{{ service.name }}/routes"
+ url: "{{ server.kong_app_admin_url }}/services/{{ service.name }}/routes"
method: GET
validate_certs: no
headers:
- apikey: "{{ kong_app_admin_apikey }}"
+ apikey: "{{ server.kong_app_admin_apikey }}"
register: kong_app_service_routes_check
- name: Setup route
uri:
- url: "{{ kong_app_admin_url }}/services/{{ service.name }}/routes"
+ url: "{{ server.kong_app_admin_url }}/services/{{ service.name }}/routes"
method: POST
body: "{{ route | to_json }}"
headers:
- apikey: "{{ kong_app_admin_apikey }}"
+ apikey: "{{ server.kong_app_admin_apikey }}"
Content-Type: application/json
status_code: 201
with_items: "{{ service.routes | default([]) }}"
- name: Delete old routes
uri:
- url: "{{ kong_app_admin_url }}/routes/{{ item.id }}"
+ url: "{{ server.kong_app_admin_url }}/routes/{{ item.id }}"
method: DELETE
headers:
- apikey: "{{ kong_app_admin_apikey }}"
+ apikey: "{{ server.kong_app_admin_apikey }}"
status_code: 204
with_items: "{{ kong_app_service_routes_check.json.data }}"
when: not kong_app_service_routes_check is skipped
--- /dev/null
+---
+- name: Include kong-app tasks
+ include_tasks: kong-app.yml
+ tags:
+ - kong-app
+ with_items: "{{ server.services }}"
+ loop_control:
+ loop_var: service