创建集合
要创建集合,
使用
ansible-galaxy collection init
命令创建一个新的集合,可以选择使用自定义的 集合模板.将模块和其他内容添加到集合。
使用 ansible-galaxy collection build 将集合构建成集合工件。
使用 ansible-galaxy collection publish 将集合工件发布到 Galaxy。
然后用户可以在他们的系统上安装您的集合。
命名您的集合
集合名称由命名空间和名称组成,用句点 (.
) 分隔。命名空间和名称都应该是有效的 Python 标识符。这意味着它们应该由 ASCII 字母、数字和下划线组成。
注意
通常命名空间和名称使用小写字母、数字和下划线,但不使用大写字母。
您应该通过检查 Ansible Galaxy 的命名空间列表 来确保您使用的命名空间没有被其他人注册。如果您选择了与 Galaxy 上另一个集合冲突的命名空间,甚至是一个完整的集合名称,那么当您或其他人运行 ansible-galaxy collection install
以及您的集合名称时,您最终可能会得到另一个集合。即使命名空间目前不存在,以后也可能被其他人创建。
如果您想在 Ansible Galaxy 上请求一个新的命名空间,请在 github.com/ansible/galaxy 上创建一个问题.
有一些特殊的命名空间
- ansible:
该 ansible 命名空间 由 Red Hat 拥有,保留用于官方 Ansible 集合。两个特殊的成员是合成
ansible.builtin
和ansible.legacy
集合。这些在 Ansible Galaxy 上找不到,但内置于 ansible-core 中。- community:
该 community 命名空间 由 Ansible 社区拥有。来自该命名空间的集合通常位于 GitHub ansible-collection 组织 中。如果您想在该命名空间中创建一个集合,请在论坛上 请求 它。
- local:
该 local 命名空间 在 Ansible Galaxy 上不包含任何集合,并且意图是永远不会改变。您可以将
local
命名空间用于在您的机器上或您的 git 存储库中本地存在的集合,而无需担心与 Ansible Galaxy 上实际存在的集合发生冲突。
创建一个新的集合
在包含 ansible_collections
的路径中创建您的集合框架,例如 collections/ansible_collections/.
要开始一个新的集合,请在您的集合目录中运行以下命令
ansible_collections#> ansible-galaxy collection init my_namespace.my_collection
注意
命名空间和集合名称都使用相同的严格要求集。有关这些要求,请参阅 Galaxy 文档网站上的 Galaxy 命名空间。
它将创建结构 [my_namespace]/[my_collection]/[collection skeleton]
.
提示
如果使用 Git 进行版本控制,则应该在集合目录中初始化相应的存储库。
一旦集合存在,您就可以使用您想要的内容填充目录。请参阅 ansible-collections GitHub 组织,以便更好地了解您可以在集合中放置什么内容。
参考:ansible-galaxy collection
命令
目前,ansible-galaxy collection
命令实现了以下子命令
init
: 基于 Ansible 中包含的默认模板或您自己的模板创建一个基本的集合。build
: 创建一个可以上传到 Galaxy 或您自己的存储库的集合工件。publish
: 将构建的集合工件发布到 Galaxy。install
: 安装一个或多个集合。
要了解有关 ansible-galaxy
命令行工具的更多信息,请参阅 ansible-galaxy 手册页。
从自定义模板创建集合
内置的集合模板是一个与 ansible-core
配合使用的简单集合示例,但是如果您想要简化开发过程,您可能想要创建一个自定义集合模板来传递给 ansible-galaxy collection init
.
集合框架是一个看起来像集合目录的目录,但任何 .j2
文件(不包括 templates/
和 roles/*/templates/
中的文件)将由 ansible-galaxy collection init
进行模板化。框架的 galaxy.yml.j2
文件应该使用变量 namespace
和 collection_name
,这些变量是从 ansible-galaxy init namespace.collection_name
派生的,并且将填充初始化的集合的 galaxy.yml
文件中的元数据。默认情况下,还有一些其他变量可用(例如,version
为 1.0.0
),并且可以使用 --extra-vars
对这些变量进行补充/覆盖。
一个接受可选字典变量 dependencies
的示例 galaxy.yml.j2
文件可能如下所示
namespace: {{ namespace }}
name: {{ collection_name }}
version: "{{ (version|quote) is version("0.0.0", operator="gt", version_type="semver")|ternary(version, undef("version must be a valid semantic version greater than 0.0.0")) }}"
dependencies: {{ dependencies|default({}, true) }}
要使用新模板初始化集合,请使用 ansible-galaxy collection init
传递框架的路径
ansible_collections#> ansible-galaxy collection init --collection-skeleton /path/to/my/namespace/skeleton --extra-vars "@my_vars_file.json" my_namespace.my_collection
注意
在 ansible-core
2.17 之前,集合框架模板化仅限于少数硬编码变量,包括 namespace
、collection_name
和 version
.
注意
默认集合框架使用一个名为 comment_ify
的内部过滤器,该过滤器无法访问 --collection-skeleton
。使用 ansible-doc -t filter|test --list
查看可用插件。
使用 ansible-creator 创建集合
ansible-creator 旨在快速构建 Ansible 集合项目。
注意
该 Ansible 开发工具 包提供了一种方便的方法来安装 ansible-creator
以及一组经过精心挑选的用于开发自动化内容的工具。
在安装 ansible-creator
后,您可以通过以下几种方式初始化项目:
使用init 子命令。
在 Visual Studio Code 中使用
ansible-creator
和Ansible 扩展。
另请参阅
- 使用 Ansible 集合
了解如何安装和使用集合。
- 集合结构
集合骨架中包含的目录和文件
- Ansible 开发工具 (ADT)
用于创建和测试 Ansible 内容的 Python 工具包。
- 邮件列表
开发邮件列表
- 实时聊天
如何加入 Ansible 聊天频道