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

通过Azure CLI执行Ansible Playbook时出现MSI令牌获取失败问题

排查步骤

1. 核查依赖版本兼容性

这个错误大概率是Azure SDK依赖包与Ansible Azure集合版本不匹配导致的:

  • 执行以下命令查看当前版本:
    ansible --version
    pip show azure-core azure-identity ansible-collection-azure
    
  • 重点关注azure-identity和ansible-collection-azure的版本:旧版Azure Ansible集合依赖特定版本的azure-identity,如果Cloud Shell自动更新了其中一方,就会出现API不兼容(比如MSIAuthentication类的get_token方法被移除或重命名)。

2. 手动验证MSI功能

排除MSI服务本身的问题:

  • 在Cloud Shell中执行以下命令手动获取MSI token:
    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true
    
  • 如果能正常返回包含access_token的JSON,说明MSI服务正常;如果返回错误,联系Azure支持排查Cloud Shell的MSI配置。

3. 强制安装兼容的依赖版本

如果确认是版本不兼容,临时指定兼容版本修复:

  • 安装与当前Ansible Azure集合匹配的azure-identity版本(例如1.12.0是兼容性较高的版本):
    pip install --user azure-identity==1.12.0
    
  • 重新运行Playbook测试。

4. 显式指定认证方式

确保Playbook明确使用MSI认证:

  • 在模块参数中添加auth_source: msi,修改后的任务如下:
    - name: create Log Analytics workspace
      azure_rm_loganalyticsworkspace:
        resource_group: "{{ resource_group_name }}"
        name: "{{ workspace_name }}"
        location: "{{ location }}"
        sku: per_gb2018
        auth_source: msi
    

5. 确认Cloud Shell订阅上下文

虽然多个账户出现问题,仍需确认当前订阅状态:

  • 执行az account show查看当前激活的订阅,确保该订阅下MSI有足够权限创建Log Analytics工作区(不过多账户都出问题的话,此步骤优先级较低)。

内容的提问来源于stack exchange,提问作者Bartłomiej Janik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:07:17