Ansbile `uri` 模块中 HTTP 方法 LIST 的等效项是什么?

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

我正在尝试寻找与方法

LIST
的以下剧本代码等效的 HTTP 方法。

- name: List all folders
  ansible.builtin.uri:
    url: https://{{ My_vault_url }}
    method: LIST
    return_content: true
    body_format: json
  register: list_url

如果我尝试像

requests.list
那样,我会收到一个错误,指出
list
不是请求方法。

如果是自定义方法,我如何通过Python使用它?

python ansible python-requests ansible-2.x
1个回答
0
投票

Ansbile

LIST
模块中 HTTP 方法
uri
的等效项是什么?

当然可以使用 Ansible 与 Web 端点交互,但是根本没有 HTTP 方法

LIST
。只能使用
GET
来获取包含所有文件夹链接的页面内容,如果这是问题的话。

一个最小的示例手册

---
- hosts: localhost
  become: false
  gather_facts: false

  vars:

    URL: download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/

  tasks:

  - name: List all folders
    ansible.builtin.uri:
      url: https://{{ URL }}
      method: GET
      return_content: true
      body_format: raw
    register: response

  - name: Show Content
    debug:
      var: response.content

将产生

的输出
TASK [Show Content] ***********************************************************************
ok: [localhost] =>
  response.content: |-
    <html>
    <head><title>Index of /pub/rocky/9/BaseOS/x86_64/os/Packages/</title></head>
    <body>
    <h1>Index of /pub/rocky/9/BaseOS/x86_64/os/Packages/</h1><hr><pre><a href="../">../</a>
    <a href="a/">a/</a>                                                 11-Nov-2023 23:54                   -
    <a href="b/">b/</a>                                                 05-Apr-2024 06:41                   -
    <a href="c/">c/</a>                                                 06-Mar-2024 21:12                   -
    <a href="d/">d/</a>                                                 11-Nov-2023 23:54                   -
    <a href="e/">e/</a>                                                 26-Mar-2024 20:17                   -
    <a href="f/">f/</a>                                                 05-Apr-2024 06:41                   -
    <a href="g/">g/</a>                                                 05-Apr-2024 06:41                   -
    <a href="h/">h/</a>                                                 11-Nov-2023 23:54                   -
    <a href="i/">i/</a>                                                 06-Mar-2024 21:12                   -
    <a href="j/">j/</a>                                                 12-May-2023 04:58                   -
    <a href="k/">k/</a>                                                 05-Apr-2024 06:41                   -
    <a href="l/">l/</a>                                                 08-Apr-2024 21:46                   -
    <a href="m/">m/</a>                                                 15-Nov-2023 23:47                   -
    <a href="n/">n/</a>                                                 07-Mar-2024 22:24                   -
    <a href="o/">o/</a>                                                 08-Mar-2024 00:58                   -
    <a href="p/">p/</a>                                                 05-Apr-2024 06:41                   -
    <a href="q/">q/</a>                                                 12-May-2023 04:58                   -
    <a href="r/">r/</a>                                                 04-Apr-2024 02:27                   -
    <a href="s/">s/</a>                                                 12-Apr-2024 02:40                   -
    <a href="t/">t/</a>                                                 09-Feb-2024 01:21                   -
    <a href="u/">u/</a>                                                 11-Nov-2023 23:54                   -
    <a href="v/">v/</a>                                                 11-Nov-2023 23:54                   -
    <a href="w/">w/</a>                                                 11-Nov-2023 23:54                   -
    <a href="x/">x/</a>                                                 13-Dec-2023 04:16                   -
    <a href="y/">y/</a>                                                 11-Nov-2023 23:54                   -
    <a href="z/">z/</a>                                                 11-Nov-2023 23:54                   -
    </pre><hr></body>
    </html>

这需要事后解析。一种方法可能是

  - name: Show Links
    debug:
      msg: "{{ link }}"
    loop: "{{ response.content | split('\n') }}"
    loop_control:
      label: "Link"
    vars:
      link: "{{ item | regex_search('<a href=(.*?)</a>') }}"
    when: link | length > 0

产生

的输出
TASK [Show Links] ***************
ok: [localhost] => (item=Link) =>
  msg: <a href="../">../</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="a/">a/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="b/">b/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="c/">c/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="d/">d/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="e/">e/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="f/">f/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="g/">g/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="h/">h/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="i/">i/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="j/">j/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="k/">k/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="l/">l/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="m/">m/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="n/">n/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="o/">o/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="p/">p/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="q/">q/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="r/">r/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="s/">s/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="t/">t/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="u/">u/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="v/">v/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="w/">w/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="x/">x/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="y/">y/</a>
ok: [localhost] => (item=Link) =>
  msg: <a href="z/">z/</a>

感谢


如果我尝试像

requests.list
那样,我会收到一个错误,指出
.list
不是请求方法。

对了,是这样的。在Python Requests中没有这样的方法。

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