跳转到内容

合集

本指南旨在引导您了解在 Galaxy NG 中管理合集的基本知识。有关在更广泛的 ansible 生态系统中编写和使用合集的信息,请参阅以下文档: - 使用合集 - 开发合集

命名空间

合集命名空间通常包含有关特定合集发布者的信息。要查看系统中的命名空间,请导航到导航菜单中的“合集”>“命名空间”页面。在这里,您可以查看您有权管理的“我的命名空间”下的命名空间,以及“全部”下的所有命名空间。

可以从此处创建新的命名空间。要创建命名空间,请单击“创建”按钮并选择一个新的命名空间名称。

要编辑命名空间,请从“我的命名空间”中选择该命名空间,然后单击标题中 kebab 中的“编辑命名空间”按钮。

Namespace kebab

从这里,您可以添加文档链接,管理用户访问,设置描述,并在“编辑资源”选项卡中为您的命名空间编写自述文件。

Edit Namespaces

权限

可以通过转到“命名空间所有者”选项卡并选择一个或多个要分配给命名空间的组来授予用户管理命名空间的权限。可以为每个组赋予具有自定义权限集的作用。要查看有关创建角色的更多信息,请访问 RBAC 指南。

上传合集

在上传合集之前,您必须创建一个与合集命名空间匹配的命名空间。例如,如果我有一个名为 foo-bar-1.2.3.tar.gz 的工件,我需要先创建 foo 命名空间才能上传它。

上传合集后,它可能不会立即出现在搜索页面上。有关详细信息,请参阅审批

通过 UI

在命名空间页面上的“我的命名空间”下找到您的命名空间。单击“上传合集”,然后从您的计算机中选择要上传的 tarball,然后单击“上传”。

Upload Collection

这将启动合集导入,您将被重定向到导入日志。如果合集有任何错误,此页面会通知您。

Import Log

您可以通过在命名空间页面上从 kebab 中选择“导入”来查看命名空间的先前导入。

通过 CLI

在执行此操作之前,您需要配置 ansible-galaxy CLI 以连接到 Galaxy

要上传合集,请运行以下 ansible-galaxy collection publish 命令

$ ansible-galaxy collection publish newswangerd-main_collection-1.0.3.tar.gz
Publishing collection artifact '/Users/dnewswan/code/collections/collection_demo/collection_demo/newswangerd-main_collection-1.0.3.tar.gz' to dev http://localhost:5001/api/galaxy/
Collection has been published to the Galaxy server dev http://localhost:5001/api/galaxy/
Waiting until Galaxy import task http://localhost:5001/api/galaxy/v3/imports/collections/e2dda51b-d176-43da-a2b7-86c87013197a/ has completed
Collection has been successfully published and imported to the Galaxy server dev http://localhost:5001/api/galaxy/

审批

上传合集后,它将最终进入已发布的仓库(可供下载),或进入暂存仓库(需要先获得批准),具体取决于您为GALAXY_REQUIRE_CONTENT_APPROVAL配置的内容。

如果需要审批,请单击导航菜单中的“合集”>“审批”链接。这将为您提供一个要查看的新上传的合集列表。如果启用了签名,系统还会提示您对合集进行签名。

注意

您需要“修改 Ansible 仓库内容”权限才能访问审批仪表板。请确保您有一个具有适当角色的帐户。

Approval dashboard

从 Galaxy NG 安装合集

在执行此操作之前,您需要配置 ansible-galaxy CLI 以连接到 Galaxy

配置好 CLI 后,只需运行

ansible-galaxy collection install namespace.name:1.0.3

您可以通过在“合集”>“合集”下找到您的合集来复制安装合集的命令

copy download command

同步合集

可以从 galaxy.ansible.com 或 console.redhat.com(使用 Red Hat 的 AAP 订阅)同步合集。有关同步认证合集的信息,请参阅 Red Hat 产品文档。

要从 galaxy 同步,请导航到“合集”>“仓库管理”页面,然后选择“远程”页面。从“社区”远程上的 kebab 中选择“编辑”,然后上传 requirements.yaml 文件。

upload requirements file

requirements 文件如下所示。您可以使用任何 python 版本范围指定符来选择您要同步的合集版本范围。

collections:
    # sync all versions of a collection
  - name: amazon.aws

    # sync one version of a collection
  - name: community.general
    version: 1.0.0

    # sync a list of specific versions
  - name: community.aws
    version: "==1.1.0,==1.2.0"

    # sync all versions later than a specific version
  - name: community.asa
    version: ">=1.0.0"

    # include a specific older version of community.asa
  - name: community.asa
    version: "=0.4.0"

上传 requirements 文件后,您可以单击“同步”以启动作业。要在运行时查看同步状态,请在“任务”选项卡中找到它。

删除和弃用合集

可以通过从“合集”>“合集”中选择合集来删除或弃用合集。删除合集会将其从系统中永久删除。在删除合集之前,必须先删除依赖于它的任何合集。

弃用会将合集标记为已弃用,并将其从合集搜索页面中隐藏,但仍可供下载。这对于传达不应再使用合集很有用,而不会使其对于可能仍依赖它的项目无法访问。

deleting and deprecating

配置 ansible-galaxy CLI

有关配置 CLI 的更详细信息,请参阅 ansible-galaxy CLI 文档

要配置 CLI 以与 Galaxy NG 一起使用,您需要为您希望从中下载的每个仓库配置一个服务器,以及您的用户帐户凭据。可用的仓库列表可以从“合集”>“仓库管理”页面中查看。

您可以使用您的用户名和密码进行身份验证,也可以从“合集”>“API 令牌管理”获取令牌。

所有仓库的完整配置如下所示

~/.ansible.cfg
[galaxy]
server_list = publishd, certified, community, staging, rejected

[galaxy_server.published]
url=http://localhost:5001/api/galaxy/
username=admin
password=admin

[galaxy_server.certified]
url=http://localhost:5001/api/galaxy/content/certified/
token=0c69a0dc89ef555b9a4870270f18f8772d116efa

[galaxy_server.community]
url=http://localhost:5001/api/galaxy/content/community/
token=0c69a0dc89ef555b9a4870270f18f8772d116efa

[galaxy_server.staging]
url=http://localhost:5001/api/galaxy/content/staging/
token=0c69a0dc89ef555b9a4870270f18f8772d116efa

[galaxy_server.rejected]
url=http://localhost:5001/api/galaxy/content/rejected/
token=0c69a0dc89ef555b9a4870270f18f8772d116efa

并非所有这些都是必需的。如果您没有从 galaxy.ansible.com 或 console.redhat.com 同步任何合集,您可能只需要配置 published 仓库。stagingrejected 对大多数用户来说没有用。

配置上传仓库

要上传合集,您必须在 ansible.cfg 文件中配置以下两件事之一

  • /api/galaxy/ 上的 published 仓库(请注意 /api/galaxy/content/published/ 不起作用)。这将允许上传到任何命名空间。
  • 一个或多个 inbound-<NAMESPACE> 仓库。这将允许您上传单个命名空间的合集。此 URL 可以从“合集”>“命名空间”上的 CLI 配置选项卡中复制。

    testing 命名空间的示例

    [galaxy_server.inbound-testing]
    url=http://localhost:5001/api/galaxy/content/inbound-testing/
    token=0c69a0dc89ef555b9a4870270f18f8772d116efa