🚀 Production-ready automation toolkit for WSL2 dev environment & Ubuntu servers
一键配置脚本集:WSL2 开发环境 + Ubuntu 生产服务器 + 自动化证书管理
这是一个基于 Ansible 的自动化配置工具包,旨在帮助开发者快速配置开发和生产环境:
- 🖥️ WSL2 开发环境:一键配置完整的 WSL2 开发环境,包括 Docker、多语言支持、现代 CLI 工具
- 🌐 Ubuntu 服务器:生产级服务器配置,包括安全加固、开发工具、Docker、Nginx 等
- 🔒 ACME 证书管理:自动化 HTTPS 证书申请和续期(即将推出)
🖥️ WSL2 开发环境 (wsl-dev)
- 环境校验:自动检测 WSL2、Ubuntu 版本、Docker Desktop
- 包管理器:Homebrew (Linuxbrew)
- Shell 环境:Zsh + Oh My Zsh + 插件(autosuggestions, syntax-highlighting)
- 编程语言:
- Python (uv)
- Node.js (nvm)
- Go (goenv)
- 容器化:Docker CLI (WSL 模式)
- Windows 集成:剪贴板、文件互操作
- 现代 CLI 工具:eza, bat, fzf, zoxide, lazygit, lazydocker, btop, dust, procs
- Git 配置:全局设置、Windows 凭据管理器集成
| 类别 | 工具 | 说明 |
|---|---|---|
| 包管理 | Homebrew | Linux 包管理器 |
| Shell | Zsh + Oh My Zsh | 现代化终端 |
| Python | uv | 快速 Python 环境管理 |
| Node.js | nvm | Node 版本管理 |
| Go | goenv | Go 版本管理 |
| 容器 | Docker CLI | 容器管理(使用 Docker Desktop) |
| CLI | eza, bat, fzf, zoxide | 现代化命令行工具 |
| Git TUI | lazygit | Git 终端界面 |
| Docker TUI | lazydocker | Docker 终端界面 |
| 监控 | btop | 系统资源监控 |
| 工具 | jq, yq, httpie, gh | JSON/YAML/HTTP/GitHub CLI |
- 系统级配置:只负责开发工具,不涉及项目约定
- 环境检查:前置验证,失败快速退出
- 幂等性:可安全重复执行
- 备份机制:自动备份现有配置
🌐 Ubuntu 服务器 (ubuntu-server)
- 用户管理:创建普通用户、SSH 密钥认证、免密 sudo
- SSH 加固:修改端口、禁用 root、禁用密码认证
- 防火墙:UFW 自动配置、端口白名单
- 最小权限:遵循最佳安全实践
- Docker:Docker CE + Compose Plugin
- Web 服务器:Nginx
- 包管理器:Homebrew (可选)
- Shell 环境:Zsh + Oh My Zsh (可选)
- 编程字体:Powerline、FiraCode (可选)
- 基础工具:build-essential, git, vim, htop, net-tools
- 时区配置:Asia/Shanghai
- Locale 配置:en_US.UTF-8
- 系统更新:自动更新和清理
9 个独立可配置的 Ansible 角色:
| 角色 | 功能 | 默认状态 |
|---|---|---|
| base | 基础系统配置 | ✅ 启用 |
| user | 用户创建和配置 | ✅ 启用 |
| security | SSH 安全加固 | ✅ 启用 |
| firewall | UFW 防火墙 | ✅ 启用 |
| docker | Docker CE | ✅ 启用 |
| nginx | Nginx Web 服务器 | ✅ 启用 |
| brew | Homebrew | ✅ 启用 |
| shell | Zsh + Oh My Zsh | ✅ 启用 |
| fonts | 编程字体 | ✅ 启用 |
- Windows 10/11
- WSL2 已安装
- Ubuntu 22.04+ 发行版
- Docker Desktop for Windows
# 1. 克隆仓库
git clone https://github.com/YOUR_USERNAME/DevOpsToolkit.git
cd DevOpsToolkit/wsl-dev
# 2. 运行 bootstrap
chmod +x bootstrap.sh
./bootstrap.sh编辑 ansible/group_vars/all.yml 自定义安装:
# 启用/禁用功能
enable_brew: true
enable_python: true
enable_node: true
enable_go: true
enable_docker: true
# Git 配置
git_user_name: "Your Name"
git_user_email: "you@example.com"
# Windows 集成
enable_windows_integration: true# 启动 Zsh
exec zsh
# 验证工具
brew --version
uv --version
docker --version详细文档:
控制机(本地或跳板机):
- 安装了 Ansible 2.9+
- SSH 客户端
目标服务器:
- Ubuntu 20.04 / 22.04 / 24.04
- Root 或 sudo 权限
- SSH 访问
# 1. 进入目录
cd DevOpsToolkit/ubuntu-server
# 2. 配置清单
cp host.ini.example host.ini
vim host.ini编辑 host.ini:
[ubuntu_servers]
my-server ansible_host=192.168.1.100 ansible_user=root ansible_port=22
[ubuntu_servers:vars]
ansible_python_interpreter=/usr/bin/python3# 3. 配置变量
vim ansible/group_vars/all.yml必须配置:
# 用户名
username: "yourname"
# SSH 公钥(重要!)
ssh_authorized_keys:
- "ssh-rsa AAAAB3NzaC1... your_email@example.com"
# SSH 端口(可选)
ssh_port: 2222# 4. 测试连接
ansible -i host.ini ubuntu_servers -m ping
# 5. 运行配置
./bootstrap.sh# 使用新端口和新用户连接
ssh -p 2222 yourname@your_server_ip
# 验证服务
docker --version
docker compose version
sudo systemctl status nginx
sudo ufw status编辑 ansible/group_vars/all.yml:
# 禁用不需要的组件
install_docker: true # Docker CE
install_nginx: true # Nginx
install_brew: false # Homebrew(可选)
install_zsh: true # Zsh + Oh My Zsh
# 防火墙端口
allowed_ports:
- { port: "{{ ssh_port }}", proto: "tcp", comment: "SSH" }
- { port: "80", proto: "tcp", comment: "HTTP" }
- { port: "443", proto: "tcp", comment: "HTTPS" }
- { port: "3000", proto: "tcp", comment: "Custom App" }详细文档:
DevOpsToolkit/
├── README.md # 本文件
├── wsl-dev/ # WSL2 开发环境配置
│ ├── bootstrap.sh # 主入口脚本
│ ├── update.sh # 更新脚本
│ ├── uninstall.sh # 卸载脚本
│ ├── Brewfile # Homebrew 包列表
│ ├── readme.md # WSL Dev 文档
│ ├── CONFIGURATION.md # 配置指南
│ ├── QUICKREF.md # 快速参考
│ ├── ansible/
│ │ ├── playbook.yml # 主 Playbook
│ │ ├── group_vars/
│ │ │ └── all.yml # 配置变量
│ │ └── roles/ # 12 个角色
│ │ ├── backup/
│ │ ├── base/
│ │ ├── brew/
│ │ ├── devtools/
│ │ ├── shell/
│ │ ├── git/
│ │ ├── python/
│ │ ├── node/
│ │ ├── go/
│ │ ├── docker/
│ │ ├── windows-integration/
│ │ └── sudo/
│ └── scripts/ # 工具脚本
│
├── ubuntu-server/ # Ubuntu 服务器配置
│ ├── bootstrap.sh # 主入口脚本
│ ├── update.sh # 更新脚本
│ ├── host.ini.example # 清单模板
│ ├── README.md # Ubuntu Server 文档
│ ├── CONFIGURATION.md # 配置指南
│ ├── QUICKREF.md # 快速参考
│ ├── CHANGELOG.md # 更新日志
│ └── ansible/
│ ├── playbook.yml # 主 Playbook
│ ├── group_vars/
│ │ └── all.yml # 配置变量
│ └── roles/ # 9 个角色
│ ├── base/
│ ├── user/
│ ├── security/
│ ├── firewall/
│ ├── docker/
│ ├── nginx/
│ ├── brew/
│ ├── shell/
│ └── fonts/
│
└── AcmeConfig/ # ACME 证书管理(独立模块)
├── acme-init.sh # 初始化脚本
├── acme-check.sh # 证书检查
├── acme-cleanup.sh # 清理脚本
└── README.md # ACME 文档
- Ansible - 配置管理和自动化
- Bash - Shell 脚本
- Homebrew - 包管理器
- Oh My Zsh - Zsh 框架
- uv - Python 环境管理
- nvm - Node.js 版本管理
- goenv - Go 版本管理
- Docker Desktop - 容器运行时
- UFW - 防火墙
- Docker CE - 容器引擎
- Nginx - Web 服务器
- OpenSSH - SSH 服务器
- eza - 现代化 ls 替代
- bat - cat 增强版
- fzf - 模糊查找
- zoxide - 智能 cd
- lazygit - Git TUI
- lazydocker - Docker TUI
- btop - 系统监控
- 文档 - 证书管理使用说明
- Windows 用户希望获得完整 Linux 开发体验
- 需要 Docker + 多语言开发环境
- 追求现代化命令行工具和高效工作流
- 需要与 Windows 文件系统无缝集成
- 全新服务器初始化和安全加固
- 开发/测试/生产环境标准化配置
- 多服务器批量部署
- CI/CD 流水线中的服务器配置
Q: 为什么需要 Docker Desktop?
A: WSL2 中不运行 Docker daemon,Docker CLI 连接到 Windows 上的 Docker Desktop。
Q: 可以不安装某些语言吗?
A: 可以,编辑 ansible/group_vars/all.yml 设置 enable_python: false 等。
Q: 如何更新已安装的环境?
A: 运行 ./update.sh 或重新执行 ./bootstrap.sh。
Q: 配置后无法 SSH 连接?
A: 确保防火墙放行了新的 SSH 端口,通过控制台登录检查。
Q: Docker 命令提示权限不足?
A: 用户刚被添加到 docker 组,需要重新登录生效。
Q: 如何只运行特定角色?
A: 使用 ansible-playbook -i host.ini ansible/playbook.yml --tags docker
- ✅ 安装前确保 Docker Desktop 正在运行
- ✅ 定期运行
./update.sh保持工具更新 - ✅ 使用
.zshrc自定义别名提高效率 - ✅ 为不同项目创建独立的 Python/Node 环境
- ✅ 首次运行前在测试服务器验证
- ✅ 修改 SSH 配置时保持当前会话不断开
- ✅ 配置完成后在新终端测试连接
- ✅ 定期审查防火墙规则和系统更新
- ✅ 使用 Ansible Vault 加密敏感信息
- ✅ 使用 SSH 密钥认证,禁用密码登录
- ✅ 修改 SSH 默认端口
- ✅ 禁用 root 远程登录
- ✅ 启用防火墙,仅开放必要端口
- ✅ 使用非标准用户名
- ✅ 定期更新系统和软件包
- ✅ 不要在配置文件中存储明文密码
- ✅ 使用 Ansible Vault 加密敏感变量
- ✅ 使用 SSH Agent 管理密钥
- ✅ 定期轮换密码和密钥
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
MIT License - 详见 LICENSE 文件
本项目参考和借鉴了:
- Ansible 官方最佳实践
- Ubuntu Server 官方文档
- WSL2 开发社区经验
- 开源社区的各种优秀工具
- 📧 Email: sunpcm@163.com
- 🐛 Issues: GitHub Issues
⭐ 如果这个项目对你有帮助,请给个 Star!
🎉 享受自动化配置的便利吧!