歡迎來到“50 天 50 個 devops 工具”系列的第 30 天!今天,我們將探索 ansible,它是 devops 工具包中最重要的工具之一。本博客將向您介紹 ansible 的基礎知識,分解其關鍵組件并向您展示如何從簡單的示例開始。我們會讓事情簡單明了,使其成為初學者的完美起點。
什么是 ansible?
ansible 是一種開源自動化工具,可以簡化配置管理、應用程序部署和編排等任務。它的設計簡單但功能強大,可讓您自動執行重復性任務并更有效地管理您的基礎設施。
主要特點:
無代理: ansible 不需要在遠程系統上安裝任何代理,這減少了開銷。
人類可讀的 yaml playbooks: ansible 使用 yaml(另一種標記語言)來編寫 playbook,易于閱讀和編寫。
冪等: 您可以多次運行同一個劇本,而不必擔心意外的更改。
為什么使用 ansible?
無代理架構: 由于 ansible 是無代理的,因此無需在客戶端系統上安裝任何額外的軟件,從而減少開銷和潛在的安全風險。
簡單的語法: ansible 使用 yaml 作為它的 playbook,它易于閱讀和編寫,甚至對于那些剛接觸自動化的人來說也很容易理解。
冪等性: ansible 確保無論當前狀態如何都能達到所需的狀態。這意味著多次運行劇本不會導致問題或重復操作。
廣泛的社區支持: 擁有龐大且活躍的社區,ansible 擁有豐富的角色、模塊和劇本,可以重用和定制以滿足您的需求。
可擴展性:無論是管理幾臺服務器還是數千臺服務器,ansible 都可以很好地擴展,使其適合各種規模的組織。
ansible 的核心組件
inventory: 這是 ansible 管理的主機(服務器)列表。庫存可以是靜態的(在文件中定義)或動態的(由腳本生成)。
模塊: 模塊是 ansible 的主力。它們在遠程主機上執行,以執行安裝包、復制文件或管理服務等任務。
playbooks:playbooks 是 ansible 的配置、部署和編排語言。它們是用 yaml 編寫的,描述了一系列要在主機上執行的任務。
角色: 角色允許您將劇本分解為可重用的組件,從而更輕松地管理和組織大型項目。
變量:變量用于存儲可以在整個劇本中重復使用的值。它們提供了靈活性,允許您自定義劇本而無需硬編碼值。
處理程序:處理程序是特殊任務,僅在被其他任務觸發時運行。它們通常用于重新啟動服務之類的事情。
設置 ansible
讓我們從在控制節點上安裝 ansible 開始。安裝過程很簡單,并且根據您的操作系統略有不同。
在 ubuntu/debian 上安裝 ansible
sudo apt update sudo apt install ansible -y
登錄后復制
在 centos/rhel 上安裝 ansible
sudo yum install epel-release -y sudo yum install ansible -y
登錄后復制
驗證安裝
安裝后,您可以通過運行以下命令來驗證 ansible 是否已正確安裝:
ansible --version
登錄后復制
編寫你的第一本 ansible 手冊
讓我們創建一個簡單的劇本來在遠程服務器上安裝 nginx。我們將從定義庫存開始。
第1步:創建庫存文件
創建一個名為hosts的文件:
[webservers] 34.42.111.35 34.42.111.66
登錄后復制
此清單文件定義了一個名為 webservers 的組,其中包含兩個服務器。
第 2 步:編寫劇本
接下來,我們將編寫一個劇本來在這些服務器上安裝和啟動 nginx。
創建一個名為 nginx_setup.yml 的文件:
--- - name: install nginx on web servers hosts: webservers become: yes tasks: - name: install nginx apt: name: nginx state: present - name: start nginx service service: name: nginx state: started enabled: true
登錄后復制
了解劇本
名稱: 人類可讀的劇本或任務功能描述。
hosts: 指定應運行 playbook 的主機組(來自清單)。
成為: 表示 ansible 應該使用提升的權限(如 sudo)。
tasks: 列出 ansible 將執行的步驟。在這里,我們正在安裝 nginx 并確保該服務在啟動時啟動并啟用。
第 3 步:運行 playbook
要執行劇本,請運行以下命令:
ansible-playbook -i hosts nginx_setup.yml
登錄后復制
此命令告訴 ansible 在主機清單文件中定義的主機上運行 nginx_setup.yml 中的任務。
現實場景:自動化軟件包安裝
考慮一個場景,您需要在多個服務器上安裝一組包。手動執行此操作非常耗時且容易出錯。使用 ansible,您可以輕松自動化此任務。
這是一個安裝多個軟件包的簡單手冊:
--- - name: install essential packages hosts: all become: yes tasks: - name: install packages apt: name: - git - curl - htop state: present
登錄后復制
在此劇本中,ansible 在清單中列出的所有服務器上安裝 git、curl 和 htop。 apt 模塊確保每個包都已安裝。
現實生活示例:簡化用戶管理
想象一下您需要在多個服務器上創建一個新用戶并將它們分配給特定的組。在每臺服務器上手動執行此任務將非常乏味。有了 ansible,一切變得輕而易舉。
具體操作方法如下:
--- - name: Create a new user hosts: all become: yes tasks: - name: Create user "devuser" user: name: devuser state: present groups: sudo
登錄后復制
此劇本在所有托管服務器上創建一個新用戶 devuser 并將它們添加到 sudo 組。
使用 ansible 的好處
一致性: ansible 確保您的系統配置一致,降低配置漂移的風險。
效率:自動化重復性任務可以騰出時間來處理更重要的工作。
可擴展性:無論是管理少量服務器還是數千臺服務器,ansible 都可以輕松擴展。
靈活性: ansible 的模塊化方法允許您根據需要自定義和擴展其功能。
結論
ansible 是一款功能強大且易于使用的工具,可以極大地簡化基礎設施的管理。只需幾行代碼,您就可以自動執行復雜的任務,確保整個環境的一致性和可靠性。無論您是設置服務器、部署應用程序還是管理配置,ansible 都可以幫助您更高效地完成工作。
明天,我們將深入探討更高級的 ansible 主題,探索可以將您的自動化提升到新水平的功能。敬請期待!
? 請務必在 linkedin 上關注我以獲取最新更新: shiivam agnihotri