从 Azure CLI 应用 ansible playbook 时出现 Azure MSI token 问题

标签 azure ansible cloud token azure-managed-identity

我曾经在 Azure CLI 云 shell 中执行 ansible playbook。几年来一切都很好。上周我尝试执行 simpleansible-playbbok 并遇到如下错误:

`fatal: \[localhost\]: FAILED! =\> {"changed": false, "msg": "Failed to get MSI token: 'MSIAuthentication' object has no attribute 'get_token'. Please check whether your machine enabled MSI or grant access to any subscription."}`

之前 playbook 可以正确执行并创建对象。

剧本:

---
- name: Create Log Analytics Azure
  hosts: localhost
  connection: local
  gather_facts: false

  vars:
    resource_group_name: sandbox
    location: eastus
    workspace_name: loganalyticsforwaf

  tasks:
    - name: create Log Analytics workspace
      azure_rm_loganalyticsworkspace:
        resource_group: "{{ resource_group_name }}"
        name: "{{ workspace_name }}"
        location: "{{ location }}"
        sku: per_gb2018

我使用内置的 azure Cloud Shell 和默认的 ansible。过去几年我一直在使用它,一切都很好。我在几个不同的帐户上检查过 - 都是一样的。事情已经改变了…… 知道如何找到问题的根源吗?

谢谢!

我尝试使用 Ansibla playbook 创建 Azure 资源。

最佳答案

编辑:在 Github 中提出了一个问题 - https://github.com/ansible-collections/azure/issues/1183

经过测试并确认后续版本在某种程度上破坏了 MSI 工作流程。使用 azure_rm_keyvaultsecret_info 对此进行了测试以及,并得到相同的错误。

解决方法是恢复为 az.collection版本1.13.0 。大于或等于 1.14.0 的版本将出现此错误。

注意:还必须使 python 包与 v1.13.0 的要求文件保持一致。 IE。, 将 azcollection 恢复到 v1.13.0 后,您将需要安装关联的 python 包。

端到端指令恢复到 Azure Collection v1.13.0。

  • 第 1 步:安装集合 v1.13.0

    ansible-galaxy collection install azure.azcollection:1.13.0

    记下输出,它应该告诉已安装集合的路径 - 这将用于步骤 2。

  • 第 2 步:安装 v1.13.0 所需的 python 软件包

    pip install -r </path-to-azcollection>/requirements-azure.txt

    其中 </path-to-azcollection>是从步骤1的输出得到的

关于从 Azure CLI 应用 ansible playbook 时出现 Azure MSI token 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76155051/

相关文章:

deployment - IaaS 和 PaaS 云系统的 UML 部署图

azure - 归档 Azure VM 的最佳方式?

AzureRunAsConnection ApplicationId 和 CertificateThumbprint

ansible - 如何在 Ansible 中为特定任务或模块生成详细输出

git - 来自 Bitbucket.org 的 ansible-galaxy 和 git clone

java - heroku 应用程序中的端口和 url 错误

spring-boot - Spring Cloud Config Client - 无法解析占位符

azure - 为什么某些 Azure Eventhub 记录中有 2 个事件?

azure - 如何在 azure 管道中使用 AZURE cli 命令列出信息

ansible 条件检查项目的属性是否存在