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

使用Ansible URI触发ADO Pipeline时遭遇302错误求助

解决Ansible uri模块触发ADO流水线时的302重定向错误

问题分析

302错误本质是请求未通过ADO的认证校验,被重定向到登录页面。尽管你提到新token拥有完全权限,但代码中的认证配置存在格式错误与逻辑冲突,导致认证失败触发重定向。

修复步骤

  1. 修正Basic认证头格式
    ADO的Basic认证要求将用户名:个人访问令牌(PAT)拼接后做Base64编码。用户名可以是任意非空字符串(比如你的邮箱),但必须和PAT组合后再编码,将编码结果替换到Authorization头中。

  2. 移除重复的认证参数
    代码中同时指定了user/password参数和Authorization头,这会导致uri模块重复处理认证逻辑,引发冲突。直接删除user和password这两个参数即可。

  3. 允许跟随重定向
    添加follow_redirects: all参数,让uri模块自动处理ADO可能的重定向请求,确保最终能获取到正常的200响应。

  4. 二次验证token权限
    确认你的PAT拥有目标项目的**Build (Execute)**权限,且令牌的作用域明确包含该项目(避免仅配置组织级权限但未分配到具体项目)。

修正后的示例代码

- hosts: localhost
  connection: local
  tasks:
    - name: Trigger az pipeline
      uri:
        url: "https://dev.azure.com/organization/project/_apis/pipelines/47/runs?api-version=6.1"
        method: POST
        body_format: json
        status_code: [200]
        return_content: true
        follow_redirects: all
        headers:
            Content-Type: "application/json"
            Accept: "application/json"
            Authorization: "Basic <base64编码的username:pat>"
        body: >-
            {
                "definition": {"id": 47},
                "stagesToSkip": ["DEV"] 
            }
      register: output
    - debug:
        var: output

额外提示

  • 可通过以下命令快速生成Base64编码的认证串(Linux/macOS环境):
    echo -n "username:your_pat_token" | base64
    
  • 若问题仍存在,可临时将status_code改为[200, 302],查看output中的重定向地址和响应内容,进一步定位认证异常细节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:15:28