Galaxy 开发者指南

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

为 Galaxy 创建集合

集合是 Ansible 内容的发布格式。您可以使用集合来打包和分发 playbook、角色、模块和插件。您可以通过 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 配置 role_skeleton 和文件的忽略。

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

使用 Galaxy 进行身份验证

使用 importdeletesetup 命令在 Galaxy 网站上管理您的角色需要使用 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 集合

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

角色

关于 ansible 角色的一切

沟通

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