我曾经在 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/