Ansible collection

Ansible Collections 是一种用于组织和分发 Ansible 内容的新方法,它使得内容管理更加灵活和模块化。Collections 允许你将 Ansible 角色、模块、插件等组合在一起,并以一种统一的方式进行发布和管理。这种新的内容组织方式提供了更好的版本控制和依赖管理能力。

Collections 的特点包括:

  1. 模块化:Collections 可以包含各种类型的 Ansible 内容,如模块、插件、角色等,并且可以单独发布和管理。
  2. 版本控制:每个 Collection 都有自己的版本号,这使得用户可以精确控制他们所使用的版本。
  3. 依赖管理:Collections 可以声明依赖关系,这样用户在安装一个 Collection 时,可以自动安装其依赖项。
  4. 灵活的安装位置:Collections 可以安装在任意位置,而不仅仅是固定的 Ansible 搜索路径中。
  5. 易于分发:Collections 可以被打包成一个 .tar.gz 文件,便于分发和安装。

Collections 的结构

一个典型的 Collection 目录结构如下所示:

ansible_collections/
└── namespace/
    └── collection/
        ├── plugins/
        │   ├── modules/
        │   └── module_utils/
        ├── roles/
        ├── files/
        ├── docs/
        ├── tests/
        └── meta/
            └── runtime.yml
  • plugins/: 存放各种插件,如模块(modules)、过滤器(filters)、lookup 插件等。
  • roles/: 存放 Ansible 角色。
  • files/: 存放文件资源。
  • docs/: 存放文档和手册。
  • tests/: 存放测试用例。
  • meta/runtime.yml: 存放 Collection 的元数据,包括依赖关系。

安装 Collections

你可以使用 ansible-galaxy 命令来安装 Collections。例如,要安装 community.general 这个 Collection,可以使用下面的命令:

bash深色版本1ansible-galaxy collection install community.general

更新 Collections

要更新已安装的 Collections,可以使用 ansible-galaxy collection update 命令:

bash深色版本1ansible-galaxy collection update

卸载 Collections

要卸载一个 Collection,可以使用 ansible-galaxy collection remove 命令:

bash深色版本1ansible-galaxy collection remove namespace.collection

创建 Collections

如果想创建一个新的 Collection,可以使用 ansible-galaxy collection init 命令来初始化一个新的 Collection:

bash深色版本1ansible-galaxy collection init namespace.collection

这将在当前目录下创建一个符合 Collection 结构的新目录。

发布 Collections

一旦你创建了 Collection 并准备好发布它,你可以使用 ansible-galaxy collection build 命令来构建 Collection 包:

bash深色版本1ansible-galaxy collection build

然后你可以使用 ansible-galaxy collection publish 命令来上传你的 Collection 到 Ansible Galaxy:

ansible-galaxy collection publish <path_to_collection_tarball>

Index