Ansible读取Azure Key Vault密钥失败:azure_preview_modules版本识别异常
解决Ansible Azure预览模块版本误报与
azure_rm_keyvault_info模块报错问题 问题现象
- 运行依赖
azure.azure_preview_modules角色的Playbook时,角色提示Ansible版本低于2.5.0,但实际执行ansible --version显示版本为core 2.13.3 - 调用
azure_rm_keyvault_info模块时,抛出TypeError: AnsibleModule.__init__() got an unexpected keyword argument 'check_invalid_arguments'错误
解决步骤
一、修复版本检测误判问题
azure.azure_preview_modules角色的版本检测逻辑未适配Ansible Core的版本命名规则(2.10+版本改为core分支,版本号格式变化),导致误判。处理方式:
- 定位角色的版本检测文件:
~/.ansible/roles/azure.azure_preview_modules/tasks/assertions.yml - 修改版本判断逻辑,替换原有的
ansible_version.full判断为兼容core版本的规则:
应急情况下可直接注释掉该检测步骤,但不推荐长期使用。- name: Check Ansible version assert: that: - ansible_version.major >= 2 and (ansible_version.minor >=5 or ansible_version.major >2) fail_msg: "You need Ansible 2.5.0 or later"
二、修复azure_rm_keyvault_info模块参数错误
该错误源于模块使用了Ansible Core已废弃的check_invalid_arguments参数,处理方式:
- 强制升级
azure.azure_preview_modules到最新版本:ansible-galaxy install azure.azure_preview_modules --force - 若升级后问题仍存在,手动修改模块文件:
- 定位模块文件:
~/.ansible/roles/azure.azure_preview_modules/library/azure_rm_keyvault_info.py - 找到
AnsibleModule初始化代码行,删除其中的check_invalid_arguments参数,保存后重新运行Playbook。
- 定位模块文件:
三、长期替代方案:使用官方Azure集合模块
azure.azure_preview_modules已停止维护,微软官方推荐使用azure.azcollection替代,步骤如下:
- 卸载旧角色:
ansible-galaxy remove azure.azure_preview_modules - 安装官方集合:
ansible-galaxy collection install azure.azcollection - 安装Python依赖:
pip install azure-core azure-mgmt-keyvault azure-mgmt-resource - 修改Playbook,将模块引用改为
azure.azcollection.azure_rm_keyvault_info,并更新相关角色/集合引用格式。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

