Ansible Galaxy
“Ansible Galaxy” 指的是一个网站共享和下载 Ansible 角色,也可以是者是帮助 roles 更好的工作的命令行工具。
The Website 网站 ```````
这个网站 Ansible Galaxy,是一个免费的用于查找,下载,评论各种社区开发的 Ansible 角色,在你的自动化项目中引入一些角色也是不错的。
你可以使用 social auth 注册和使用 “ansible-galaxy” 下载客户端,”ansible-galaxy”在 Ansible 1.4.2 就已经被包含了。
阅读 Galaxy 网站的 “About” 页面获取更多信息。
ansible-galaxy命令行工具¶
ansible-galaxy 有许多不同的子命令
安装角色¶
很明显从 Ansible Galaxy 网站下载角色
ansible-galaxy install username.rolename
构建角色架构¶
也可以用于初始化一个新角色的基本文件结构,节省创建不同的目录和main.yml的时间了。
ansible-galaxy init rolename
从一个文件安装多个角色¶
想安装多个角色,ansible-galaxy 命令行可以通过一个 requirements 文件实现。各种版本的ansible 都允许使用下面的语法从 Ansible galaxy 网站安装角色。
ansible-galaxy install -r requirements.txt
requirements.txt 文件看起来就像这样
username1.foo_role username2.bar_role
想得到指定版本(tag)的role,使用下面的语法
username1.foo_role,version username2.bar_role,version
可用的版本在 Ansible Galaxy 网页上都有列出来。
Requirements 文件高级用法
一些控制从哪里下载角色,支持远程源的用法,在 Ansible 1.8 之后支持通过 YMAL 语法的 requirements 文件实现,但是必须以 yml为文件扩展名。就像这样
ansible-galaxy install -r requirements.yml
扩展名是很重要的,如果 .yml 扩展忘记写了, ansible-galaxy 命令行会假设这个文件是普通格式的,而且会失败,
这里有个例子展示通过多个源下载一些指定版本。 其中也实现了覆盖下载角色的名字到其它名字。
# from galaxy - src: yatesr.timezone
# from github - src: https://github.com/bennojoy/nginx
# from github installing to a relative path - src: https://github.com/bennojoy/nginx
path: vagrant/roles/# from github, overriding the name and specifying a specific tag - src: https://github.com/bennojoy/nginx
version: master name: nginx_role# from a webserver, where the role is packaged in a tar.gz - src: https://some.webserver.example.com/files/master.tar.gz
name: http-role# from bitbucket, if bitbucket happens to be operational right now :) - src: git+http://bitbucket.org/willthames/git-ansible-galaxy
version: v1.4# from bitbucket, alternative syntax and caveats - src: http://bitbucket.org/willthames/hg-ansible-galaxy
scm: hg
从上面你可以看到,有许多控制命令可以使用去自定义那些角色从哪里获得,保存为什么角色名称。
Roles pulled from galaxy work as with other SCM sourced roles above. To download a role with dependencies, and automatically install those dependencies, the role must be uploaded to the Ansible Galaxy website. 有些角色之间会有依赖关系,想要从依赖关系中自动安装,这个角色需要被上传到 Ansible Galaxy 网站上。
See also
- Playbook Roles and Include Statements
- 关于 Ansible role 的内容
- Mailing List
- Questions? Help? Ideas? Stop by the list on Google Groups
- irc.freenode.net
- #ansible IRC chat channel