使用多个页面迭代 Ansible Tower API

问题描述

我需要为工作模板获取所有相关工作。 API 每页最多只能返回 200 个结果。
有没有人用 URI 模块处理过 API 分页
如何使用名为 page_number 的变量简单地迭代页数?

在我的代码下面:

- name: List related jobs for job template
  uri:
    url: http://localhost{{ api_for_job_template.json.related.jobs }}?page_size=200&page={{ page_number }}
    force_basic_auth: yes
    user: "{{ user }}"
    password: "{{ password }}"
    body_format: json
  register: jobs_info

解决方法

好的,我找到了一种获取所有页面的方法。 在一项任务中,我从 API 中获取作业数并将其除以每页返回的记录数。接下来在uri中使用“with_sequence”逐页迭代。只需要将其四舍五入并转换为 int。

- name: List related jobs for job template
  uri:
    url: http://localhost{{ api_for_job_template.json.related.jobs }}?page_size={{ page_size }}&page={{ item }}
    force_basic_auth: yes
    user: "{{ user }}"
    password: "{{ password }}"
    body_format: json
  register: jobs_info
  with_sequence: start=1 end="{{ end_at }}"
  vars:
    - end_at: "{{ ((jobs_count.json.count / 20) | round(0,'ceil')) | int }}"