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






