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选项。强制将创建上述子目录和文件,并替换任何匹配项。

启用容器

如果您正在创建启用容器的角色,请将--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用户名和repo一起用于创建哈希值,如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沟通指南。