首页 > 解决方案 > 如何在我的集合的根目录上运行 ansible-test?

问题描述

我目前正在开发自己的 Ansible 集合并遵循文档。目录结构如下所示:

~/.ansible/collections/gertvdijk/mycollection
├── galaxy.yml
├── plugins
│   └── lookup
│       └── mylookup.py
├── README.md
└── tests
    └── unit
        └── plugins
            └── lookup
                └── test_mylookup.py

选择该位置~/.ansible/collections/gertvdijk/mycollection是为了方便,以便在集合的默认搜索路径 ( COLLECTIONS_PATHS ) 上找到它。

Ansible 开发人员文档部分测试集合提到我应该使用ansible-test具有给定结构的集合根目录中的命令。

您必须始终ansible-test从集合的根目录执行。

但是,这对我来说失败了,出现了一个错误,好像我应该已经在项目中使用它了。即使运行--help失败并出现当前工作目录错误:

$ ansible-test --help
ERROR: The current working directory must be at or below:

 - an Ansible collection: {...}/ansible_collections/{namespace}/{collection}/

Current working directory: /home/gert/.ansible/collections/gertvdijk/mycollection

通过克隆现有的社区集合(例如community.grafana)也会发生同样的事情。GitHub CI 步骤包括在ansible_collections/{namespace}/{collection}路径中的安装(参见此处)。

暂时将其作为一种解决方法(我想避免这种情况);将集合的存储库移动到包含的某个路径/ansible_collections/gertvdijk/mycollection,然后从那里运行它。

这不可能是真的,对吧,两级以上的目录名称会造就或破坏该ansible-test工具吗?我在这里想念什么?

标签: ansible

解决方案


TL;DR:您的家庭收藏路径应该是/home/gert/.ansible/collections/ansible_collections/gertvdijk/mycollection


中列出的目录COLLECTION_PATH实际上应该包含一个顶级ansible_collections文件夹。如文档中所述,这与ansible_collectionseg 使用的约定相关联module_utils

您还可以通过运行来观察空白文件夹的结构,例如

ansible-galaxy collection install -p /whatever community.grafana

在这种情况下,您最终会得到文件夹/whatever/ansible_collections/community/grafana

所以你的实际主文件夹收集路径应该是/home/gert/.ansible/collections/ansible_collections/gertvdijk/mycollection


推荐阅读