所有配置项都在 ansible/group_vars/all.yml 文件中:
# ===== Core =====
enable_brew: true # 是否安装 Homebrew
enable_zsh: true # 是否配置 zsh
# ===== Backup =====
enable_backup: true # 运行前备份现有配置
# ===== Languages =====
enable_python: true # Python (uv)
enable_go: true # Go (goenv)
enable_node: true # Node.js (nvm)
node_version: "24.11.1" # 默认安装的 Node 版本
# ===== Git Configuration =====
enable_git_config: true
git_user_name: "Your Name" # Git 用户名
git_user_email: "you@example.com" # Git 邮箱
git_editor: "nvim" # 默认编辑器
git_default_branch: "main" # 默认分支名
git_pull_rebase: "false" # pull 时是否 rebase
enable_windows_git_credential_helper: true # 使用 Windows Git 凭据管理器
# ===== Containers =====
enable_docker: true # Docker CLI 配置
# ===== Windows Integration =====
enable_windows_integration: true # Windows 互操作功能
create_windows_symlinks: true # 创建到 Windows 目录的符号链接
# ===== Privilege =====
enable_passwordless_sudo: true # 免密码 sudo (可选)编辑 ansible/group_vars/all.yml:
git_user_name: "张三"
git_user_email: "zhangsan@company.com"
git_editor: "vim" # 或 "code --wait" 使用 VS Code
git_default_branch: "master" # 如果公司使用 master编辑 Brewfile:
# 添加你需要的包
brew "tmux"
brew "wget"
brew "tree"编辑 ansible/roles/shell/templates/zshrc.j2:
# 在文件末尾添加自定义配置
# 自定义别名
alias ll='ls -lah'
alias myproject='cd ~/projects/myproject'
# 自定义环境变量
export MY_ENV_VAR="value"编辑 ansible/roles/shell/templates/zshrc.j2:
# 修改这一行
ZSH_THEME="robbyrussell" # 或其他主题:powerlevel10k, cloud, etc.可用主题列表:https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
现代 CLI 工具(如 eza、btop、lazygit)使用图标字符,需要安装 Nerd Font 才能正确显示。
使用 winget(推荐):
winget install -e --id DEVCOM.FiraCodeNerdFont手动安装:
- 访问 https://github.com/ryanoasis/nerd-fonts/releases
- 下载
FiraCode.zip - 解压后,右键字体文件 → 为所有用户安装
- 打开 Windows Terminal 设置(
Ctrl + ,) - 配置文件 → Ubuntu → 外观
- 字体 → 选择
FiraCode Nerd Font或FiraCode NF - 保存并重启终端
验证安装:
ls # 应显示文件/文件夹图标
eza --icons
btop如果图标显示为乱码(如 ),说明字体未正确配置。
编辑 ansible/roles/shell/templates/zshrc.j2:
# 在 plugins 行添加
plugins=(git zsh-autosuggestions zsh-syntax-highlighting docker kubectl)内置插件:https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins
如不需要某些组件,在 group_vars/all.yml 中设置为 false:
enable_go: false # 不安装 Go
enable_windows_integration: false # 不配置 Windows 互操作
enable_passwordless_sudo: false # 不启用免密 sudo自动备份现有配置文件:
.zshrc.bashrc.gitconfig.profile.zprofile
备份位置:~/.wsl-dev-backup/
安装基础系统包:
- build-essential
- curl, wget, git
- 其他开发必需工具
安装 Homebrew (Linuxbrew) 包管理器
通过 Homebrew 安装开发工具(参考 Brewfile)
配置 zsh 环境:
- 安装 Oh My Zsh
- 安装 zsh-autosuggestions
- 安装 zsh-syntax-highlighting
- 部署
.zshrc配置
配置 Git 全局设置:
- 用户名和邮箱
- 默认编辑器
- 默认分支
- 凭据管理(Windows)
- 其他 Git 选项
安装 uv - 现代 Python 包和项目管理工具
通过 nvm 安装和管理 Node.js
通过 goenv 安装和管理 Go
配置 Docker CLI,连接到 Windows Docker Desktop
增强 WSL 与 Windows 的互操作:
winopen- 在 Windows 资源管理器打开winstart- 用默认应用打开文件clip- 复制到剪贴板paste- 从剪贴板粘贴- 创建 Windows 目录快捷符号链接
(可选)配置免密码 sudo
./bootstrap.sh脚本是幂等的,可以安全重复执行。
运行 Ansible playbook 并指定 tag:
cd ansible
ansible-playbook playbook.yml --tags "shell" # 只更新 shell 配置
ansible-playbook playbook.yml --tags "git" # 只更新 git 配置检查备份目录:
ls -la ~/.wsl-dev-backup/恢复需要的文件:
cp ~/.wsl-dev-backup/.zshrc.<timestamp> ~/.zshrc./uninstall.sh会删除所有安装的工具和配置,并在删除前创建最终备份。
# Homebrew 包
brew list
# Oh My Zsh 插件
ls ~/.oh-my-zsh/custom/plugins/
# Node 版本
nvm list
# Python
uv python list
# Go 版本
goenv versions确保 WSL 的 Windows 互操作已启用:
# 检查
cat /proc/sys/fs/binfmt_misc/WSLInterop
# 如显示 disabled,编辑 /etc/wsl.conf
sudo nano /etc/wsl.conf添加:
[interop]
enabled=true然后在 PowerShell 中重启 WSL:
wsl --shutdown编辑 ansible/group_vars/all.yml:
node_version: "20.11.0" # 改为你需要的版本重新运行:
./bootstrap.sh或手动:
nvm install 20.11.0
nvm use 20.11.0
nvm alias default 20.11.0确保在 Windows 上安装了 VS Code,然后:
编辑 ansible/group_vars/all.yml:
git_editor: "code --wait"或手动配置:
git config --global core.editor "code --wait"- 创建角色目录:
mkdir -p ansible/roles/myrole/tasks- 创建任务文件
ansible/roles/myrole/tasks/main.yml:
---
- name: My custom task
debug:
msg: "Hello from my role"- 在
ansible/playbook.yml中添加:
roles:
# ... 现有角色
- { role: myrole, when: enable_myrole | default(false) }- 在
ansible/group_vars/all.yml中添加开关:
enable_myrole: true如果想用 Prezto 或 Zinit 代替 Oh My Zsh:
- 禁用 shell role:
enable_zsh: false-
手动安装你喜欢的框架
-
或修改
ansible/roles/shell/tasks/main.yml实现自己的安装逻辑