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 进行身份验证
使用import
、delete
和setup
命令在 Galaxy 网站上管理您的角色需要使用 API 密钥进行身份验证,您必须在 Galaxy 网站上创建一个帐户。
要创建身份验证令牌
单击集合 > API 令牌。
单击加载令牌,然后复制它。
将您的令牌保存在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 沟通指南