# Violet **Repository Path**: is-molly/violet ## Basic Information - **Project Name**: Violet - **Description**: 基于 Ansible 的各类开源软件生命周期管理工具集,支持软件的自动化部署、运维、扩缩容,提供生产级的离线安装与滚动更新能力。 - **Primary Language**: Shell - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://monap.cn/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-14 - **Last Updated**: 2025-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: Ansible ## README # Violet (Ansible OPS) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![Ansible](https://img.shields.io/badge/Ansible-2.9+-green.svg)](https://www.ansible.com/) 基于 Ansible 的应用生命周期管理工具集,提供生产级的自动化部署、运维和扩缩容能力。 ## 项目概览 本仓库包含多个 Ansible 运维模块,每个模块针对特定类型的应用提供完整的生命周期管理能力: | 模块 | 说明 | 文档 | |------|------|------| | [springboot](./springboot) | Spring Boot 应用部署管理 | [README](./springboot/README.md) | | [seatunnel](./seatunnel) | Apache SeaTunnel 2.3.12 集群管理 | [README](./seatunnel/README.md) | ## 目录结构 ``` ansible-ops/ ├── README.md # 本文件 ├── LICENSE # Apache 2.0 许可证 │ ├── springboot/ # Spring Boot 模块 │ ├── xctl # 入口脚本 │ ├── ansible.cfg │ ├── example/ │ ├── playbooks/ │ ├── roles/ │ └── README.md │ └── seatunnel/ # SeaTunnel 模块 ├── xctl # 入口脚本 ├── ansible.cfg ├── example/ ├── playbooks/ ├── roles/ └── README.md ``` ## 快速开始 ### 环境要求 - **控制节点** - Python 3.6+ - Ansible 2.9+ - **目标节点** - Linux (RHEL/CentOS/Ubuntu/Debian/Kylin) - SSH 访问 - Python 2.7+ 或 Python 3.5+ ### 安装 Ansible ```bash # pip 安装 pip install ansible # 或 yum 安装 (RHEL/CentOS) yum install ansible # 或 apt 安装 (Ubuntu/Debian) apt install ansible ``` ## 设计理念 ### 1. 模块化设计 每个模块独立运行,拥有自己的配置、Playbook 和 Role,可单独使用或组合使用。 ### 2. 声明式配置 采用类似 Helm values.yaml 的配置风格,所有可配置项集中在一个 YAML 文件中: ```yaml # 环境配置 env: basePath: /opt/app java: version: "11" # 服务配置 service: name: my-service port: 8080 # JVM 配置 jvm: heapSize: 2g ``` ### 3. 生产级可用 - 参数校验与环境检查 - 优雅停机与健康检查 - 滚动更新与回滚机制 - 完善的错误处理 ### 4. 离线部署支持 所有模块支持全离线部署,安装包通过配置指定本地路径。 ## 通用 Role 说明 各模块有相似的 Role 设计模式: | Role | 功能 | |------|------| | `check_param` | 参数完整性校验 | | `check_env` | 环境检查(JDK、端口、资源) | | `distribute` | 分发安装包 | | `configure` | 生成配置文件 | | `start` | 启动服务 | | `stop` | 停止服务 | | `check_status` | 状态检查 | | `cleanup` | 清理文件 | ## 适配系统 | 系统 | 版本 | 状态 | |------|------|:----:| | CentOS | 7.x / 8.x | ✅ | | RHEL | 7.x / 8.x / 9.x | ✅ | | Rocky Linux | 8.x / 9.x | ✅ | | Ubuntu | 18.04 / 20.04 / 22.04 | ✅ | | Debian | 10 / 11 / 12 | ✅ | | Kylin | V10 | ✅ | ## 贡献指南 欢迎提交 Issue 和 Pull Request。 ### 开发规范 1. **Role 命名**:使用小写下划线命名(如 `check_param`) 2. **变量命名**:使用小写下划线命名 3. **任务命名**:使用中文描述,清晰表达任务目的 4. **模板文件**:使用 `.j2` 后缀 ### 添加新模块 1. 在根目录创建模块目录 2. 参考现有模块结构创建文件 3. 更新根 README.md 的模块列表 4. 提交 PR ## 常见问题 ### Q: 如何查看详细执行日志? ```bash ./xctl -i -c -v # 详细 ./xctl -i -c -vvv # 更详细 ``` ### Q: 如何只在部分主机执行? ```bash ./xctl -i -c -l "host1,host2" ``` ### Q: 如何进行模拟执行(dry-run)? ```bash ./xctl -i -c --check ``` ### Q: 如何测试单个 Role? ```bash ./uctl -i -c ``` ## License [Apache License 2.0](LICENSE) ## 相关链接 - [Ansible 官方文档](https://docs.ansible.com/) - [Spring Boot 官方文档](https://spring.io/projects/spring-boot) - [Apache SeaTunnel 官方文档](https://seatunnel.apache.org/)