使用Ansible來部署Apache服務是一個很好的選擇,因為它可以自動化部署過程,確保所有的伺服器上都有相同的配置。以下是一個簡單的步驟指南,展示如何使用Ansible來部署Apache服務: 1 安裝ansible 在基於Debian的系統中,你可以使用以下命令來安裝Ansible: sudo ...
使用Ansible來部署Apache服務是一個很好的選擇,因為它可以自動化部署過程,確保所有的伺服器上都有相同的配置。以下是一個簡單的步驟指南,展示如何使用Ansible來部署Apache服務:
1 安裝ansible
在基於Debian的系統中,你可以使用以下命令來安裝Ansible:
sudo apt update
sudo apt install ansible
在基於RPM的系統中,你可以使用以下命令:
sudo yum install ansible
# 或者在較新的系統中
sudo dnf install ansible
2 ansible配置
Inventory清單,編輯/etc/ansible/hosts
文件,列出要由Ansible管理的受控主機的IP地址或主機名。可以將主機分組以便在Playbooks中引用它們
[tests]
192.168.178.222
[webservers]
192.168.178.100
192.168.178.101
[dbservers]
192.168.178.103
192.168.178.104
Ansible主配置文件 /etc/ansible/ansible.cfg
你可以根據需要修改此文件來更改Ansible的預設設置。例如,你可以設置日誌路徑、預設模塊、禁用SSH密鑰檢查等。
inventory = /path/to/your/inventory/file # 修改inventory(清單)文件路徑
forks = 5 # 定義Ansible 在執行任務時可以在多少個目標主機上並行運行。增加此值可以提高執行速度
remote_user = your_username # 指定 Ansible 用於連接到遠程主機的預設用戶
private_key_file = /path/to/your/private_key # 指定私鑰文件的路徑
host_key_checking = False # 設置為 False 可以避免首次連接時的密鑰確認提示
sudo_user = your_sudo_username
# sudo_pass = your_sudo_password # 不建議直接在配置文件中設置密碼
timeout = 10 # 設置 SSH 連接和命令執行的超時時間
log_path = /var/log/ansible.log # 指定 Ansible 日誌文件的存儲路徑
3 創建角色目錄
首先,在 /etc/ansible/roles
下創建 apache
目錄:
mkdir -p /etc/ansible/roles/apache
4 創建角色內的目錄結構
在 apache
角色目錄下,你需要創建幾個子目錄:tasks
, templates
, files
, handlers
, vars
, meta
, 和 defaults
(儘管不是所有的都是必要的,但通常 tasks
和 templates
是必須的)。
cd /etc/ansible/roles/apache
mkdir tasks templates
5 編寫 tasks/main.yml
在 tasks/main.yml
中,你將定義安裝和配置 Apache 的步驟。
---
- name: Install httpd
yum:
name: httpd
state: present
- name: Start httpd service
service:
name: httpd
state: started
enabled: yes
- name: Stop firewalld
service:
name: firewalld
state: stopped
enabled: no
- name: Create /site directory
file:
path: /var/www/html/site
state: directory
mode: '0755'
- name: Template index.html
template:
src: index.html.j2
dest: /var/www/html/site/index.html
mode: '0644'
6 編寫 templates/index.html.j2
在 templates/index.html.j2
中,你將使用 Jinja2 模板語法來插入主機名和 IP 地址。
Welcome to {{ ansible_fqdn }} On {{ ansible_default_ipv4.address }}
要使用你在 /etc/ansible/roles
目錄下創建的 apache
角色,你需要編寫一個 Ansible playbook。以下是如何編寫並使用該角色的步驟:
7 創建 playbook
在 /etc/ansible/
目錄下(或者任何你希望存放 playbook 的地方),創建一個新的 playbook 文件,例如 apache.yml
:
cd /etc/ansible/
touch apache.yml
然後使用你喜歡的文本編輯器(如 nano
, vim
, emacs
等)打開 apache.yml
並輸入以下內容:
---
- name: Deploy Apache
hosts: your_target_group # 替換為你的目標主機組名,例如 'webservers'
become: yes # 使用 sudo 或其他方法提升許可權(如果需要)
roles:
- apache # 調用你創建的 apache 角色
請註意,your_target_group
需要替換為你的 Ansible 主機清單中定義的一個主機組名。
8 運行 playbook
使用 ansible-playbook
命令運行 playbook:
ansible-playbook apache.yml
如果你定義了密碼提升(即 become: yes
),Ansible 可能會提示你輸入 sudo 密碼(除非你在 ansible.cfg
中配置了 become_method: sudo
和 become_pass
)。
9 驗證結果
一旦 playbook 運行完成,你可以登錄到目標機器上檢查 Apache 是否已正確安裝、啟動,並且 /site/index.html
文件是否已正確創建。
你可以使用以下命令來檢查 Apache 的狀態:
sudo systemctl status httpd
並使用 curl
或 wget
來檢查 /site/index.html
文件的內容:
curl http://localhost/site/index.html
或者
wget -qO- http://localhost/site/index.html
註意:如果你是在本地測試,並且 Apache 監聽在預設的 80 埠上,那麼 http://localhost
應該是正確的。但如果你是在遠程機器上運行,你需要將 localhost
替換為遠程機器的實際 IP 地址或功能變數名稱。
10 驗證後卸載apache
編寫Ansible playbook,該playbook包含必要的步驟來在目標主機上卸載Apache。
--
- hosts: tests // 指定此playbook將在哪些主機上運行
tasks:
- name: stop httpd server // 停止httpd服務
service: name=httpd state=stopped
notify:
- remove httpd
handlers:
- name: remove httpd
yum: name=httpd state=removed
運行此playbook,您可以使用以下命令(假設playbook文件名為remove_httpd.yml
):
ansible-playbook remove_httpd.yml
本文來自博客園,作者:dashery,轉載請註明原文鏈接:https://www.cnblogs.com/ydswin/p/18195602