From 030dd5c56410a21fc67e05e94f597c8bb255b7ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABtan=20Duchaussois?= Date: Wed, 12 Sep 2018 10:39:01 +0200 Subject: first working version --- tasks/main.yml | 5 +++++ tasks/rundeck.yml | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 tasks/main.yml create mode 100644 tasks/rundeck.yml (limited to 'tasks') diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..ece8bb9 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,5 @@ +--- +- name: Include rundesk tasks + include_tasks: rundeck.yml + tags: + - rundeck diff --git a/tasks/rundeck.yml b/tasks/rundeck.yml new file mode 100644 index 0000000..642abd6 --- /dev/null +++ b/tasks/rundeck.yml @@ -0,0 +1,47 @@ +- name: Create rundeck file list + find: + path: "{{ rundeck_jobs_path }}" + patterns: "*.yaml" + delegate_to: localhost + register: rundeck_jobs_files + +- name: Create rundeck jobs + uri: + url: "{{rundeck_api_url }}/{{rundeck_api_version}}/project/{{ rundeck_project }}/jobs/import" + method: POST + return_content: true + body_format: raw + body: fileformat=yaml&dupeOption=update&xmlBatch={{ lookup('file', item.path) | urlencode }} + headers: + Accept: application/json + Content-Type: application/x-www-form-urlencoded; charset=utf-8 + X-Rundeck-Auth-Token: "{{ rundeck_api_token }}" + register: rundeck_create_jobs + with_items: "{{ rundeck_jobs_files.files}}" + +- name: Get all jobs + uri: + url: "{{rundeck_api_url }}/{{rundeck_api_version}}/project/{{ rundeck_project }}/jobs" + method: GET + headers: + Accept: application/json + X-Rundeck-Auth-Token: "{{ rundeck_api_token }}" + register: rundeck_existing_jobs + when: rundeck_remove_missing + +- name: "Prepare list of jobs to remove" + set_fact: + rundeck_created_ids: "{{ rundeck_create_jobs.results | map(attribute='json') | map('json_query','succeeded[*].id') | flatten | list }}" + rundeck_jobs_ids: "{{ rundeck_existing_jobs.json | map(attribute='id') | list }}" + when: rundeck_remove_missing + +- name: "Remove jobs not in the directory" + uri: + url: "{{rundeck_api_url }}/{{rundeck_api_version}}/job/{{ item }}" + method: DELETE + headers: + Accept: application/json + X-Rundeck-Auth-Token: "{{ rundeck_api_token }}" + status_code: [204] + with_items: "{{ rundeck_jobs_ids | difference(rundeck_created_ids) }}" + when: rundeck_remove_missing -- cgit v1.2.3