为啥 Ansible 无法解析我的 azure 动态库存配置文件?

Posted

技术标签:

【中文标题】为啥 Ansible 无法解析我的 azure 动态库存配置文件?【英文标题】:Why isn't Ansible able to parse my azure dynamic inventory config file?为什么 Ansible 无法解析我的 azure 动态库存配置文件? 【发布时间】:2019-11-07 01:57:56 【问题描述】:

我正在尝试为 Ansible 设置动态清单以与 Azure 一起使用,但我收到了一些消息,因为 Ansible 无法解析我的 yaml 文件。

到目前为止我做了什么:

    创建 Azure 服务主体并将凭据添加到 /home/user/.azure/credentials(我知道他们建议将它们放在 /home/.azure/credentials 我试过了,但似乎我的 Ansible 在 /home/user 目录中查找它们。

    我将 python 插件(原始的、未经编辑的插件)及其 yaml 配置文件放在 /etc/ansible/inventory_plugins 中。配置 文件如下所示:

plugin: azure_rm

include_vm_resource_groups:

- vm_1197_rg

auth_source: auto
    使用以下命令测试功能:ansible all -m ping -i ./myazure_rm.yml

输出:

ansible 2.8.1 配置文件 = /etc/ansible/ansible.cfg 已配置 模块搜索路径 = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python模块 位置 = /usr/lib/python2.7/site-packages/ansible 可执行文件 位置 = /bin/ansible python 版本 = 2.7.5(默认,4 月 9 日 2019, 14:30:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] 使用 /etc/ansible/ansible.cfg 作为配置文件 由于库存而跳过 当前用户 azure_rm 不存在或无法读取源 拒绝解析 /etc/ansible/inventory_plugins/myazure_rm.yml 没有通过它的 verify_file() 方法 [警告]:无法解析 /etc/ansible/inventory_plugins/myazure_rm.yml 作为库存源

[WARNING]: 没有解析库存,只有隐式本地主机 可用

[警告]:提供的主机列表为空,只有 localhost 可用。 请注意,隐式 localhost 不匹配 'all'

【问题讨论】:

【参考方案1】:

'当使用azure_rminventory 插件时,inventory 文件的NAME 实际上对解析很重要。

它必须以以下任一结尾:

azure_rm.yml azure_rm.yaml

例如,以下任何文件名都是有效的:

inventory_azure_rm.yml inventoryazure_rm.yml why_is_this_a_good_idea_azure_rm.yml

如果文件不以 azure_rm.yml 结尾,您将收到如下一般错误消息:

[WARNING]:  * Failed to parse $FILENAME with auto plugin: inventory config '$FILENAME ' could not be verified by plugin 'azure_rm'

【讨论】:

【参考方案2】:

似乎我在运行命令时使用了错误的扩展名。我使用 .yml 而不是使用 .yaml,就像实际调用文件一样。

【讨论】:

这个答案不完整,重要的不仅仅是文件扩展名

以上是关于为啥 Ansible 无法解析我的 azure 动态库存配置文件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Azure 应用服务无法使用托管标识连接到 Azure 存储帐户?

为啥我无法在 Azure 门户中访问我的 AAD 应用注册,但我可以使用 Azure CLI 查看它?

Azure AD - 为啥我无法验证 Azure AD 为我的 Web API 颁发的 JWT 令牌?收到“IDX10516:签名验证失败”错误

我可以使用 Ansible 创建 Azure 文件共享吗?

为啥 Ivy 无法解析我的配置

为啥我的外部库方法无法解析?