如何使用其他列表项编写循环?

问题描述 投票:0回答:1

我不熟悉Ansible且苦苦挣扎的脚本。

在第一个任务中,如果目标作业能够终止,请执行查询。在任务2中,执行另一个查询以终止满足条件的作业。但是,任务1和任务2是顺序执行的,因此我没有解决方案来组合使用job_id_listquery_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中,执行另一个查询以终止...

ansible
1个回答
1
投票

您有job_id_list,这是您在任务#1中迭代的项目列表。查询数据库后,您会返回count(*),该数据库返回该job_id的编号计数。在Task#2中,您要遍历查询结果,查询结果是一个数字或一个数字列表(职位数),并且此处没有job_id。您必须遍历相同的列表job_id_list,但仅当query_result为0时才能使job_id可用。希望对您有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.