X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tasks%2Frundeck.yml;h=aa71570dd89307ccc7f24617ad75fe53b6f0aace;hb=refs%2Ftags%2Fv0.10;hp=78529990ebdf1ee2902aa1a51c666bba107d3bda;hpb=27709038652a4f377e46cbba559e5ed0e199f59e;p=github%2Ffretlink%2Fansible-rundeck-jobs.git diff --git a/tasks/rundeck.yml b/tasks/rundeck.yml index 7852999..aa71570 100644 --- a/tasks/rundeck.yml +++ b/tasks/rundeck.yml @@ -1,13 +1,13 @@ - name: Create rundeck file list find: path: "{{ rundeck_jobs_path }}" - patterns: "*.yaml" + patterns: "*.yaml,*.yml" delegate_to: localhost register: rundeck_jobs_files - name: Create rundeck jobs uri: - url: "{{rundeck_api_url }}/{{rundeck_api_version}}/project/{{ rundeck_project }}/jobs/import" + url: "{{ rundeck_api_url }}/{{ rundeck_api_version }}/project/{{ rundeck_project }}/jobs/import" method: POST return_content: true body_format: raw @@ -17,29 +17,45 @@ 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}}" + with_items: "{{ rundeck_jobs_files.files }}" + +- name: Check if a job failed + fail: + msg: "Job defined in {{ file }} has failed with message: {{ message }}" + with_items: "{{ rundeck_create_jobs.results }}" + loop_control: + label: "{{ item.item.path }}" + vars: + file: "{{ item.item.path }}" + message: "{{ item.json.failed }}" + when: item.json.failed|length > 0 + ignore_errors: "{{ rundeck_ignore_creation_error }}" - name: Get all jobs uri: - url: "{{rundeck_api_url }}/{{rundeck_api_version}}/project/{{ rundeck_project }}/jobs?groupPathExact={{ rundeck_jobs_group | default(rundeck_empty_group_path) }}" + url: "{{ rundeck_api_url }}/{{ rundeck_api_version }}/project/{{ rundeck_project }}/jobs?groupPathExact={{ rundeck_group_path }}" method: GET headers: Accept: application/json X-Rundeck-Auth-Token: "{{ rundeck_api_token }}" vars: - rundeck_empty_group_path: '""' + rundeck_empty_group_path: '' + rundeck_group_path: "{{ rundeck_jobs_group | default(rundeck_empty_group_path) }}" 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 }}" + rundeck_jobs_ids: "{{ rundeck_existing_jobs_list | map(attribute='id') | list }}" + vars: + rundeck_existing_jobs_list_null: "{{ rundeck_existing_jobs.json | selectattr('group', 'none') | list }}" + rundeck_existing_jobs_list: "{{ rundeck_jobs_group | default(false) | ternary(rundeck_existing_jobs.json, rundeck_existing_jobs_list_null) }}" when: rundeck_remove_missing - name: "Remove jobs not in the directory" uri: - url: "{{rundeck_api_url }}/{{rundeck_api_version}}/job/{{ item }}" + url: "{{ rundeck_api_url }}/{{ rundeck_api_version }}/job/{{ item }}" method: DELETE headers: Accept: application/json