使用Ansible URI触发ADO Pipeline时遭遇302错误求助
解决Ansible uri模块触发ADO流水线时的302重定向错误
问题分析
302错误本质是请求未通过ADO的认证校验,被重定向到登录页面。尽管你提到新token拥有完全权限,但代码中的认证配置存在格式错误与逻辑冲突,导致认证失败触发重定向。
修复步骤
修正Basic认证头格式
ADO的Basic认证要求将用户名:个人访问令牌(PAT)拼接后做Base64编码。用户名可以是任意非空字符串(比如你的邮箱),但必须和PAT组合后再编码,将编码结果替换到Authorization头中。移除重复的认证参数
代码中同时指定了user/password参数和Authorization头,这会导致uri模块重复处理认证逻辑,引发冲突。直接删除user和password这两个参数即可。允许跟随重定向
添加follow_redirects: all参数,让uri模块自动处理ADO可能的重定向请求,确保最终能获取到正常的200响应。二次验证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
相关产品推荐
相关产品推荐

