将 Ansible 内容迁移到不同的集合
你可能决定将内容从一个集合移动到另一个集合;例如,从 community.general
或 community.network
中提取一组相关的模块以创建更集中的集合。当你在集合之间迁移内容时,必须采取某些步骤以确保用户能够跟踪过渡。
迁移内容
如果要从中迁移内容的集合包含在 Ansible 社区包 中,请确保目标集合满足 Ansible 社区包集合要求。满足这些要求后,可以按如下方式迁移内容:
将内容从源(旧)集合复制到目标(新)集合。
更改
M()
、示例、seealso
、extended_documentation_fragments
以在已移动的内容、旧集合以及引用该内容的其他集合中使用实际的 FQCN。移动所有相关的 issue、pull request 和 wiki 页面。
浏览 ansible-documentation GitHub 仓库 的
docs/docsite
目录(例如,使用grep
命令行实用程序)以检查是否存在使用已移动模块和插件的示例,以便你可以更新这些 FQCN。使用
removal_version
弃用旧集合的meta/runtime.yml
中计划在下个主要版本中删除的模块/插件。在将复制的内容包含在新集合的版本中之后,必须发布弃用信息。准备旧集合的下一个主要版本时:
从旧集合中删除模块/插件
删除相关的单元和集成测试
删除特定模块实用程序(如果它们未被其他模块/插件或
module_utils
使用)如果旧集合中存在任何特定文档片段,则删除它们
添加一个包含
removed_features
和breaking_changes
条目的变更日志片段;你可以在此 pull request 中看到变更日志片段的示例更改旧集合中的
meta/runtime.yml
为相应的模块/插件条目添加
redirect
特别是,如果适用,请为已删除的模块实用程序和文档片段添加
redirect
从此处删除
removal_version
如果存在,则删除
tests/sanity/ignore.txt
文件中的相关条目删除尚未成为变更日志一部分的已删除内容的变更日志片段(换句话说,不要修改 changelogs/changelog.yaml 并且不要删除其中提到的文件)
删除
tests/unit/requirements.txt
、tests/requirements.yml
和galaxy.yml
中不再需要的需求
要实现这些更改,你需要创建至少三个 PR:
针对新集合创建一个 PR 以复制内容。
在旧集合中弃用模块/插件。
稍后针对旧集合创建一个 PR,以根据计划删除内容。
将内容添加到新集合
在新集合中创建一个 PR 来:
从旧集合复制所有相关文件。
如果它是操作插件,请包含带有文档的相应模块。
如果它是模块,请检查它是否具有应该与其一起移动的相应操作插件。
如果存在,请仔细检查
meta/
以了解对runtime.yml
的相关更新。仔细检查已移动的
tests/integration
和tests/units
并更新 FQCN。查看旧集合中的
tests/sanity/ignore-*.txt
条目。更新旧集合中的
meta/runtime.yml
。
从旧集合中删除内容
针对源集合仓库创建一个 PR 以删除与此次迁移相关的模块、module_utils、插件和 docs_fragments。
如果删除操作插件,请删除包含文档的相应模块。
如果删除模块,请删除任何应该与其一起保留的相应操作插件。
从
meta/runtime.yml
中删除有关已删除插件的任何条目。确保将其添加到新仓库中。从
tests/sanity/ignore*.txt
中删除健全性忽略行从
tests/integrations/targets/
中删除关联的集成测试,从tests/units/plugins/
中删除单元测试。如果从
community.general
或community.network
中删除内容,请从.github/BOTMETA.yml
中删除条目。仔细检查
meta/runtime.yml
中可能需要删除或更新的任何条目,特别是已弃用的条目。更新
meta/runtime.yml
以包含每个插件的重定向,指向新的集合名称。
警告
旧集合的维护者必须确保 PR 的合并方式不会破坏用户体验和语义版本控制。
在包含已移动内容的集合再次发布之前,不应发布包含已合并 PR 的新版本。否则,重定向将无法工作,依赖于该内容的用户将遇到中断。
一旦发布了已删除内容的集合的 1.0.0 版本,此类 PR 只能为新的 **主要** 版本合并(换句话说,2.0.0、3.0.0 等)。
更新 BOTMETA.yml
BOTMETA.yml
(例如,在 community.general 集合仓库 中)是以下内容的事实来源:
ansibullbot
如果旧集合和/或新集合具有 ansibullbot
,则必须相应地更新其 BOTMETA.yml
。
Ansibullbot 将知道如何将现有 issue 和 PR 重定向到新仓库。docs.ansible.com 的构建过程将知道在哪里可以找到模块文档。
$modules/monitoring/grafana/grafana_plugin.py:
migrated_to: community.grafana
$modules/monitoring/grafana/grafana_dashboard.py:
migrated_to: community.grafana
$modules/monitoring/grafana/grafana_datasource.py:
migrated_to: community.grafana
$plugins/callback/grafana_annotations.py:
maintainers: $team_grafana
labels: monitoring grafana
migrated_to: community.grafana
$plugins/doc_fragments/grafana.py:
maintainers: $team_grafana
labels: monitoring grafana
migrated_to: community.grafana
每个文件都必须显式添加
migrated_to:
键。不能在目录级别添加migrated_to
。这是为了允许模块和插件的网络文档重定向到新的集合文档。必须为每个以下内容添加
migrated_to:
模块
插件
模块实用程序 (module_utils)
contrib/inventory 脚本
您不需要为以下内容添加
migrated_to
:单元测试
集成测试
重结构化文本文档(位于
docs/docsite/rst/
下的所有内容)在
ansible/ansible:devel
中从未存在的文件
另请参见
- 使用 Ansible 集合
了解如何安装和使用集合。
- 为 Ansible 托管的集合贡献代码
为选定的集合贡献代码的指南
- 沟通
有问题?需要帮助?想分享您的想法?请访问 Ansible 沟通指南