Ansible 是什麼 – 終極指南

Ansible是管理您雲端或資料中心基礎設施變更最廣泛使用的 DevOps 工具。在本文中,您將瞭解Ansible的工作原理以及如何入門。

什麼是Ansible?

Ansible是一個用於輕鬆部署應用程序和系統配置的自動化平台工具,可在多台伺服器上使用。它可用於啟動Linux服務、創建數十個Linux用戶、更新密碼等操作。

Ansible是一個無需代理的解決方案,通過安全外殼主機(SSH)協議管理機器。它需要一個數據庫,但不使用任何後台服務(守護進程)。

Ansible使用內置的即席命令和 Ansible playbooks 來部署軟件或執行命令。此外,Ansible還包含數百個模塊,用於部署或配置遠程節點。

Ansible的工作原理

現在,您對Ansible是什麼有了基本了解。但是要使Ansible正常工作,您將需要四個組件:

  1. Ansible 控制節點,也被稱為 Ansible 控制主機,是安裝了 Ansible 的伺服器。這個節點執行所有 Ansible 即席命令和 Ansible Playbooks 來部署或管理遠端節點上的配置或軟體。
  2. Ansible 遠端節點,也被稱為 Ansible 管理節點,是部署應用程式或配置使用 Ansible 即席命令或 Ansible Playbook 的伺服器或網路設備。這些也被稱為 Ansible 主機。
  3. Ansible 清單是位於 Ansible 控制主機或控制節點上的檔案,其中包含所有遠端主機或管理節點的清單。
  4. Ansible 模組,也被稱為 Ansible 核心模組,是可以從命令列或 Playbook 任務使用的程式碼插件或庫插件。Ansible 通常在遠端管理節點上執行每個模組。

為什麼要使用 Ansible?

在IT行業工作時,您可能會重複執行相同的任務。如果您能夠解決問題並在將來自動化您的解決方案怎麼樣?Ansible 是一個配置管理工具,可以讓您輕鬆高效地管理和部署遠程節點上的軟件。

Ansible 有數百個模塊可用於管理遠程服務器。Ansible 模塊分為兩部分:

  • Ansible 核心模塊 或稱 ansible-core,這是我們之前提到的,是 Ansible 的主要構建塊和架構。這些模塊由核心 Ansible 團隊擁有和管理,並將隨著 Ansible 一起提供。
  • An Ansible 集合是一種用於 Ansible 的發行格式,您可以使用它來打包和分發 playbook、角色、模塊和插件。一個典型的集合解決一組相關的用例。您可以創建一個集合並將其發布到 Ansible Galaxy

? Ansible Galaxy 指的是 Galaxy 網站,用戶可以在該網站上共享角色、安裝、創建和管理 Ansible 模塊。

Ansible 的使用案例

如果你問我關於 Ansible 的主要用例,我無法列出所有,因為 Ansible 能做的事情有好幾百件。從基本任務開始,像是在遠端節點上重新啟動服務,到部署Tomcat 應用程式

讓我們看看 Ansible 證明其有用的一些使用案例:

  • 如果你需要用單一命令在不同系統上執行任務和 Playbook,你可以透過Ansible 變數做到。
  • 要從多個系統檢索數據,你可以使用Ansible 事實。Ansible 事實是從目標節點獲取的數據,然後返回控制節點。
  • Ansible 保險櫃可用於存取像密碼之類的敏感數據,或是使用安全密碼部署應用程式。
  • Ansible 具有 查找 功能,可用于访问数据库和 API 以从外部数据存储中检索数据。

Ansible 安装选项

Ansible 是一款易于安装的工具,支持多个操作系统。让我们快速查看 Ansible 支持的操作系统。

Ansible可以在Windows上运行吗?

您不能在Windows上安装Ansible。但是,您可以使用它来管理基于Windows的操作系统。以下是一些可能的用例:

  • 在Windows主机上收集Ansible信息。
  • 安装和卸载MSIs。
  • 启用/禁用Windows功能。
  • 启动、停止和管理Windows服务。

Ansible配置管理

在运行第一个Ansible命令之前,您应该了解如何配置您的Ansible控制主机、Ansible清单、Ansible剧本等。

Ansible清单文件包含所有Ansible远程节点或分组的列表,Ansible在部署或管理资源时使用这些节点。

有两种不同的方式存储Ansible清单:

  1. 默认情况下,Ansible清单存储在/etc/ansible/hosts文件中。
  2. 您还可以通过在命令行中指定-I <路径>选项来使用自定义路径。

此外,有两种配置Ansible清单的方式:

  • INI格式:INI文件是由方括号中的组名来分配不同组中的主机的配置文件。在下面的示例中,server1.abc.com 沒有分配到任何组;但是,server3.abc.comserver4.abc.com 屬於Group1。
server1.abc.com

[Group1]

server3.abc.com

server4.abc.com
  • YAML格式:另一种声明Ansible清单的方法是使用YAML,它是JSON的超集,另一种数据序列化语言。以下定义了YAML格式的语法。

与我们上面解释的INI格式代码类似,在这里有两个服务器(server3.abc.com 和 server4.abc.com)是Group1组的成员。

all:

  hosts:

     server1.abc.com

  children:

      Group1:

        hosts:

          server3.abc.com

          server4.abc.com

Ansible即席命令

如果您需要在Ansible远程节点上执行快速任务,例如重新启动或启动Linux服务,Ansible即席命令就是为您准备的。即席命令是在远程节点上运行单个命令的快速有效方式。

舉例來說,要使用 Ansible 的 Ad hoc 指令 ping 所有遠端節點,您需要運行以下指令。這裡的「all」代表 Ansible 庫存中配置的所有主機,而「-m」是與 ping 模組一起使用的旗標。

ansible all -m ping 
Using an Ansible Ad hoc command to ping all Ansible remote nodes

什麼是 Ansible playbook?

當您需要同時執行多個 Ansible 任務時,您需要使用 Ansible playbook。

Ansible playbook 允許您部署複雜的應用程式,並提供可重複使用和簡單的配置管理。它們還支援多機佈署,可以用於執行多個任務,多次。

Ansible playbook 是以 YAML 格式編寫的,其中包含按順序執行的多個任務。以下是 Ansible playbook 的示例。

在此示例中,Ansible playbook 包含兩個 Ansible 任務(1 和 2),分別在遠端節點上安裝 Apache 和 Java。

# Playbook apache.yml

---

- name: Ansible Playbook Examples

  hosts: servers                                         # Define all the hosts

  remote_user: ubuntu                                    # Remote_user is ubuntu

  # Defining the Ansible tasks

  tasks:                                                

  - name: Ansible Task 1

    apt:

      name: httpd

      state: latest

  tasks:                                                 

  - name: Ansible Task 2

    apt:

      name: open-jdk

      state: latest

Ansible Tower:一個基於網頁的解決方案

雖然您現在對 Ansible 的運作方式有了良好的了解,但如果您希望在不必管理或安裝它的情況下使用它,該怎麼辦?

Ansible 運行在 Linux 機器上。但如果您希望使用雲端版本,而不必麻煩地在本地管理 Ansible,那麼可以使用 Ansible Tower,這是一個基於 Web 的解決方案。在雲端版本中,您仍然可以使用模組來配置或管理遠程機器並執行 Ansible 命令或 Ansible Playbooks。

Ansible Tower 還允許您控制所有用戶的訪問權限,管理 SSH 憑證和 Ansible 庫存。它還記錄所有作業,與 輕量級目錄訪問協議 (LDAP) 集成良好,並具有出色的可瀏覽 REST API。Ansible Tower 具有擴展伺服器和實例的能力,如果需要在遠程節點上運行多個任務。

結論

Ansible是一個具有許多功能的免費工具。有了這個指南,您現在應該了解這個功能豐富的工具能做什麼!從管理配置、使用各種Ansible模塊到執行即席命令、Ansible劇本,以及部署數十種軟件工具,Ansible是最廣泛使用的自動化工具之一。

現在您對Ansible如何工作有了良好的了解,您打算用它來部署什麼?

相關文章:


Source:
https://petri.com/what-is-ansible/