Ansible运行Azure虚拟机扩展模块出现check_invalid_arguments参数错误如何解决
问题根因
你遇到的报错是Ansible核心版本与azure.azure_modules集合版本不兼容导致的:低版本的Azure模块工具类azure_rm_common.py的构造函数不支持高版本Ansible核心自动传入的check_invalid_arguments参数。
解决方案
- 方案1:升级Azure Ansible集合到最新兼容版本
执行升级命令:
ansible-galaxy collection install azure.azcollection --force
安装完成后在playbook开头指定集合前缀即可兼容:
collections: - azure.azcollection
- 方案2:临时兼容适配(适合不能升级依赖的场景)
在对应任务的参数中添加check_invalid_arguments: false关闭参数校验,修改后的任务配置如下:
- name: create Azure vm extension to enable HTTPS WinRM listener azure_rm_virtualmachine_extension: name: "winrm-extension" resource_group: "{{ resource_group }}" virtual_machine_name: "{{ item.invocation.module_args.tags.hostname }}" publisher: Microsoft.Compute virtual_machine_extension_type: CustomScriptExtension type_handler_version: 1.9 settings: '{"commandToExecute": "powershell.exe -ExecutionPolicy ByPass -EncodedCommand {{winrm_enable_script}}"}' auto_upgrade_minor_version: true check_invalid_arguments: false with_items: "{{ azure_nic.results }}" loop_control: label: "{{ item.invocation.module_args.tags.hostname }}" register: azure_vm_ext
- 方案3:降级Ansible核心版本到2.9.x,该版本不会自动传入
check_invalid_arguments参数,和旧版Azure模块天然兼容。
内容的提问来源于stack exchange,提问作者user630702
相关产品推荐
相关产品推荐

