Ansible_使用Ansible galaxy部署角色


一、介紹Anisble galaxy

1、介紹Ansibleu galaxy

1️⃣:Ansible Galaxy (官網:https://galaxy.ansible.com)是一個Ansible內容公共資源庫,這些內容由許許多多Ansible管理員和用戶編寫。

2️⃣:它包含數千個Ansible角色,具有可搜索的數據庫,可幫助Ansible用戶確定或許有助於他們完成管理任務的角色

3️⃣:Ansible Galaxy含有面向新的Ansible用戶和角色開發人員的文檔和視頻鏈接

2、獲取Ansible galaxy幫助

1️⃣:通過Ansible Galaxy網站主頁上的Documenttaion標簽,可以進入描述如何使用Ansible Galaxy的頁面

2️⃣:其中包含了介紹如何從Ansible Galaxy下載和使用角色的內容。該頁面也提供關於如何開發角色並上傳到Ansible Galaxy的說明。

3、瀏覽Ansible galaxy中的角色

1️⃣:通過Ansible Galaxy網站主頁上左側的Search標簽,用戶可以訪問關於Ansible Galaxy上發布的角色的信息

2️⃣:用戶可以使用標記通過角色的名稱或通過其他角色屬性來搜索Ansible角色。

3️⃣:結果按照Best Match分數降序排列,此分數依據角色質量、角色受歡迎程度和搜索條件計算而得。

 

 

二、Ansible Galaxy命令行工具

1、從命令行搜索角色

1️⃣:ansible-galaxy search子命令在Ansible Galaxy中搜索角色

2️⃣:如果以參數形式指定了字符串,則可用於按照關鍵字在Ansible Galaxy中搜索角色

3️⃣:用戶可以使用--author、--platforms--galaxy-tags選項來縮小搜索結果的范圍

4️⃣:例如,命令ansible-galaxy search --author geerlingguy將顯示由用戶geerlingguy提交的所有角色

[root@localhost ~]# ansible-galaxy search 'redis' --author geerlingguy

Found 3 roles matching your search:

 Name                  Description
 ----                  -----------
 geerlingguy.php-pecl  PHP PECL extension installation.
 geerlingguy.php-redis PhpRedis support for Linux
 geerlingguy.redis     Redis for Linux

 

5️⃣:ansible-galaxy info子命令顯示與角色相關的更多詳細信息

6️⃣:Ansible Galaxy從多個位置獲取這一信息,包括角色的meta/main.yml文件及其GigHub存儲庫

[root@localhost ~]# ansible-galaxy info geerlingguy.redis

Role: geerlingguy.redis
        description: Redis for Linux
        active: True
        commit: 4f6fbdff6b566a596b2eaac168f88be820d4bbc5
        commit_message: Ignore the tyranny of ansible-lint rule 106.
        commit_url: https://api.github.com/repos/geerlingguy/ansible-role-redis/git/commits/4f6fbdff6b566a596b2eaac168f88be820d4bbc5
        company: Midwestern Mac, LLC
        created: 2014-03-06T16:48:12.451903Z
        download_count: 374535
        forks_count: 131
        github_branch: master
        github_repo: ansible-role-redis
        github_user: geerlingguy
        id: 468
        imported: 2020-09-11T15:06:16.909297-04:00
        is_valid: True
        issue_tracker_url: https://github.com/geerlingguy/ansible-role-redis/issues
        license: license (BSD, MIT)
        min_ansible_version: 2.4
        modified: 2020-09-11T19:06:16.916742Z
        open_issues_count: 6
        path: ('/root/.ansible/roles', '/usr/share/ansible/roles', '/etc/ansible/roles')
        role_type: ANS
        stargazers_count: 161
        travis_status_url: https://travis-ci.org/geerlingguy/ansible-role-redis.svg?branch=master

以上命令顯示了Ansible Galaxy提供的geerlingguy.redis角色的相關信息。

 

2、從Ansibel galaxy安裝角色

1️⃣:ansible-galaxy install子命令從Ansible Galaxy下載角色,並將它安裝到控制節點本地

2️⃣:默認情況下,角色安裝到用戶的roles_path下的第一個可寫目錄中。根據為Ansible設置的默認roles_path,角色通常將安裝到用戶的~/.ansible/roles目錄

3️⃣:默認的roles_path可能會被用戶當前Ansible配置文件或環境變量ANSIBLE_ROLES_PATH覆蓋,這將影響ansible-galaxy的行為

4️⃣:用戶可以通過使用-p DIRECTORY選項,指定具體的目錄來安裝角色

[root@localhost ~]# ls project/
playbook.yaml
[root@localhost ~]# ansible-galaxy install robertdebock.httpd -p project/       //-p  指定安裝目錄
- downloading role 'httpd', owned by robertdebock
- downloading role from https://github.com/robertdebock/ansible-role-httpd/archive/5.3.0.tar.gz
- extracting robertdebock.httpd to /root/project/robertdebock.httpd
- robertdebock.httpd (5.3.0) was installed successfully
[root@localhost ~]# ls project/
playbook.yaml  robertdebock.httpd

 

3、使用要求安裝文件安裝角色

1️⃣:可以使用ansible-galaxy,根據某一文本文件中的定義來安裝一個角色列表

2️⃣:例如,如果用戶的一個playbook需要安裝特定的角色,需要在項目目錄中創建一個roles/requirements.yml文件來指定所需的角色

3️⃣:src屬性指定角色的來源,本例中為來自Ansible Galaxy的robertdebock.httpd角色

4️⃣:重要:

  • 應當在requirements.yml文件中指定角色版本,特別是生產環境中的playbook
  • 如果不指定版本,將會獲取角色的最新版本。如果作者對角色做出了更改,並與用戶的playbook不兼容,這可能會造成自動化失敗或其他問題。

5️⃣:若要使用角色文件來安裝角色,可使用-r REQUIREMENTS-FILE選項

[root@localhost project]# cat roles/requirements.yml 
---
- src: robertdebock.httpd
[root@localhost project]# ansible-galaxy install -r roles/requirements.yml -p ./
- downloading role 'httpd', owned by robertdebock
- downloading role from https://github.com/robertdebock/ansible-role-httpd/archive/5.3.0.tar.gz
- extracting robertdebock.httpd to /root/project/robertdebock.httpd
- robertdebock.httpd (5.3.0) was installed successfully
[root@localhost project]# ls
playbook.yaml  robertdebock.httpd  roles

 

6️⃣:用戶可以使用ansible-galaxy來安裝不在Ansible Galaxy中的角色。可以在私有的Git存儲庫或Web服務器上托管自有的專用或內部角色

  • 實例:
    [root@localhost project]# cat roles/requirements.yml
    ---
    - src: geerlingguy.redis
    
    - src: geerlingguy.redis
      version: "1.5.0"
      name: redis_prod
      
    - src: https://gitlab.com/guardianproject-ops/ansible-nginx-acme.git
      scm: git
      version: 56e00a54
      name: nginx-acme
      
    - src: git@gitlab.com:guardianproject-ops/ansible-nginx-acme.git
      scm: git
      version: master
      name: nginx-acme-ssh
      
    - src: file:///opt/local/roles/myrole.tar
      name: myrole

src關鍵字指定Ansible Galaxy角色名稱。如果角色沒有托管在Ansible Galaxy中,則src關鍵字將指明角色的URL。

 

 

4、管理下載角色

1️⃣:ansible-galaxy命令也可管理本地的角色,如位於playbook項目的roles目錄中的角色。ansible-galaxy list子命令列出本地找到的角色

[root@localhost ]# ansible-galaxy list
# /usr/share/ansible/roles
- linux-system-roles.kdump, (unknown version)
- linux-system-roles.network, (unknown version)
- linux-system-roles.postfix, (unknown version)
- linux-system-roles.selinux, (unknown version)
- linux-system-roles.storage, (unknown version)
- linux-system-roles.timesync, (unknown version)
- rhel-system-roles.kdump, (unknown version)
- rhel-system-roles.network, (unknown version)
- rhel-system-roles.postfix, (unknown version)
- rhel-system-roles.selinux, (unknown version)
- rhel-system-roles.storage, (unknown version)
- rhel-system-roles.timesync, (unknown version)
# /etc/ansible/roles
- robertdebock.httpd, 5.3.0

 

2️⃣:可以使用ansible-galaxy remove子命令本地刪除角色。

  • 實例:刪除robertdebock.httpd, 5.3.0
    [root@localhost roles]# ansible-galaxy remove robertdebock.httpd
    [root@localhost ~]# ansible-galaxy list
    # /usr/share/ansible/roles
    - linux-system-roles.kdump, (unknown version)
    - linux-system-roles.network, (unknown version)
    - linux-system-roles.postfix, (unknown version)
    - linux-system-roles.selinux, (unknown version)
    - linux-system-roles.storage, (unknown version)
    - linux-system-roles.timesync, (unknown version)
    - rhel-system-roles.kdump, (unknown version)
    - rhel-system-roles.network, (unknown version)
    - rhel-system-roles.postfix, (unknown version)
    - rhel-system-roles.selinux, (unknown version)
    - rhel-system-roles.storage, (unknown version)
    - rhel-system-roles.timesync, (unknown version)
    # /etc/ansible/roles

 

3️⃣:在playbook中使用下載並安裝的角色的方式與任何其他角色都一樣

  • 在roles部分中利用其下載的角色名稱來加以引用。如果角色不在項目的roles目錄中,則將檢查roles_path來查看角色是否安裝在了其中一個目錄中,將使用第一個匹配項

 


免責聲明!

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



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