]>
Commit | Line | Data |
---|---|---|
030dd5c5 GD |
1 | - name: Create rundeck file list |
2 | find: | |
3 | path: "{{ rundeck_jobs_path }}" | |
2a67d04f | 4 | patterns: "*.yaml,*.yml" |
030dd5c5 GD |
5 | delegate_to: localhost |
6 | register: rundeck_jobs_files | |
7 | ||
8 | - name: Create rundeck jobs | |
9 | uri: | |
f69666a4 | 10 | url: "{{ rundeck_api_url }}/{{ rundeck_api_version }}/project/{{ rundeck_project }}/jobs/import" |
030dd5c5 GD |
11 | method: POST |
12 | return_content: true | |
13 | body_format: raw | |
14 | body: fileformat=yaml&dupeOption=update&xmlBatch={{ lookup('file', item.path) | urlencode }} | |
15 | headers: | |
16 | Accept: application/json | |
17 | Content-Type: application/x-www-form-urlencoded; charset=utf-8 | |
18 | X-Rundeck-Auth-Token: "{{ rundeck_api_token }}" | |
19 | register: rundeck_create_jobs | |
f69666a4 | 20 | with_items: "{{ rundeck_jobs_files.files }}" |
030dd5c5 | 21 | |
95a202dc GD |
22 | - name: Check if a job failed |
23 | fail: | |
24 | msg: "Job defined in {{ file }} has failed with message: {{ message }}" | |
25 | with_items: "{{ rundeck_create_jobs.results }}" | |
26 | loop_control: | |
27 | label: "{{ item.item.path }}" | |
28 | vars: | |
29 | file: "{{ item.item.path }}" | |
30 | message: "{{ item.json.failed }}" | |
31 | when: item.json.failed|length > 0 | |
32 | ignore_errors: "{{ rundeck_ignore_creation_error }}" | |
33 | ||
030dd5c5 GD |
34 | - name: Get all jobs |
35 | uri: | |
f69666a4 | 36 | url: "{{ rundeck_api_url }}/{{ rundeck_api_version }}/project/{{ rundeck_project }}/jobs?groupPathExact={{ rundeck_group_path }}" |
030dd5c5 GD |
37 | method: GET |
38 | headers: | |
39 | Accept: application/json | |
40 | X-Rundeck-Auth-Token: "{{ rundeck_api_token }}" | |
0435d3bf | 41 | vars: |
e43aa9af | 42 | rundeck_empty_group_path: '' |
f69666a4 | 43 | rundeck_group_path: "{{ rundeck_jobs_group | default(rundeck_empty_group_path) }}" |
030dd5c5 GD |
44 | register: rundeck_existing_jobs |
45 | when: rundeck_remove_missing | |
46 | ||
47 | - name: "Prepare list of jobs to remove" | |
48 | set_fact: | |
49 | rundeck_created_ids: "{{ rundeck_create_jobs.results | map(attribute='json') | map('json_query','succeeded[*].id') | flatten | list }}" | |
e43aa9af GD |
50 | rundeck_jobs_ids: "{{ rundeck_existing_jobs_list | map(attribute='id') | list }}" |
51 | vars: | |
52 | rundeck_existing_jobs_list_null: "{{ rundeck_existing_jobs.json | selectattr('group', 'none') | list }}" | |
53 | rundeck_existing_jobs_list: "{{ rundeck_jobs_group | default(false) | ternary(rundeck_existing_jobs.json, rundeck_existing_jobs_list_null) }}" | |
030dd5c5 GD |
54 | when: rundeck_remove_missing |
55 | ||
56 | - name: "Remove jobs not in the directory" | |
57 | uri: | |
f69666a4 | 58 | url: "{{ rundeck_api_url }}/{{ rundeck_api_version }}/job/{{ item }}" |
030dd5c5 GD |
59 | method: DELETE |
60 | headers: | |
61 | Accept: application/json | |
62 | X-Rundeck-Auth-Token: "{{ rundeck_api_token }}" | |
63 | status_code: [204] | |
64 | with_items: "{{ rundeck_jobs_ids | difference(rundeck_created_ids) }}" | |
65 | when: rundeck_remove_missing |