从Azure CLI应用ansible playbook时的Azure MSI令牌问题

zpqajqem  于 2023-06-06  发布在  其他
关注(0)|答案(1)|浏览(195)

我曾经在Azure CLI Cloud 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

我使用buildin Azure Cloud Shell,默认使用Ansible。我过去几年一直在使用它,一切都很好。我查了几个不同的账户-都是一样的。有些事改变了。。你知道如何找到问题的根源吗?
谢谢你!
我尝试使用Ansibla playbook创建Azure资源。

d8tt03nd

d8tt03nd1#

编辑:在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的需求文件对齐。也就是说,一旦你将azcollection恢复到v1.13.0,你将需要安装相关的python包。

用于恢复到Azure Collection v1.13.0的End-end-end指令。

  • 步骤1:安装collection 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的输出获得的 *

相关问题