Ansible Galaxy


命令行工具

ansible-galaxy命令與Ansible捆綁在一起,您可以使用它從Galaxy或直接從基於git的SCM安裝角色。 您還可以使用它在Galaxy網站上創建新角色,刪除角色或執行任務。

默認情況下,命令行工具使用服務器地址https://galaxy.ansible.com與Galaxy網站API通信。 由於Galaxy項目是一個開源項目,您可能會運行自己的內部Galaxy服務器,並希望覆蓋默認的服務器地址。 您可以使用-server選項或通過在ansible.cfg文件中設置Galaxy服務器值來執行此操作。 有關在ansible.cfg中設置值的信息,請訪問Galaxy設置

Installing Roles

使用ansible-galaxy命令從Galaxy網站下載角色

 $ ansible-galaxy install username.role_name

roles_path

請注意,默認情況下,Ansible將角色下載到由環境變量ANSIBLE_ROLES_PATH指定的路徑。 這可以設置為一系列目錄(即/etc/ansible/roles:~/.ansible/roles ),在這種情況下,將使用第一個可寫路徑。 首次安裝Ansible時,它默認為/ etc / ansible / roles ,這需要root權限。

您可以通過在會話中設置環境變量,在ansible.cfg文件中定義roles_path或使用-roles -path選項來覆蓋此方法。 以下提供了使用-roles-path角色安裝到當前工作目錄中的示例:

$ ansible-galaxy install --roles-path . geerlingguy.apache

version

您可以通過附加一個逗號和一個GitHub發行標簽的值來從Galaxy安裝一個特定版本的角色。 例如:

$ ansible-galaxy install geerlingguy.apache,v1.0.0

也可以直接指向git存儲庫,並指定分支名稱或提交哈希作為版本。 例如,以下將安裝一個特定的提交:

$ ansible-galaxy install git+https://github.com/geerlingguy/ansible-role-apache.git,0b7cd353c0250e87a26e0499e59e7fd265cc2f25

從文件安裝多個角色

從Ansible 1.8開始,可以通過將roles放在require.yml文件中來安裝多個角色。 該文件的格式是YAML,文件擴展名必須是.yml.yaml

使用以下命令安裝require.yml中包含的角色:

  $ ansible-galaxy install -r requirements.yml

再次,擴展是重要的。 如果.yml擴展名被關閉,則ansible-galaxy CLI假定該文件處於較舊的,現在已棄用的“基本”格式。

該文件中的每個角色將具有以下一個或多個屬性:

src
角色的來源。 如果從Galaxy下載,請使用username.role_name格式; 否則,提供指向基於git的SCM中的存儲庫的URL。 參見下面的例子。 這是必需屬性。
scm
指定SCM。 在撰寫本文時,只支持githg參見下面的例子。 默認為git
version:
該版本的角色要下載。 提供發布標簽值,提交散列或分支名稱。 默認為主
name:
將角色下載到特定名稱。 從Galaxy下載時默認為Galaxy名稱,否則默認為存儲庫的名稱。

使用以下示例作為在require.yml中指定角色的指南:

# from galaxy
- src: yatesr.timezone # from GitHub - src: https://github.com/bennojoy/nginx # 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 - 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 # from GitLab or other git-based scm - src: git@gitlab.company.com:mygroup/ansible-base.git scm: git version: "0.1" # quoted, so YAML doesn't parse this as a floating-point value


依賴

角色也可以依賴於其他角色,當您安裝具有依賴關系的角色時,這些依賴項將自動安裝。

您可以通過提供角色列表來指定meta / main.yml文件中的角色依賴關系。 如果角色的來源是Galaxy,則可以使用username.role_name格式簡單地指定角色。 還支持require.yml中使用的更復雜的格式,允許您提供src,scm,version和name。

在Galaxy中找到的依賴關系可以指定如下:

dependencies: - geerlingguy.apache - geerlingguy.ansible

復合形式也可以如下使用:
dependencies: - src: geerlingguy.ansible - src: git+https://github.com/geerlingguy/ansible-role-composer.git version: 775396299f2da1f519f0d8885022ca2d6ee80ee8 name: composer

ansible-galaxy遇到依賴關系時,它會自動將每個依賴關系安裝到roles_path要了解在play執行過程中如何處理依賴關系,請參閱“ Playbook角色和包含語句”

Create roles

使用init命令初始化新角色的基本結構,節省創建各種目錄和main.yml文件的時間

  $ ansible-galaxy init role_name 

以上將在當前工作目錄中創建以下目錄結構:

README.md
.travis.yml defaults/ main.yml files/ handlers/ main.yml meta/ main.yml templates/ tests/ inventory test.yml vars/ main.yml

Force

如果當前工作目錄中存在與該角色名稱相匹配的目錄,則init命令將導致錯誤。 要忽略該錯誤,請使用-force選項。 Force將創建上述子目錄和文件,替換匹配的任何內容。

Container Enabled

如果要創建啟用Container的角色,請使用-container-enabled選項。 這將創建與上述相同的目錄結構,但使用適用於啟用Container的默認文件填充它。 例如,README.md具有稍微不同的結構, .travis.yml文件使用Ansible Container來測試角色,而meta目錄包含一個container.yml文件。

Using a Custom Role Skeleton

可以提供自定義角色骨架目錄,如下所示:

  $ ansible-galaxy init --role-skeleton = / path / to / skeleton role_name 

當提供骨架時,init將:
  • 將所有文件和目錄從骨架復制到新角色
  • 在模板文件夾之外找到的任何.j2文件將被渲染為模板。 目前唯一有用的變量是role_name
  • .git文件夾和任何.git_keep文件將不被復制

或者,可以通過ansible.cfg配置role_skeleton和忽略文件

[galaxy]

role_skeleton = /path/to/skeleton

role_skeleton_ignore = ^.git$,^.*/.git_keep$

Search for Roles

通過標簽,平台,作者和多個關鍵字搜索Galaxy數據庫。 例如:

$ ansible-galaxy search elasticsearch --author geerlingguy

搜索命令將返回與您的搜索匹配的前1000個結果的列表:
Found 2 roles matching your search: Name Description ---- ----------- geerlingguy.elasticsearch Elasticsearch for Linux. geerlingguy.elasticsearch-curator Elasticsearch curator for Linux.

Get more information about a role

使用info命令可查看有關特定角色的更多詳細信息:

$ ansible-galaxy info username.role_name

這將返回Galaxy中發現的所有角色:

Role: username.role_name description: Installs and configures a thing, a distributed, highly available NoSQL thing. active: True commit: c01947b7bc89ebc0b8a2e298b87ab416aed9dd57 commit_message: Adding travis commit_url: https://github.com/username/repo_name/commit/c01947b7bc89ebc0b8a2e298b87ab company: My Company, Inc. created: 2015-12-08T14:17:52.773Z download_count: 1 forks_count: 0 github_branch: github_repo: repo_name github_user: username id: 6381 is_valid: True issue_tracker_url: license: Apache min_ansible_version: 1.4 modified: 2015-12-08T18:43:49.085Z namespace: username open_issues_count: 0 path: /Users/username/projects/roles scm: None src: username.repo_name stargazers_count: 0 travis_status_url: https://travis-ci.org/username/repo_name.svg?branch=master version: watchers_count: 1

List installed roles

使用list顯示在roles_path中安裝的每個角色的名稱和版本。

$ ansible-galaxy list

- chouseknecht.role-install_mongod, master - chouseknecht.test-role-1, v1.0.2 - chrismeyersfsu.role-iptables, master - chrismeyersfsu.role-required_vars, master

刪除已安裝的角色

使用removeroles_path刪除角色:

$ ansible-galaxy remove username.role_name

Authenticate with Galaxy

使用importdeletesetup命令來管理Galaxy網站上的角色需要身份驗證,並且可以使用login命令來執行此操作。 在您可以使用login命令之前,您必須在Galaxy網站上創建一個帳戶。

login命令需要使用您的GitHub憑據。 您可以使用您的用戶名和密碼,也可以創建個人訪問令牌如果您選擇創建令牌,則授予對令牌的最小訪問權限,因為它僅用於驗證標識。

以下顯示使用GitHub用戶名和密碼與Galaxy網站進行身份驗證:

$ ansible-galaxy login

We need your GitHub login to identify you. This information will not be sent to Galaxy, only to api.github.com. The password will not be displayed. Use --github-token if you do not want to enter your password. Github Username: dsmith Password for dsmith: Successfully logged into Galaxy as dsmith


當您選擇使用您的用戶名和密碼時,您的密碼不會發送到Galaxy。 它用於使用GitHub進行身份驗證,並創建個人訪問令牌。 然后,它將令牌發送到Galaxy,該Galaxy又會驗證您的身份並返回Galaxy訪問令牌。 驗證完成后,GitHub令牌將被銷毀。

如果您不希望使用GitHub密碼,或者如果您使用GitHub啟用雙重身份驗證,請使用-github-token選項傳遞您創建的個人訪問令牌。

Import a role

import命令要求您首先使用login命令進行身份驗證。 一旦經過身份驗證,您可以導入您擁有或已被授予訪問權限的任何GitHub存儲庫。

使用以下內容導入角色:

  $ ansible-galaxy 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: master 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

Branch

使用-branch選項導入特定的分支。 如果沒有指定,將使用repo的默認分支。

Role name

默認情況下,賦予角色的名稱將從GitHub存儲庫名稱派生。 但是,您可以使用-role-name選項來覆蓋此名稱並設置名稱。

No wait

如果存在-no-wait選項,則命令不會等待結果。 通過訪問我的導入,可以在Galaxy網站上查看任何角色的最新導入結果。

Delete a role

delete命令要求您首先使用login命令進行身份驗證。 通過身份驗證,您可以從Galaxy網站中刪除角色。 您只能刪除您可以訪問GitHub中的存儲庫的角色。

使用以下內容刪除角色:

$ ansible-galaxy delete github_user github_repo

這只會消除Galaxy的角色。 它不會刪除或更改實際的GitHub信息庫。

Travis集成

您可以在Galaxy和Travis中的角色之間創建集成或連接。 建立連接后,Travis中的版本將自動觸發Galaxy中的導入,並使用關於角色的最新信息更新搜索索引。

您可以使用setup命令創建集成,但在創建集成之前,必須首先使用login命令進行身份驗證; 您還需要在Travis的帳戶和您的Travis令牌。 准備好后,使用以下命令創建集成:

  $ ansible-galaxy setup travis github_user github_repo xxx-travis-token-xxx 

設置命令需要您的Travis令牌,但令牌不會存儲在Galaxy中。 它與GitHub用戶名和repo一起使用,以創建Travis文檔中所述的哈希。 散列存儲在Galaxy中,用於驗證從Travis收到的通知。

設置命令使Galaxy能夠響應通知。 要配置Travis在您的存儲庫上運行構建並發送通知,請遵循Travis入門指南

要指示Travis在構建完成時通知Galaxy,請將以下內容添加到.travis.yml文件中:

  通知  webhooks https : //galaxy.ansible.com/api/v1/notifications/ 

列出Travis集成

使用-list選項顯示您的Travis集成:

  $ ansible-galaxy setup --list  ID來源報告  ---------- ---------- ----------  2 travis github_user / github_repo  1 travis github_user / github_repo 

刪除Travis集成

使用-remove選項禁用和刪除Travis集成:

  $ ansible-galaxy setup --remove ID 

提供要禁用的集成的ID。 您可以使用-list選項找到該ID。

 
 
          

 




 
 
 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM