Ansible Galaxy:您需要知道的一切

已發表: 2022-09-29

Ansible 是一種流行的開源配置管理工具。 另一方面,Ansible Galaxy 是 Ansible 角色的存儲庫。

作為初學者的系統管理員,您可能只有少量的劇本。 隨著您的自動化技能提高並且您對 Ansible 更加熟悉,您將學習所有最佳實踐。 當您增加劇本時,您也會意識到 Ansible Galaxy 的重要性。

什麼是 Ansible Galaxy?

Ansible Galaxy 是一個基於 Web 的開源在線存儲庫,用於存儲 Ansible 內容(主要是角色和集合)。 就好像你創造了一些新的東西並想與他人分享一樣。

如果您對 Ansible 自動化有任何問題或需要其他人提供的預打包解決方案來啟動您的自動化項目,Ansible Galaxy 可以提供幫助。 例如,您可以擁有角色、集合、模塊或插件。 許多社區成員已經上傳了他們的 Ansible 集合和角色。

Ansible-Galaxy-2

要完成諸如從 Galaxy 或任何 git SCM 安裝角色、創建或刪除角色或在 Galaxy 站點上執行某些任務等任務,我們可以使用“ansible-galaxy”命令。 該命令預裝在 Ansible 中,因此您可以在安裝 Ansible 後立即使用它。

Galaxy 項目是一個開源項目,它允許我們託管我們的內部 Galaxy 服務器。 要使用內部 Galaxy 服務器,您必須使用 Galaxy 內部服務器的服務器地址編輯Ansible.cfg文件中的默認配置,因為默認情況下,它使用服務器地址galaxy.ansible.com。

Ansible 概述

Ansible 可以被描述為一個可以自動化和擴展各種規模的基礎設施的乘法器。 它可用於管理配置、編排部署和其他功能。 Ansible 很容易設置。 即使是新手系統管理員也可以使用 Ansible 在短短幾個小時內實現基礎架構自動化。

Ansible 通過使用 SSH 協議實現自動化。 控制機制使用 SSH 連接與其目標主機(通常是 Linux 主機)進行通信。 Windows 系統管理員仍然可以使用 Ansible 通過 WinRM 而不是 SSH 來自動化他們的 Windows 環境。 控制機器必須仍然運行 Linux。

Ansible 可以執行常見的系統管理員任務,例如修補、更新、組和用戶管理、配置和其他管理任務。

Ansible 是當今使用最廣泛和流行的配置管理、編排和部署工具。 它的簡單性是它的主要優勢之一。 它簡單、強大,但無需代理。 這意味著新的或入門級的系統管理員可以在幾個小時內自動化基礎設施。 Ansible 允許快速擴展、提高效率和跨功能。

在 Ansible Galaxy 上工作

接下來,讓我們打開終端並使用 Ansible Galaxy 運行一些命令。 但在此之前,您必須在系統上安裝最新的 Ansible。

當您在系統上安裝了最新的 Ansible 後,只需在終端中輸入 ansible-galaxy,您將獲得 Galaxy 可用的所有選項。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy 
銀河系

首先,您可以從 init 命令開始並創建一個角色。 在這裡,我正在創建一個角色“測試”。 使用 ls 命令檢查角色是否創建成功。 init 命令還在測試角色目錄中創建必要的文件。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy init testing
ansible-galaxy-init

Ansible Galaxy 是一個龐大而活躍的社區,其中已經創建了許多可以直接使用的角色。

下面是瀏覽“galaxy.ansible.com”時打開的頁面,也可以說是“Ansible Galaxy”網站的主頁。 我們可以單擊主頁上的任何熱門類別或單擊“搜索”按鈕以獲取更多過濾器以應用精細搜索。

ansible-galaxy

例如,如果您正在尋找 MySQL 服務器角色,只需搜索它並單擊過濾器按鈕。 你可以看到geerlingguy的下載量最大; 我們可以嘗試安裝這個角色。 點擊geerlingguy MySQL。

ansible-galaxy-mysql

然後,您將獲得安裝命令以使用ansible-galaxy安裝此角色。

ansible-galaxy-install-mysql

運行上述快照中提到的命令,在您的機器上下載並安裝 MySQL 服務器角色。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy install geerlingguy.mysql 
ansible-galaxy-安裝

如果您已經知道任何特定作者要搜索哪個角色,則可以使用如下所示的搜索命令。

 ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy search elasticsearch --author geerlingguy 
ansible-galaxy-search

常見的 Ansible Galaxy 命令

ansible-galaxy 命令使用galaxy.ansible.com 管理角色和集合。 以下是每個系統管理員不時使用的一些非常有用ansible-galaxy命令:

  • ansible-galaxy list:這個galaxy命令顯示所有已安裝角色的列表,以及它們的版本號。
  • ansible-galaxy remove: 這個galaxy 命令刪除系統上已安裝的角色。
  • ansible-galaxy info:這個galaxy 命令將提供有關Ansible Galaxy 的詳細信息。
  • ansible-galaxy init 該galaxy 命令可用於創建適合提交到Ansible Galaxy 的角色模板。
  • ansible-galaxy import 這個galaxy命令需要登錄才能從galaxy官方網站導入角色。

上述命令(init、import、install、remove)可以與ansible-galaxy集合命令一起使用,以使用 Ansible galaxy 管理集合。

現在讓我們談談 Ansible Galaxy 中的角色和集合。

使用 Ansible Galaxy 創建角色

Ansible Galaxy 基本上是一個用於 Ansible 角色的大型公共存儲庫。 角色帶有解釋用法和變量的READMEs 。 Galaxy 擁有許多不斷發展和壯大的角色。

Galaxy 可以使用 git 添加 GitHub 等角色源。 Ansible Galaxy 允許我們使用 ansible ansible-galaxy命令創建 Ansible 角色。 ansible-galaxy init 可以用來初始化一個新的galaxy角色,也可以使用ansible-galaxy install <name of role>命令來安裝角色。

必須先下載角色,然後才能在劇本中使用它們。 一旦將它們放置在默認目錄/etc/ansible/roles ,您就可以找到角色示例。

Ansible 角色結構及其意義

以下是安裝角色時創建的文件和目錄:

  • README.md 是描述角色的自述文件。 自述文件包含有關輸入參數和示例yml的所有詳細信息。
  • 任務 – 所有任務都可以由任務中的角色登記。 Role 的入口點是 Main.yml。 這是執行開始的地方。 該文件可以包含其他文件。
  • 處理程序 - 此類別包括可用於此角色或任何其他角色的處理程序。
  • defaults – 角色的默認變量。
  • vars – 比 Role 默認值更重要的變量。
  • 文件——這些文件可以使用角色進行部署。
  • 模板 – 本部分包含可通過角色使用的模板。
  • meta – 元數據可用於定義 meta 中的角色。 此文件還應包括任何角色依賴項。
  • 測試——要執行的 CI 測試。
  • 庫——在角色中嵌入模塊或插件。 不是由 init 命令創建的。 您還可以在此文件夾中使用 Python 創建自定義模塊,然後在您的任務中使用它。

使用 Ansible Galaxy 創建集合

Ansible Galaxy 是管理角色的最佳工具,已使用多年。 但是,您將看到 Ansible Galaxy 中的新功能或更改。 Ansible 2.2.8 版現在包含收集功能。

Ansible 內容可以使用集合來分發。 它們用於打包和分發劇本和角色、模塊以及插件。

以下結構是集合的基礎:

 收藏/
├── 文檔/
├── 星系.yml
├── 插件/
│ ├──
模塊/
│ │ └── module1.py
│ ├──
存貨/
│ └── .../
├── README.md
├── 角色/
│ ├──
角色1/
│ ├──
角色2/
│ └── .../
├── 劇本/
│ ├──
文件/
│ ├──
變量/
│ ├──
模板/
│ └── 任務/
└── 測試/

創建集合骨架

要在您的計算機上安裝集合,您可以使用 ansible-galaxy 集合安裝命令。

值得注意的是,一些子命令也可以與 ansible galaxy 一起使用。

  • init : 基於 Ansible'sle 的默認模板或您自己的模板創建一個基本的集合結構
  • build :創建可以上傳到 Galaxy 或您自己的存儲庫的集合工件
  • publish : Galaxy 發布一個​​內置的集合工件
  • install : 安裝一個或多個集合

結論

Ansible Galaxy 是組織和思考不斷增長的角色書籍的好方法。 Ansible Galaxy 擁有大約 39K 社區作者、30K 角色和 1656 個集合,可用於快速啟動我們的自動化項目。 開發者指南和貢獻者指南解釋瞭如何為現有的 Ansible Galaxy 代碼做出貢獻,這是一個開源項目。

您可能還對可以使用 Ansible 自動執行的系統管理員任務感興趣。