You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible任务中复用Python Requests生成的HTTP Session?

Ansible 任务复用 Python Requests 的 HTTP 会话

场景:

  • Web 服务登录流程复杂,涉及多次重定向,需通过 BeautifulSoup 完成表单抓取
  • 已有的 Python 脚本使用 Requests 模块的 Session 存储登录成功后的 token 与 cookie,用于后续 Web 服务 API 调用

期望实现目标:

  • Ansible 任务1:执行负责 Web 服务认证的 Python 脚本,将 HTTPS Session 返回给 Ansible
  • Ansible 任务2~n:使用 Ansible 内置的 uri 模块,复用前述获取的 HTTPS Session 调用 Web 服务 API

现有疑问:

  • 暂不清楚如何在 Ansible 中高效实现该逻辑,是否适合将整套认证 Python 脚本封装为 Ansible 模块?

简化版 Python 认证脚本示例:

def main():
    import requests

    # 为请求创建Session,所有cookie都会存储在该对象中
    https_session = requests.Session()

    if 'page_1' not in globals():
        page_1 = https_session.get(
            'https://login.test.com',
            allow_redirects=True
        )

    ...
    ...
    ...

    if 'redirect_8' not in globals():
        redirect_8 = https_session.post(
            'https://login.test.com/authenticate',
            allow_redirects=True,
        data = {
            "token": response_7['token']
            }
        )

    # 返回Cookie Jar
    return https_session.cookies


main()

Ansible 调用示例:

- name: test1
  script: login.py
  args:
        executable: python3
  environment:
        username: "{{ input_user }}"
        password: "{{ input_pwd }}"
  ignore_errors: yes
  register: login_test

- debug:
    msg: "{{ login_test }}.stdout"

Ansible 返回结果示例:

"
{
    "results": [
        {
            "changed": True,
            "rc": 0,
            "stdout": "<RequestsCookieJar[<Cookie TOKEN=wxyz-wxyz for .home.test.com/>, <Cookie USER_ID=123456789 for .home.test.com/>\n",
            "stdout_lines": [
                "<RequestsCookieJar[<Cookie TOKEN=wxyz-wxyz for .home.test.com/>, <Cookie USER_ID=123456789 for .home.test.com/>, "
            ],
            "stderr": "",
            "stderr_lines": [],
            "failed": False,
            "ansible_loop_var": "item",
        }
    ],
    "skipped": False,
    "changed": True,
    "msg": "All items completed",
}
.stdout"

内容的提问来源于stack exchange,提问作者seafre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:45:02