# Ansible 管理项目 这是一个用于自动化部署和管理多个服务器配置的 Ansible 项目,包括 Caddy 反向代理、frpc 内网穿透和 Docker Compose 服务。 ## 项目结构 ``` ansible_management/ ├── inventory.ini # Ansible 主机清单文件 ├── deploy_caddy.yml # 部署 Caddy 配置 ├── deploy_clash.yml # 部署 Clash 和 Docker Compose 服务 ├── deploy_docker.yml # 部署 Docker Compose 应用 ├── deploy_frpc.yml # 部署 frpc 服务 └── files/ # 配置文件目录 ├── 192.168.31.101/ # 本地服务器配置 │ ├── Caddyfile │ ├── clash/ │ ├── dify/ │ ├── frp/ │ │ ├── docker-compose.yml │ │ └── frpc.toml │ ├── lobe-chat-database/ │ └── openlist/ └── 192.238.204.39/ # 远程服务器配置 └── Caddyfile ``` ## 前置要求 1. **Ansible**:在控制节点上安装 Ansible ```bash # Ubuntu/Debian sudo apt update && sudo apt install ansible # macOS brew install ansible ``` 2. **SSH 访问**:确保可以通过 SSH 无密码访问目标服务器 ```bash # 生成 SSH 密钥(如果还没有) ssh-keygen -t ed25519 # 复制公钥到目标服务器 ssh-copy-id root@192.168.31.101 ssh-copy-id root@192.238.204.39 ``` 3. **目标服务器要求**: - 已安装 Python 3(Ansible 需要) - 对于 Alpine Linux,可能需要预先安装 Python 3 ## 配置说明 ### 主机清单 (inventory.ini) 编辑 `inventory.ini` 文件,配置您的服务器信息: ```ini [caddy_servers] # 本地 1panel 服务器 192.168.31.101 # 远程 Ubuntu 服务器 192.238.204.39 [all:vars] # 请替换成您登录服务器的用户名 ansible_user=root # 可选:指定 SSH 密钥路径 192.168.31.101 ansible_ssh_private_key_file=~/.ssh/id_ed25519 192.168.204.39 ansible_ssh_private_key_file=~/.ssh/id_ed25519 ``` ### 配置文件 在 `files/` 目录下,为每个主机准备相应的配置文件: - **Caddyfile**:Caddy 反向代理配置 - **frpc.toml**:frpc 内网穿透配置 - **docker-compose.yml**:Docker Compose 服务定义 文件命名规则:`files/<主机名>/<配置文件>` ## 部署命令 ### 1. 测试连接 在部署前,先测试 Ansible 是否能连接到所有主机: ```bash ansible caddy_servers -i inventory.ini -m ping ``` ### 2. 部署 Caddy 配置 部署 Caddy 配置文件并重载服务: ```bash ansible-playbook -i inventory.ini deploy_caddy.yml ``` ### 3. 部署 frpc 服务 部署 frpc 配置并重启服务: ```bash ansible-playbook -i inventory.ini deploy_frpc.yml ``` ### 4. 部署 Docker Compose 服务 部署 Docker Compose 应用: ```bash ansible-playbook -i inventory.ini deploy_docker.yml ``` ### 5. 部署 Clash 服务 部署 Clash 相关配置: ```bash ansible-playbook -i inventory.ini deploy_clash.yml ``` ### 6. 部署所有服务 一次性部署所有服务: ```bash ansible-playbook -i inventory.ini deploy_caddy.yml deploy_frpc.yml deploy_docker.yml deploy_clash.yml ``` ## 服务说明 ### Caddy Caddy 是一个自动 HTTPS 的 Web 服务器,用于反向代理多个服务到公网域名。 - **配置文件**:`/etc/caddy/Caddyfile` - **服务管理**: - systemd: `systemctl reload caddy` - OpenRC: `rc-service caddy reload` ### frpc frpc 是 frp 的客户端,用于内网穿透,将内网服务暴露到公网。 - **配置文件**:`/root/frpc/data/frpc.toml` - **Docker Compose**:`/root/frpc/docker-compose.yml` - **管理命令**:`docker compose -f /root/frpc/docker-compose.yml up -d` ### Docker Compose 服务 支持通过 Docker Compose 部署的各种应用服务。 ## 注意事项 1. **配置验证**:Caddyfile 会在部署前进行语法验证 2. **权限设置**:敏感配置文件(如 frpc.toml)使用 `0640` 权限 3. **系统兼容性**: - 支持 systemd(Ubuntu/Debian) - 支持 OpenRC(Alpine Linux) 4. **主机特定配置**:某些任务使用 `when` 条件仅在特定主机上执行 ## 故障排查 ### 查看详细输出 ```bash ansible-playbook -i inventory.ini deploy_caddy.yml -vvv ``` ### 检查特定主机 ```bash ansible-playbook -i inventory.ini deploy_caddy.yml --limit 192.168.31.101 ``` ### 仅执行检查(不实际执行) ```bash ansible-playbook -i inventory.ini deploy_caddy.yml --check ``` ## 许可证 请参阅 [LICENSE](LICENSE) 文件了解详细信息。