Ansible 是一款強(qiáng)大的 IT 自動化工具,廣泛用于服務(wù)器配置管理、軟件部署和任務(wù)自動化。本文將帶你從零開始,學(xué)習(xí)如何使用 Ansible 對 Linux 服務(wù)器進(jìn)行自動化運維,涵蓋 Ansible 的基本概念、安裝配置、常見 Playbook 編寫,以及實際運維案例。
一、Ansible 簡介:為什么選擇 Ansible?
在 DevOps 時代,自動化工具至關(guān)重要,Ansible 以其無代理(Agentless)、**聲明式(Declarative)和可擴(kuò)展(Scalable)**等特點,成為 IT 運維的首選。
?無代理架構(gòu):直接 SSH 連接,無需在目標(biāo)服務(wù)器安裝客戶端。
?易學(xué)易用:YAML 語法,簡單易讀,適合初學(xué)者。
?強(qiáng)大的模塊化:支持上千個內(nèi)置模塊,涵蓋系統(tǒng)管理、網(wǎng)絡(luò)設(shè)備、云平臺等。
二、環(huán)境準(zhǔn)備:安裝 Ansible
1. 服務(wù)器環(huán)境要求
?控制節(jié)點(安裝 Ansible 的主機(jī)):Ubuntu 20.04 / CentOS 7 及以上
?目標(biāo)服務(wù)器(被管理的 Linux 服務(wù)器):Ubuntu、CentOS、Debian 等
2. 安裝 Ansible
在 CentOS 上安裝:
sudo yum install -y epel-release
sudo yum install -y ansible
在 Ubuntu/Debian 上安裝:
sudo apt update
sudo apt install -y ansible
驗證安裝:
ansible --version
三、Ansible 配置管理
1. 配置主機(jī)清單(Inventory)
Ansible 通過 inventory 文件管理被控主機(jī),默認(rèn)位置 /etc/ansible/hosts:
[web_servers]
192.168.1.100
192.168.1.101
[db_servers]
192.168.1.200
測試 Ansible 連接:
ansible all -m ping
如果返回 "pong",表示連接成功。
四、編寫第一個 Ansible Playbook
Playbook 是 Ansible 自動化任務(wù)的核心,使用 YAML 語法定義。
示例:自動化安裝 Nginx
創(chuàng)建 Playbook 文件 install_nginx.yml:
- hosts: web_servers
become: yes
tasks:
- name: 安裝 Nginx
yum:
name: nginx
state: present
- name: 啟動 Nginx
service:
name: nginx
state: started
運行 Playbook:
ansible-playbook install_nginx.yml
執(zhí)行后,所有 web_servers 組內(nèi)的服務(wù)器都會自動安裝并啟動 Nginx。
五、高級自動化案例:批量管理服務(wù)器
1. 創(chuàng)建用戶并設(shè)置 SSH 免密登錄
- hosts: all
become: yes
tasks:
- name: 創(chuàng)建新用戶
user:
name: deploy
shell: /bin/bash
groups: sudo
- name: 設(shè)置 SSH 免密登錄
authorized_key:
user: deploy
state: present
key: "{{ lookup(file, ~/.ssh/id_rsa.pub) }}"
2. 監(jiān)控服務(wù)器狀態(tài)并發(fā)送通知
- hosts: all
tasks:
- name: 檢查 CPU 使用率
shell: "top -bn1 | grep Cpu | awk {print $2}"
register: cpu_usage
- name: 發(fā)送通知
debug:
msg: "當(dāng)前 CPU 使用率:{{ cpu_usage.stdout }}%"
六、總結(jié)
本教程帶你從零開始學(xué)習(xí) Ansible,掌握了基本的安裝、主機(jī)管理、Playbook 編寫及高級自動化案例。使用 Ansible,你可以輕松管理數(shù)百臺 Linux 服務(wù)器,提高運維效率。如果你對 DevOps 和自動化運維感興趣,不妨嘗試編寫自己的 Playbook,實現(xiàn)更多自動化任務(wù)!
下期預(yù)告:
如何使用 Ansible 自動化部署 Docker 和 Kubernetes 集群,敬請關(guān)注!
互動討論
你是否在實際運維中使用過 Ansible?有哪些經(jīng)驗或問題?歡迎在評論區(qū)分享交流!