# fastdeploy **Repository Path**: yhgit/fastdeploy ## Basic Information - **Project Name**: fastdeploy - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-13 - **Last Updated**: 2026-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FastDeploy - 离线自动化部署工具 基于 Ansible 的离线环境自动化部署脚本,支持 Docker 环境安装、中间件部署、应用部署及数据初始化。 ## 目录结构 ``` fastdeploy/ ├── ansible.cfg # Ansible配置文件 ├── site.yml # 主入口Playbook(一键部署) ├── inventory/ │ └── hosts.yml # 服务器清单配置 ├── group_vars/ │ ├── all.yml # 全局变量配置 │ ├── app_servers.yml # 应用服务器变量 │ └── middleware_servers.yml # 中间件服务器变量 ├── playbooks/ │ ├── 01_app_docker_install.yml # 阶段1: 应用服务器Docker安装 │ ├── 02_middleware_docker_install.yml # 阶段2: 中间件服务器Docker安装 │ ├── 03_middleware_deploy.yml # 阶段3: 中间件部署 │ ├── 04_app_deploy.yml # 阶段4: 应用部署 │ └── 05_data_init.yml # 阶段5: 数据初始化 └── roles/ ├── docker_install/ # Docker离线安装角色 ├── docker_load_images/ # 镜像加载角色 ├── middleware_deploy/ # 中间件部署角色 ├── app_deploy/ # 应用部署角色 └── data_init/ # 数据初始化角色 ``` ## 服务器规划 | 角色 | IP地址 | 说明 | |------|--------|------| | 应用服务器 | 192.168.0.249 | 部署业务应用服务 | | 中间件服务器 | 192.168.0.248 | 部署DM8、PostgreSQL、Redis等中间件 | ## 前置准备 ### 1. 控制节点要求 - 安装 Ansible 2.9+ - 配置 SSH 免密登录到目标服务器 ```bash # 安装Ansible(如果未安装) pip install ansible # 配置SSH免密登录 ssh-copy-id root@192.168.0.248 ssh-copy-id root@192.168.0.249 ``` ### 2. 目标服务器离线文件准备 在**两台目标服务器**上准备以下目录结构: ``` /Users/yanghao/deploy/ ├── docker/ # Docker离线安装包 │ ├── docker-ce-24.0.7-1.el7.x86_64.rpm │ ├── docker-ce-cli-24.0.7-1.el7.x86_64.rpm │ ├── containerd.io-1.6.26-3.1.el7.x86_64.rpm │ └── docker-compose # docker-compose二进制文件 │ ├── images/ │ ├── app/ # 应用镜像(应用服务器) │ │ ├── app-gateway.tar │ │ ├── app-auth.tar │ │ ├── app-system.tar │ │ ├── app-business.tar │ │ └── app-frontend.tar │ │ │ └── middleware/ # 中间件镜像(中间件服务器) │ ├── dm8.tar │ ├── postgresql-15.tar │ ├── redis-7.tar │ ├── nacos-2.2.tar │ ├── nginx-1.24.tar │ └── minio.tar │ ├── middleware/ # 中间件编排(中间件服务器) │ └── docker-compose.yml │ ├── services/ # 应用编排(应用服务器) │ └── docker-compose.yml │ └── scripts/ # 初始化脚本(中间件服务器) ├── 01_init_schema.sql ├── 02_init_data.sql └── ... ``` ### 3. 修改配置文件 #### 3.1 服务器清单 `inventory/hosts.yml` ```yaml all: children: app_servers: hosts: app_server_01: ansible_host: 192.168.0.249 ansible_user: root # 选择认证方式(二选一) ansible_password: "your_password" # 密码认证 # ansible_ssh_private_key_file: ~/.ssh/id_rsa # 密钥认证 middleware_servers: hosts: middleware_server_01: ansible_host: 192.168.0.248 ansible_user: root ansible_password: "your_password" ``` #### 3.2 全局变量 `group_vars/all.yml` 根据实际情况修改数据库账号密码、API接口地址等配置。 ## 使用方式 ### 方式一:一键完整部署 执行所有部署阶段: ```bash cd fastdeploy ansible-playbook site.yml ``` ### 方式二:分阶段部署 按照部署流程逐阶段执行,便于排查问题: ```bash cd fastdeploy # 阶段1: 应用服务器 - Docker环境安装 ansible-playbook playbooks/01_app_docker_install.yml # 阶段2: 中间件服务器 - Docker环境安装 ansible-playbook playbooks/02_middleware_docker_install.yml # 阶段3: 中间件服务器 - 启动中间件容器 ansible-playbook playbooks/03_middleware_deploy.yml # 阶段4: 应用服务器 - 启动应用容器 ansible-playbook playbooks/04_app_deploy.yml # 阶段5: 数据初始化(数据库脚本 + API调用) ansible-playbook playbooks/05_data_init.yml ``` ### 方式三:使用标签选择性执行 ```bash # 仅执行Docker安装相关任务 ansible-playbook site.yml --tags "docker" # 仅执行部署相关任务(中间件+应用) ansible-playbook site.yml --tags "deploy" # 跳过数据初始化阶段 ansible-playbook site.yml --skip-tags "data_init" # 仅执行应用服务器相关任务 ansible-playbook site.yml --tags "app" # 仅执行中间件服务器相关任务 ansible-playbook site.yml --tags "middleware" ``` ## 部署流程图 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 部署流程 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ 应用服务器 │ │ 中间件服务器 │ │ │ │ 192.168.0.249 │ │ 192.168.0.248 │ │ │ └────────┬─────────┘ └────────┬─────────┘ │ │ │ │ │ │ 阶段1 ▼ 阶段2 ▼ │ │ ┌──────────────────┐ ┌──────────────────┐ │ │ │ Docker环境安装 │ │ Docker环境安装 │ │ │ │ + 加载应用镜像 │ │ + 加载中间件镜像 │ │ │ └────────┬─────────┘ └────────┬─────────┘ │ │ │ │ │ │ │ 阶段3 ▼ │ │ │ ┌──────────────────┐ │ │ │ │ 启动中间件容器 │ │ │ │ │ DM8/PG/Redis/... │ │ │ │ └────────┬─────────┘ │ │ │ │ │ │ 阶段4 ▼ │ │ │ ┌──────────────────┐ │ │ │ │ 启动应用容器 │ │ │ │ │ Gateway/Auth/... │ │ │ │ └────────┬─────────┘ │ │ │ │ │ │ │ └────────────┬────────────┘ │ │ │ │ │ 阶段5 ▼ │ │ ┌──────────────────┐ │ │ │ 数据初始化 │ │ │ │ - DM8脚本执行 │ │ │ │ - PostgreSQL脚本 │ │ │ │ - API发布流程 │ │ │ └──────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ## 常用命令 ```bash # 检查语法 ansible-playbook site.yml --syntax-check # 模拟执行(不实际执行) ansible-playbook site.yml --check # 显示详细输出 ansible-playbook site.yml -v # 显示更详细输出(调试用) ansible-playbook site.yml -vvv # 指定主机执行 ansible-playbook site.yml --limit app_servers # 从指定任务开始执行 ansible-playbook site.yml --start-at-task "启动Docker服务" # 交互式逐步执行 ansible-playbook site.yml --step ``` ## 常见问题 ### Q1: SSH连接失败 ```bash # 检查SSH连接 ansible all -m ping # 如果使用密码认证,安装sshpass yum install -y sshpass # CentOS/RHEL ``` ### Q2: Docker服务启动失败 检查 RPM 包是否完整,确保依赖包都已准备: - docker-ce - docker-ce-cli - containerd.io ### Q3: 容器启动超时 修改 `group_vars/all.yml` 中的超时配置: ```yaml container_wait_timeout: 600 # 增加超时时间 container_wait_delay: 15 # 增加检查间隔 ``` ### Q4: 数据库连接失败 确保中间件容器已完全启动后再执行数据初始化: ```bash # 先单独执行中间件部署 ansible-playbook playbooks/03_middleware_deploy.yml # 手动检查容器状态 ssh root@192.168.0.248 "docker ps" # 确认无误后再执行数据初始化 ansible-playbook playbooks/05_data_init.yml ``` ## 自定义配置 如需添加新的应用或中间件,修改对应的变量文件: - **应用镜像**: `group_vars/app_servers.yml` 中的 `app_images` - **中间件镜像**: `group_vars/middleware_servers.yml` 中的 `middleware_images` - **初始化脚本**: `group_vars/middleware_servers.yml` 中的 `*_init_scripts_container`