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