Ansible自动化平台中Azure资产同步失败问题求助
解决AAP同步Azure主机时的
azure_rm.yml解析错误 一、azure_rm.yml的定位与作用
- 这是Ansible Azure动态inventory的核心配置文件,用来定义从Azure订阅筛选、导入主机的规则(比如按资源组、标签、虚拟机状态过滤)。
- 在AAP环境中:
- 若用Git仓库作为inventory来源,该文件必须放在同步的Git仓库内(和
requirements.yml同目录或指定的inventory路径下); - 若直接在AAP UI配置“Microsoft Azure Resource Manager”类型资产,无需手动创建该文件——AAP会自动生成临时配置,但如果手动添加了来源变量,必须保证参数格式正确。
- 若用Git仓库作为inventory来源,该文件必须放在同步的Git仓库内(和
二、azure_rm.yml的基础配置模板
以下是可直接复用的配置,可根据需求调整筛选规则:
plugin: azure.azcollection.azure_rm # 可选:指定要导入的虚拟机所在资源组,留空则导入所有资源组的虚拟机 include_vm_resource_groups: - prod-resource-group - test-resource-group auth_source: auto subscription_id: "你的Azure订阅ID" # 可选:按标签筛选主机 tags: env: production # 可选:只导入运行状态的虚拟机 powerstate: running # 可选:设置主机名取值(公网IP/私网IP/虚拟机名称) hostname: public_ip_address
plugin字段必须和你在AAP来源变量中配置的azure.azcollection.azure_rm完全一致;auth_source: auto会自动读取AAP中配置的Azure凭据,无需在文件中明文写密钥;- 不需要的筛选规则可直接删除,比如不需要标签过滤就删掉
tags块。
三、文件存放与AAP配置匹配
Git仓库来源场景
- 将
azure_rm.yml放在Git仓库的inventory目录下(比如仓库根目录,或inventory/azure_rm.yml); - 在AAP的Inventory来源配置中,把“Inventory file or directory”设为该文件的路径(比如
./azure_rm.yml); - 确认Git仓库的
requirements.yml已包含azure.azcollection,且AAP已同步成功。
AAP原生Azure资产场景
- 若直接在AAP UI创建“Microsoft Azure Resource Manager”资产,无需手动创建
azure_rm.yml; - 检查“来源变量”中的配置,只保留必要参数即可,例如:
plugin: azure.azcollection.azure_rm include_vm_resource_groups: ["prod-resource-group"] powerstate: running - 此时AAP会自动生成临时配置文件,无需手动维护
azure_rm.yml。
四、关键排查步骤
- 验证
azure.azcollection版本:执行ansible-galaxy collection list azure.azcollection,确保版本为最新稳定版(≥1.14.0),版本过低则重新安装:ansible-galaxy collection install azure.azcollection --force; - 检查Azure凭据权限:确保AAP配置的凭据拥有虚拟机读取权限(比如Azure内置的“Reader”角色);
- 本地测试配置:在Ansible服务器上执行
ansible-inventory -i azure_rm.yml --list,如果能正常输出主机列表,说明配置有效,再重新同步AAP。
内容的提问来源于stack exchange,提问作者OrionUK
相关产品推荐
相关产品推荐

