我不熟悉Ansible且苦苦挣扎的脚本。
在第一个任务中,如果目标作业能够终止,请执行查询。在任务2中,执行另一个查询以终止满足条件的作业。但是,任务1和任务2是顺序执行的,因此我没有解决方案来组合使用job_id_list
和query_result
中存储的值。
# task1
- name: Check the status of specific jobs
become: true
become_user: postgres
shell: psql -t -database -c "select count(*) from table_a a inner join table_b b on b.job_id = a.job_id where b.job_id={{ item }} and b.submitted_date > CURRENT_TIMESTAMP - interval '10 minutes';"
with_items: {{ job_id_list }}
register: query_result
# task2
- name: kill job when the result of task1 is 0
shell: psql -t database -c "update table_b set status='TERMINATED' where job_id={{ XXX }};" # here I struggle...
with_items: {{ query_result }}
become: true
become_user: postgres
when: query_result.stdout|int = 0
我不熟悉Ansible且苦苦挣扎的脚本。在第一个任务中,如果目标作业能够终止,请执行查询。在任务2中,执行另一个查询以终止...
您有job_id_list
,这是您在任务#1中迭代的项目列表。查询数据库后,您会返回count(*)
,该数据库返回该job_id的编号计数。在Task#2中,您要遍历查询结果,查询结果是一个数字或一个数字列表(职位数),并且此处没有job_id。您必须遍历相同的列表job_id_list
,但仅当query_result
为0时才能使job_id
可用。希望对您有所帮助!