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 配置角色骨架和文件忽略
[galaxy]
role_skeleton = /path/to/skeleton
role_skeleton_ignore = ^.git$,^.*/.git_keep$
使用 Galaxy 进行身份验证
使用 import
、delete
和 setup
命令来管理您在 Galaxy 网站上的角色需要使用 API 密钥进行身份验证,您必须在 Galaxy 网站上创建一个帐户。
要创建身份验证令牌
点击 集合 > API 令牌。
点击 加载令牌,然后复制它。
将您的令牌保存在 GALAXY_TOKEN_PATH 中设置的路径中。
导入角色
该 import``command requires that you authenticate with the API token. You can include it in your ``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 角色的一切
- 邮件列表
有问题?需要帮助?有想法?到 Google Groups 的列表中看看
- 实时聊天
如何加入 Ansible 聊天频道