* `kong_app_admin_url` the kong admin url (mandatory).
* `kong_app_admin_apikey` the apikey to use kong admin api. Default to ""
-* `kong_app_service_name` the nameof the service to create for this app, mandatory
-* `kong_app_service_url` the url of the backend of the app, mandatory
-* `kong_app_plugins` An array of plugins to activate with their name and config in a dict
- * `name`
- * `config`
-* `kong_app_routes` An array of routes to create for this app.
- * `hosts`
- * `paths`
- * `protocols`
- * `methods`
+* `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
------------
- hosts: localhost
roles:
- { role: kong-app, kong_app_admin_url: http://localhost:8001,
- kong_app_service_name: example,
- kong_app_service_url: http://example.com,
- kong_app_plugins: [],
- kong_app_routes: [ { hosts: [my.kong.example], paths: [/] } ]
+ kong_app_services: [ name:example,
+ url: http://example.com,
+ plugins: [],
+ routes: [ { hosts: [my.kong.example], paths: [/] } ]]
}
License
---
kong_app_admin_apikey: ""
-kong_app_plugins: []
-kong_app_routes: []
+kong_services: []
- name: Check if service exists
uri:
- url: "{{ kong_app_admin_url }}/services/{{ kong_app_service_name }}"
+ url: "{{ kong_app_admin_url }}/services/{{ service.name }}"
method: GET
headers:
apikey: "{{ kong_app_admin_apikey }}"
- name: Update or Create service
uri:
- url: "{{ kong_app_admin_url }}/services/{{ exists_service | ternary('', kong_app_service_name) }}"
+ url: "{{ kong_app_admin_url }}/services/{{ exists_service | ternary('', service.name) }}"
method: "{{ exists_service | ternary('POST', 'PATCH') }}"
- body: "{{ kong_app_service_body | to_json }}"
+ body: "{{ service_body | to_json }}"
status_code: 200,201
headers:
apikey: "{{ kong_app_admin_apikey }}"
Content-Type: application/json
vars:
exists_service: "{{ kong_app_check_service.status|default(404) == 404 }}"
+ service_body:
+ name: "{{ service.name }}"
+ url: "{{ service.url }}"
- name: Setup plugins
import_tasks: plugins.yml
---
- name: Include kong-app tasks
- import_tasks: kong-app.yml
+ include_tasks: kong-app.yml
tags:
- kong-app
+ with_items: "{{ kong_services }}"
+ loop_control:
+ loop_var: service
- name: Get plugins
uri:
- url: "{{ kong_app_admin_url }}/services/{{ kong_app_service_name }}/plugins"
+ url: "{{ kong_app_admin_url }}/services/{{ service.name }}/plugins"
method: GET
validate_certs: no
headers:
- name: Setup plugin
uri:
- url: "{{ kong_app_admin_url }}/{{ exists_plugin | ternary('services/' ~ kong_app_service_name ~ '/plugins','plugins/' ~ current_config.id) }}"
+ url: "{{ 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 }}"
Content-Type: application/json
status_code: 200,201
- with_items: "{{ kong_app_plugins }}"
+ with_items: "{{ service.plugins | default([]) }}"
loop_control:
loop_var: plugin
vars:
- name: Get app routes
uri:
- url: "{{ kong_app_admin_url }}/services/{{ kong_app_service_name }}/routes"
+ url: "{{ kong_app_admin_url }}/services/{{ service.name }}/routes"
method: GET
validate_certs: no
headers:
- name: Setup route
uri:
- url: "{{ kong_app_admin_url }}/services/{{ kong_app_service_name }}/routes"
+ url: "{{ kong_app_admin_url }}/services/{{ service.name }}/routes"
method: POST
body: "{{ route | to_json }}"
headers:
apikey: "{{ kong_app_admin_apikey }}"
Content-Type: application/json
status_code: 201
- with_items: "{{ kong_app_routes }}"
+ with_items: "{{ service.routes | default([]) }}"
loop_control:
loop_var: route
---
-kong_app_service_body:
- name: "{{ kong_app_service_name }}"
- url: "{{ kong_app_service_url }}"