经过上面的分析,这些模块中,每个模块都可以作为一个`execution`元素,mariadb的安装与卸载可为一组(group)(3)替换配置文件(4)修改文件执行权限(5)同步系统时间可为一组,作为基本功能。因此,
- 编写mariadb安装`execution`:操作是`OperRunDependency`类,它需要执行两个依赖(`dependency`)操作。而实际的操作是两个子操作(`sub-execution`),它们是`OperRunCommand`类,一个是安装数据库,一个是初始化数据库。分别通过执行`install_mysqldb.sh`和`import_mysql_sql.sh`实现。安装同时开通端口,安装前需先执行(3)(4)(5),因此使用`dependency`来实现。因此,xml配置如下:
```xml
<execution name="安装MySQL及初始化数据库" id="installMysqlAndInitDb" display="true" class-name="deploy.OperRunDependency">
<dependencies>
<dependency ref-id="installMysql"/>
<dependency ref-id="createMysqlDb"/>
</dependencies>
<sub-execution>
<execution name="安装MySQL" id="installMysql" display="true" class-name="deploy.OperRunCommand">
<configuration>
<commands>
<command charset="utf-8">
<exec><![CDATA[scripts/linux/db/mariadb/install_mysqldb.sh]]></exec>
<args>
<arg><![CDATA[$${server.mysql.db.password}]]></arg>
</args>
</command>
<!-- 开通端口 -->
<command charset="utf-8">
<exec><![CDATA[scripts/linux/common/add_port.sh]]></exec>
<args>
<arg><![CDATA[$${server.mysql.port}]]></arg>
</args>
</command>
</commands>
</configuration>
<dependencies>
<dependency ref-id="updateConfigFiles"/>
<dependency ref-id="chmodFile"/>
<dependency ref-id="syncOsTime"/>
</dependencies>
</execution>
<execution name="初始化MySQL数据库" id="createMysqlDb" display="true" class-name="deploy.OperRunCommand">
<configuration>
<commands>
<command charset="utf-8">
<exec><![CDATA[scripts/linux/db/mariadb/import_mysql_sql.sh]]></exec>
<args>
<arg><![CDATA[$${server.mysql.db.username}]]></arg>
<arg><![CDATA[$${server.mysql.db.password}]]></arg>
<arg><![CDATA[$${server.mysql.port}]]></arg>
</args>
</command>
</commands>
</configuration>
<dependencies>
<dependency ref-id="updateConfigFiles"/>
<dependency ref-id="chmodFile"/>
<dependency ref-id="syncOsTime"/>
</dependencies>
</execution>
</sub-execution>
</execution>
```
- 由于要把mariadb安装和卸载为一组显示,添加组合(`group`)用于显示,即可。如下:
```xml
<group name="MySQL安装与卸载">
安装及卸载的execution
</group>
```
此示例,使用部署工具运行后,显示结果如下:
![mysql安装卸载](https://gitee.com/mianshenglee/datastorage/raw/master/md-photo/deploy-tool/mysql.png)
[21]: http://static.zybuluo.com/miansheng/oyvszacmgyuxazkk7p80w56w/mysql.png
- 关于部署工具
- 1. 使用场景
- 1.1 传统部署方式痛点
- 1.2 自动部署方式
- 2. 功能概览
- 2.1 部署工具面向的人员
- 2.2 部署工具功能
- 3. 部署工具运行流程
- 3.1 部署工具从制作到使用
- 3.2 部署工具目录结构
- 3.3 运行流程
- 3.4 配置文件概述
- 3.4.1 全局属性配置文件global_config
- 3.4.2 用户属性配置文件custom_config
- 3.4.3 其它属性配置文件
- 3.4.4 流程配置文件
- 3.4.5 占位符
- 4. 部署工具使用详解
- 4.1 流程配置文件简单示例
- 4.2 流程配置文件结构
- 4.2.1 首行及根元素
- 4.2.2 xml文件结构
- 4.2.3 properties/property元素
- 4.2.4 executions/group元素
- 4.2.5 execution元素
- 4.2.6 configuration元素
- 4.2.7 dependencies元素
- 4.2.8 sub-execution元素
- 4.2.9 commands元素
- 4.2.10 replace-files元素
- 4.2.11 datasourse/statements元素
- 4.2.12 args元素
- 4.3 流程配置文件功能示例
- 4.3.1 分析安装及卸载mariadb需要的模块
- 4.3.2 确定用户统一配置
- 4.3.3 编写流程配置文件
- 4.4 部署脚本编写
- 5. 完整db(mariadb及redis)部署示例
- 5.1 mariadb及redis部署结构分析
- 5.1.1 模块划分
- 5.1.2 部署环境包制作
- 5.1.3 项目实施人员使用流程
- 5.2 db部署包示例及脚本
- 5.3 部署环境升级
- 6. 问题与反馈