專業級 Ansible 自動化部署解決方案
展示企業級 DevOps 實踐與安全最佳實踐
這是一個展示專業 Ansible 技能的完整自動化部署專案,包含:
- 🔐 Ansible Vault 安全加密 - 企業級敏感資訊保護
- 🚀 SSH 金鑰認證 - 無密碼自動化部署
- 🛡️ 安全最佳實踐 - Git 安全與敏感資訊管理
- 📦 Nginx 自動化部署 - 完整的 Web 伺服器配置
- 🔧 模組化設計 - 可擴展的基礎架構代碼
ansible-tutorial/
├── 📁 inventory/ # 主機清單管理
│ └── hosts # 目標主機配置
├── 📁 playbooks/ # 自動化劇本
│ └── setup.yml # Nginx 部署劇本
├── 📁 roles/ # 可重用角色 (預留)
├── 🔐 vault.yml # 加密敏感資訊
├── 🛡️ .gitignore # Git 安全配置
├── 📚 README.md # 專案文檔
└── 🔑 .vault_pass # Vault 密碼 (本地)
| 技術 | 版本 | 用途 |
|---|---|---|
| Ansible | 2.19+ | 自動化部署引擎 |
| Python | 3.12+ | Ansible 運行環境 |
| Ubuntu | 22.04+ | 目標作業系統 |
| Nginx | Latest | Web 伺服器 |
| SSH | OpenSSH | 安全連接 |
| Git | Latest | 版本控制 |
# 安裝 Ansible (macOS)
brew install ansible
# 或使用 pip
pip install ansible# 生成 SSH 金鑰 (如果尚未生成)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 複製公鑰到目標主機
ssh-copy-id xsong@192.168.194.132# 解密 Vault 文件
ansible-vault decrypt vault.yml --vault-password-file .vault_pass
# 編輯並更新 sudo 密碼
nano vault.yml
# 重新加密
ansible-vault encrypt vault.yml --vault-password-file .vault_pass# 測試連接
ansible -i inventory/hosts vm -m ping --vault-password-file .vault_pass
# 執行完整部署
ansible-playbook -i inventory/hosts playbooks/setup.yml --vault-password-file .vault_pass- ✅ 敏感資訊加密 - sudo 密碼安全儲存
- ✅ 版本控制安全 - 加密文件可安全提交 Git
- ✅ 團隊協作 - 共享 Vault 密碼進行協作
- ✅ 無密碼部署 - 提升自動化效率
- ✅ 安全連接 - 企業級安全標準
- ✅ 金鑰管理 - 集中式金鑰管理
# 敏感文件保護
.vault_pass
.vault_pass.txt
# 系統文件
.DS_Store
*.log
*.retry- ✅ 自動安裝 - APT 套件管理
- ✅ 服務配置 - 自動啟動與開機自啟
- ✅ 自訂首頁 - 部署驗證頁面
- ✅ 權限管理 - 正確的檔案權限設定
- ✅ 套件更新 - APT 快取更新
- ✅ 服務管理 - systemd 服務配置
- ✅ 權限控制 - 安全的檔案權限
- 🔄 Infrastructure as Code - 基礎架構代碼化
- 🚀 自動化部署 - 一鍵部署解決方案
- 📊 版本控制 - Git 最佳實踐
- 🛡️ 安全優先 - 企業級安全標準
- 📝 Playbook 設計 - 模組化與可重用性
- 🔐 Vault 管理 - 敏感資訊安全處理
- 🎛️ Inventory 管理 - 動態主機配置
- 🔧 模組使用 - apt, service, copy 等核心模組
- 🐧 Linux 系統 - Ubuntu 系統管理
- 🌐 Web 服務 - Nginx 配置與管理
- 🔑 SSH 安全 - 金鑰認證與安全連接
- 📦 套件管理 - APT 套件系統
部署完成後,您將獲得:
- 🌐 Web 伺服器 - 運行在
http://192.168.194.132 - 📄 驗證頁面 - "Hello from Ansible!" 首頁
- 🔄 自動啟動 - 開機自動啟動 Nginx
- 🛡️ 安全配置 - 企業級安全標準
# 設定 Vault 密碼文件
export ANSIBLE_VAULT_PASSWORD_FILE=.vault_pass
# 執行 playbook
ansible-playbook -i inventory/hosts playbooks/setup.yml# inventory/production/hosts
[production]
prod-server ansible_user=admin ansible_host=prod.example.com
# inventory/staging/hosts
[staging]
staging-server ansible_user=admin ansible_host=staging.example.com- Fork 專案
- 建立功能分支 (
git checkout -b feature/AmazingFeature) - 提交變更 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 開啟 Pull Request
此專案採用 MIT 授權 - 查看 LICENSE 文件了解詳情。
Songlin Chen - DevOps Engineer
- GitHub: @120061203
- Email: ccssll120061203@gmail.com
⭐ 如果這個專案對您有幫助,請給個 Star! ⭐-|