Galaxy 开发者指南

您可以在 Galaxy 上托管集合和角色,以与 Ansible 社区共享。Galaxy 内容以预先打包的工作单元形式格式化,例如 角色集合。您可以创建角色来配置基础设施、部署应用程序以及您每天执行的所有任务。更进一步,您可以创建集合,提供包含多个剧本、角色、模块和插件的自动化综合包。

为 Galaxy 创建集合

集合是 Ansible 内容的发布格式。您可以使用集合来打包和分发剧本、角色、模块和插件。您可以通过 Ansible Galaxy 发布和使用集合。

有关如何创建集合的详细信息,请参阅 开发集合

为 Galaxy 创建角色

使用 init 命令初始化新角色的基本结构,从而节省创建角色所需的各种目录和 main.yml 文件的时间

$ ansible-galaxy role init role_name

以上操作将在当前工作目录中创建以下目录结构

role_name/
    README.md
    defaults/
        main.yml
    files/
    handlers/
        main.yml
    meta/
        main.yml
    tasks/
        main.yml
    templates/
    tests/
        inventory
        test.yml
    vars/
        main.yml

如果您要为角色创建一个仓库,则仓库根目录应为 role_name

强制

如果当前工作目录中已存在与角色名称匹配的目录,则 init 命令将导致错误。若要忽略错误,请使用 --force 选项。Force 将创建以上子目录和文件,并替换与之匹配的任何内容。

容器启用

如果您要创建启用容器的角色,请将 --type container 传递给 ansible-galaxy init。这将创建与上述相同的目录结构,但会使用适合启用容器的角色的默认文件进行填充。例如,README.md 具有略微不同的结构,.travis.yml 文件使用 Ansible Container 测试角色,并且 meta 目录包含 container.yml 文件。

使用自定义角色骨架

可以按如下方式提供自定义角色骨架目录

$ ansible-galaxy init --role-skeleton=/path/to/skeleton role_name

当提供骨架时,init 将

  • 将骨架中的所有文件和目录复制到新角色

  • 在 templates 文件夹之外找到的任何 .j2 文件都将被渲染为模板。目前唯一有用的变量是 role_name

  • 不会复制 .git 文件夹和任何 .git_keep 文件

或者,可以使用 ansible.cfg 配置角色骨架和文件的忽略

[galaxy]
role_skeleton = /path/to/skeleton
role_skeleton_ignore = ^.git$,^.*/.git_keep$

对 Galaxy 进行身份验证

使用 import``命令 需要 使用 API 密钥进行身份验证,您必须在 Galaxy 网站上创建一个帐户。

要创建身份验证令牌

  1. 单击 集合 > API 令牌

  2. 单击 加载令牌,然后复制它。

  3. 将您的令牌保存在 GALAXY_TOKEN_PATH 中设置的路径中。

导入角色

import``命令 要求您使用 API 令牌进行身份验证。您可以将其包含在您的 ``ansible.cfg 文件中,或使用 --token 命令选项。您只允许删除您有权访问 GitHub 中仓库的角色。

要导入新角色

$ ansible-galaxy role import github_user github_repo

默认情况下,该命令将等待 Galaxy 完成导入过程,并在导入过程中显示结果

Successfully submitted import request 41
Starting import 41: role_name=myrole repo=githubuser/ansible-role-repo ref=
Retrieving GitHub repo githubuser/ansible-role-repo
Accessing branch: devel
Parsing and validating meta/main.yml
Parsing galaxy_tags
Parsing platforms
Adding dependencies
Parsing and validating README.md
Adding repo tags as role versions
Import completed
Status SUCCESS : warnings=0 errors=0

有关其他命令选项,请参阅 ansible-galaxy

删除角色

delete 命令要求您使用 API 令牌进行身份验证。您可以将其包含在您的 ansible.cfg 文件中,或使用 --token 命令选项。您只允许删除您有权访问 GitHub 中仓库的角色。

使用以下方法删除角色

$ ansible-galaxy role delete github_user github_repo

这只会从 Galaxy 中删除角色。它不会删除或更改实际的 GitHub 仓库。

Travis 集成

您可以在 Galaxy 中的角色与 Travis 之间创建集成或连接。连接建立后,Travis 中的构建将自动触发 Galaxy 中的导入,使用有关角色的最新信息更新搜索索引。

您可以使用 setup 命令以及您的 API 令牌创建集成。您还需要在 Travis 中有一个帐户,以及您的 Travis 令牌。准备就绪后,使用以下命令创建集成

$ ansible-galaxy role setup travis github_user github_repo xxx-travis-token-xxx

setup 命令需要您的 Travis 令牌,但该令牌不会存储在 Galaxy 中。它与 GitHub 用户名和仓库一起用于创建哈希,如 Travis 文档 中所述。哈希存储在 Galaxy 中,用于验证从 Travis 收到的通知。

setup 命令使 Galaxy 能够响应通知。若要配置 Travis 在您的仓库上运行构建并发送通知,请按照 Travis 入门指南 进行操作。

若要指示 Travis 在构建完成后通知 Galaxy,请将以下内容添加到您的 .travis.yml 文件中

notifications:
    webhooks: https://galaxy.ansible.com/api/v1/notifications/

列出 Travis 集成

使用 --list 选项显示您的 Travis 集成

$ ansible-galaxy setup --list travis github_user github_repo xxx-travis-token-xxx


ID         Source     Repo
---------- ---------- ----------
2          travis     github_user/github_repo
1          travis     github_user/github_repo

删除 Travis 集成

使用 --remove 选项禁用并删除 Travis 集成

$ ansible-galaxy role setup --remove ID

提供要禁用的集成的 ID。您可以使用 --list 选项找到 ID。

另请参阅

使用 Ansible 集合

模块、剧本和角色的可共享集合

角色

关于 ansible 角色的全部内容

沟通

有问题?需要帮助?想分享您的想法?请访问 Ansible 沟通指南