Skip to content

120061203/ansible-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Ansible Infrastructure Automation

專業級 Ansible 自動化部署解決方案
展示企業級 DevOps 實踐與安全最佳實踐

Ansible Python Ubuntu Security

📋 專案概述

這是一個展示專業 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 版本控制

⚡ 快速開始

1. 環境準備

# 安裝 Ansible (macOS)
brew install ansible

# 或使用 pip
pip install ansible

2. 配置 SSH 金鑰

# 生成 SSH 金鑰 (如果尚未生成)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 複製公鑰到目標主機
ssh-copy-id xsong@192.168.194.132

3. 配置 Vault

# 解密 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

4. 執行部署

# 測試連接
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

🔐 安全架構

Ansible Vault 加密

  • 敏感資訊加密 - sudo 密碼安全儲存
  • 版本控制安全 - 加密文件可安全提交 Git
  • 團隊協作 - 共享 Vault 密碼進行協作

SSH 金鑰認證

  • 無密碼部署 - 提升自動化效率
  • 安全連接 - 企業級安全標準
  • 金鑰管理 - 集中式金鑰管理

Git 安全配置

# 敏感文件保護
.vault_pass
.vault_pass.txt

# 系統文件
.DS_Store
*.log
*.retry

📦 部署功能

Nginx Web 伺服器

  • 自動安裝 - APT 套件管理
  • 服務配置 - 自動啟動與開機自啟
  • 自訂首頁 - 部署驗證頁面
  • 權限管理 - 正確的檔案權限設定

系統優化

  • 套件更新 - APT 快取更新
  • 服務管理 - systemd 服務配置
  • 權限控制 - 安全的檔案權限

🎯 專業技能展示

DevOps 實踐

  • 🔄 Infrastructure as Code - 基礎架構代碼化
  • 🚀 自動化部署 - 一鍵部署解決方案
  • 📊 版本控制 - Git 最佳實踐
  • 🛡️ 安全優先 - 企業級安全標準

Ansible 專業技能

  • 📝 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

📚 學習資源

🤝 貢獻指南

  1. Fork 專案
  2. 建立功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交變更 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 開啟 Pull Request

📄 授權

此專案採用 MIT 授權 - 查看 LICENSE 文件了解詳情。

👨‍💻 作者

Songlin Chen - DevOps Engineer


如果這個專案對您有幫助,請給個 Star! ⭐-|

About

一個用於從 Mac 控制端管理 Ubuntu VM 的最小 Ansible 專案

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published