本发明涉及一种构建方法,特别是涉及一种openstack组件容器化的构建方法。
背景技术:
由于云计算技术的兴起,带动了云计算平台openstack(开源的云计算管理平台项目)的飞速发展,使之成为了目前非常流行的开源云管理平台。openstack平台每半年更新一个版本,几百家公司,几万人加入其中为其贡献代码,使之功能越来越强大,支持的组件越来越多。随之而来的问题就是openstack配置复杂、组件与组件之间紧密联系、组件与操作系统紧耦合,版本与版本之间变动大,没法平滑过渡升级。
技术实现要素:
本发明所要解决的技术问题是提供一种openstack组件容器化的构建方法,其能够降低操作系统升级对openstack组件工作影响,操作简单,实用方便。
本发明是通过下述技术方案来解决上述技术问题的:一种openstack组件容器化的构建方法,其特征在于,其包括以下步骤:
步骤一,openstack组件docker镜像生成;
步骤二,部署节点运行环境配置;
步骤三,部署节点本地registry服务配置;
步骤四,导入openstack组件docker镜像,该步骤通过docker client端命令行工具和导入脚本完成;
步骤五,推送openstack组件docker镜像到本地registry保存,该步骤通过docker client端命令行工具和自动化脚本完成;
步骤六,将openstack组件部署到服务器;
步骤七,升级已经部署的openstack组件。
优选地,所述步骤一包括以下步骤:
步骤十,编写Jinja2模板文件;
步骤十一,ansible工具通过Jinja2模板文件和生成docker镜像所需配置文件,生成Dockerfile文件;
步骤十二,ansible工具通过docker.py模块调用docker执行Dockerfile文件指定的一系列命令和参数进行openstack组件镜像构建;
步骤十三,openstack组件镜像构建完成,根据配置文件将镜像推送到指定的Registry服务器保存或者将生成的openstack组件镜像保存为归档压缩文件。
优选地,所述步骤二包括以下步骤:
步骤二十,部署节点和被部署节点之间通信是通过ssh协议,首先配置主机之间ssh无密码登录;
步骤二十一,配置主机名和ip地址之间映射关系;
步骤二十二,配置ntp server服务;
步骤二十三,安装部署模块和相关依赖包。
优选地,所述步骤三包括以下步骤:
步骤三十,registry软件是以docker镜像方式发布,配置registry首先配置docker deamon;
步骤三十一,docker deamon运行正常,导入registry docker镜像;
步骤三十二,运行registry容器实例。
优选地,所述步骤六包括以下步骤:
步骤六十,编写ansible playbook容器部署代码;
步骤六十一,用户在部署节点上执行部署命令,该命令调用自动化运维工具ansible playbook部署代码,部署代码通过docker.py调用docker运行openstack组件容器实例。
优选地,所述步骤七包括以下步骤:
步骤七十,用户准备升级使用的openstack组件docker镜像,更新到原来部署节点;
步骤七十一,修改全局配置文件openstack组件docker镜像tag参数为新镜像tag;
步骤七十二,用户在部署节点上执行升级命令,该命令调用自动化运维工具ansible playbook升级代码,升级代码通过docker.py调用docker完成openstack组件镜像比较,如果镜像与原来镜像不同,则删除原来运行的容器实例,使用指定的新镜像创建容器实例,完成组件升级。
本发明的积极进步效果在于:本发明能够解决openstack组件与操作系统之间的紧耦合问题,操作系统升级更新软件包对openstack组件工作影响降到了最低可控范围;解决了openstack组件之间共用库文件,一个组件改变其中文件影响其他组件问题;解决了openstack版本升级问题,由一个版本升级到另一个版本变的更简单;对于openstack问题定位也是很好的改进,问题定位范围缩小到一个容器内;对于openstack组件部署时间改善明显,原来一个个包安装、配置、运行,现在通过自动化运维工具ansible启动一个个docker容器。
附图说明
图1为本发明的openstack组件镜像制作流程图。
图2为本发明的openstack组件部署流程图。
图3为本发明的openstack组件升级流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
如图1至图3所示,本发明openstack组件容器化的构建方法包括以下步骤:
步骤一,openstack组件docker(开源的应用容器引擎)镜像生成;
步骤二,部署节点运行环境配置;
步骤三,部署节点本地registry(registry是docker镜像管理软件)服务配置;
步骤四,导入openstack组件docker镜像,该步骤通过docker client端命令行工具和导入脚本完成;
步骤五,推送openstack组件docker镜像到本地registry保存,该步骤通过docker client端命令行工具和自动化脚本完成;
步骤六,将openstack组件部署到服务器;
步骤七,升级已经部署的openstack组件。
所述步骤一包括以下步骤:
步骤十,编写Jinja2(基于python的模板引擎)模板文件;
步骤十一,ansible(基于python开发的自动化运维工具)工具通过Jinja2模板文件和生成docker镜像所需配置文件,生成Dockerfile(Dockerfile是由一系列命令和参数构成的脚本)文件;
步骤十二,ansible工具通过docker.py模块调用docker执行Dockerfile文件指定的一系列命令和参数进行openstack组件镜像构建;
步骤十三,openstack组件镜像构建完成,根据配置文件将镜像推送到指定的Registry服务器保存或者将生成的openstack组件镜像保存为归档压缩文件。
所述步骤二包括以下步骤:
步骤二十,部署节点和被部署节点之间通信是通过ssh协议,首先配置主机之间ssh无密码登录;
步骤二十一,配置主机名和ip地址之间映射关系;
步骤二十二,配置ntp server服务(平台各组件之间工作正常,要求严格时间同步);
步骤二十三,安装部署模块和相关依赖包。
所述步骤三包括以下步骤:
步骤三十,registry软件是以docker镜像方式发布,配置registry首先配置docker deamon;
步骤三十一,docker deamon运行正常,导入registry docker镜像;
步骤三十二,运行registry容器实例。
所述步骤六包括以下步骤:
步骤六十,编写ansible playbook(ansible使用一种比较易于理解的方法来描述自己的任务配置文件。ansible的任务配置文件被称之为“playbook”)容器部署代码;
步骤六十一,用户在部署节点上执行deploy(部署)命令,该命令调用自动化运维工具ansible playbook部署代码,部署代码通过docker.py调用docker运行openstack组件容器实例。
所述步骤七包括以下步骤:
步骤七十,用户准备升级使用的openstack组件docker镜像,更新到原来部署节点;
步骤七十一,修改全局配置文件openstack组件docker镜像tag参数为新镜像tag;
步骤七十二,用户在部署节点上执行upgrade(升级)命令,该命令调用自动化运维工具ansible playbook升级代码,升级代码通过docker.py调用docker完成openstack组件镜像比较,如果镜像与原来镜像不同,则删除原来运行的容器实例,使用指定的新镜像创建容器实例,完成组件升级。
以上所述的具体实施例,对本发明的解决的技术问题、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。