本发明涉及Openstack云平台技术领域,具体涉及一种Openstack云平台自定义部署系统及部署方法。
背景技术:
随着云技术方案的成熟,Openstack组件的模块化极大提高了云技术的灵活性,Openstack云平台也越来越广泛应用到各种领域。而目前市场上拥有的Openstack云平台基本上都是需要按照固有的方案部署,在企业云计算转型时,由于只能采用固有的Openstack云平台部署方案,基本无法利用现有的设备资源,而需购买大量的新机器才能够完成云平台的部署,造成对现有设备资源极大浪费。
因此,亟需一种适用于根据用户自定义的部署方案进行Openstack云平台部署的技术方案。
技术实现要素:
针对现有技术中存在的缺陷,本发明的目的在于提供一种Openstack云平台自定义部署系统及部署方法,根据用户需求设置Openstack云平台部署结构。
为达到以上目的,本发明采取的技术方案是:一种Openstack云平台自定义部署系统,所述Openstack云平台包括多个Openstack组件,包括:
组件安装执行模块,用于创建多个独立的执行单元,每个执行单元用于执行各Openstack组件独立安装中的一项独立功能;多个执行单元共同实现各Openstack组件的协作安装;
控制模块,用于获取用户指定的Openstack云平台部署模式;根据用户指定的Openstack云平台部署模式设置安装模式,所述安装模式包括待安装的Openstack云平台的结构和各云平台节点需要安装的组件;通过设置的安装模式控制组件安装执行模块使用多个执行单元执行各云平台节点上需要安装的Openstack组件的协作安装;
配置模板分发模块,用于将各Openstack组件的配置模板发送到Openstack云平台的各云平台节点上。
在上述技术方案的基础上,所述Openstack云平台自定义部署系统还包括用户接口定义模块,用于根据用户指定的Openstack云平台部署模式添加和部署Openstack云平台的用户接口。
在上述技术方案的基础上,所述用户接口定义模块包括:
用户接口单元,用于添加和部署Openstack云平台的用户接口;
平台数据收集单元,用于收集Openstack云平台数据;
平台数据管理单元,用于使用统一格式管理Openstack云平台数据。
在上述技术方案的基础上,创建多个独立的执行单元通过Ansible Playbook的role模块实现。
在上述技术方案的基础上,所述执行单元包括数据库建立单元,Keystone安装单元和组件独立安装单元,其中:
数据库建立单元用于执行Openstack云平台Mysql数据库集群的建立;
Keystone安装单元用于执行Openstack云平台的keystone模块的安装与配置;
组件独立安装单元用于执行各Openstack组件的独立安装。
在上述技术方案的基础上,所述配置模板分发模块包括:
模板存储单元,用于创建一个仓库,所述仓库用于存储各Openstack组件的配置模板;
翻译转发单元,用于将仓库中各Openstack组件的配置模板翻译成对应的配置信息并发送至各云平台节点上。
在上述技术方案的基础上,将仓库中各Openstack组件的配置模板翻译成对应的配置信息通过playbook中的template模块实现。
本发明还公开了一种Openstack云平台自定义部署系统的部署方法,组件安装执行模块创建多个独立的执行单元,每个执行单元用于执行各Openstack组件独立安装中的一项独立功能;然后控制模块根据用户指定的Openstack云平台部署模式设置待安装的Openstack云平台的安装模式,所述安装模式包括Openstack云平台的结构和各云平台节点需要安装的组件;配置模板分发模块根据控制模块设置的安装模式将各Openstack组件的配置模板发送到Openstack云平台各云平台节点上;最后控制模块通过设置的安装模式控制组件安装执行模块使用多个执行单元执行各云平台节点上需要安装的Openstack组件的协作安装。
组件安装执行模块使用多个执行单元执行各云平台节点需要安装的Openstack组件的独立安装之后,用户接口定义模块根据用户指定的Openstack云平台部署模式添加和部署Openstack云平台的用户接口。
在上述技术方案的基础上,包括以下步骤:
S1,组件安装执行模块创建多个独立的执行单元,每个执行单元用于执行各Openstack组件独立安装中的一项独立功能;
S2,控制模块获取用户指定的Openstack云平台部署模式;
S3,控制模块根据用户指定的Openstack云平台部署模式设置Openstack云平台的安装模式,所述安装模式包括待安装的Openstack云平台的结构和各云平台节点需要安装的Openstack组件;
S4,配置模板分发模块根据控制模块设置的安装模式将各Openstack组件的配置模板发送到各云平台节点上;
S5,控制模块通过设置的安装模式控制组件安装执行模块使用多个执行单元执行各云平台节点需要安装的Openstack组件的协作安装;
S6,用户接口定义模块根据用户指定的Openstack云平台部署模式添加和部署Openstack云平台的用户接口。
与现有技术相比,本发明的优点在于:
本发明先创建多个独立的执行单元,每个执行单元用于执行各Openstack组件独立安装中的一项独立功能;根据用户指定的Openstack云平台部署模式设置待安装的Openstack云平台的安装模式,再通过设置的安装模式控制多个执行单元执行各云平台节点上需要安装的Openstack组件的独立安装,实现根据用户需求设置Openstack云平台部署结构,可以根据企业需求灵活制定方案并且可以极大利用现有服务器。
附图说明
图1为本发明实施例中Openstack云平台自定义部署系统的结构示意图;
图2为本发明实施例中Openstack云平台自定义部署方法的流程示意图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例提供一种Openstack云平台自定义部署系统,Openstack云平台包括多个Openstack组件,包括:
组件安装执行模块,用于创建多个独立的执行单元,每个执行单元用于执行各Openstack组件独立安装中的一项独立功能,多个执行单元共同实现各Openstack组件的独立安装。创建多个独立的执行单元通过Ansible Playbook的role模块实现。创建多个独立的执行单元还可通过puppet,saltstack等集群管理工具实现。
控制模块,用于获取用户指定的Openstack云平台部署模式;根据用户指定的Openstack云平台部署模式设置安装模式,安装模式包括待安装的Openstack云平台的结构和各云平台节点需要安装的组件;通过设置的安装模式控制组件安装执行模块使用多个执行单元执行各云平台节点上需要安装的Openstack组件的协作安装。
例如:
1)获取用户选择的Openstack云平台部署模式,配置模式文件,用户选择合适的配置文件:3_node.cfg;7_node.cfg。用户选择合适的模式安装:#python deploy.py-m mode。
2)控制模块将用户的输入信息整理待安装的Openstack云平台的结构:
init_3_ctl(render_only=False)
3控制节点模块,采用默认网络模式,即vxlan。
init_7_ctl(render_only=False,mode=vlan)
7控制节点模块,采用vlan网络模式。
init_7_ctl(render_only=False,mode=vxlan)
7控制节点模块,采用vxlan网络模式。
init_add_ctl(render_only=False)
添加控制节点到运行中的平台中。
init_add_ceph(render_only=False)
添加存储节点到运行中的平台中。
3)控制模块将各云平台节点需要安装的组件、需要执行的命令封装起来并发送至各云平台节点上。通过设置的安装模式控制组件安装执行模块使用多个执行单元执行各云平台节点上需要安装的Openstack组件的协作安装。
配置模板分发模块,用于将各Openstack组件的配置模板发送到各云平台节点上。配置模板为playbook中设置的Openstack组件的配置,配置模板分发模块将各Openstack组件的配置模板发送到各云平台节点后,各云平台节点上Openstack组件均采用配置模板中设置的组件的配置。
Openstack云平台自定义部署系统还包括用户接口定义模块,用于根据用户指定的Openstack云平台部署模式添加和部署Openstack云平台的用户接口。
本发明先创建多个独立的执行单元,每个执行单元用于执行各Openstack组件独立安装中的一项独立功能;根据用户指定的Openstack云平台部署模式设置待安装的Openstack云平台的安装模式,再通过设置的安装模式控制多个执行单元执行各云平台节点上需要安装的Openstack组件的独立安装,实现根据用户需求设置Openstack云平台部署结构,可以根据企业需求灵活制定方案并且可以极大利用现有服务器。
用户接口定义模块包括:
用户接口单元,用于添加和部署Openstack云平台的用户接口;例如,deploy_ceph.py:部署ceph用户接口模块。
deploy_openstack.py:部署Openstack用户接口模块。
new_ceph_node.py:添加ceph节点用户接口模块。
new_openstack_node.py:添加openstack组件用户接口模块。
平台数据收集单元,用于收集Openstack云平台数据;例如,
utils_ceph.py:收集存储资料信息。
utils_openstack.py:收集openstack组件信息。
平台数据管理单元,用于使用统一格式管理Openstack云平台数据。例如,admin_db.yml:使用Yaml格式统一管理数据资料。admin_yml.py:yaml文件读写模块。
执行单元包括数据库建立单元,Keystone安装单元和组件独立安装单元,其中:
数据库建立单元用于执行Openstack云平台Mysql数据库集群的建立;实现数据库的集群自动化部署,只负责建立起一个可以正常工作的Mysql数据库集群,而不需要考虑Openstack组件如何使用。
Keystone安装单元用于执行Openstack云平台的Keystone模块的安装与配置。保证能够使用Openstack客户端登录和访问。
组件独立安装单元用于执行各Openstack组件的独立安装。包括Glance/Cinder/Nova/Neutron,保证服务正常启动。
配置模板分发模块包括:
模板存储单元,用于创建一个仓库,仓库用于存储各Openstack组件的配置模板;仓库为Playbook中的configuration仓库。
翻译转发单元,用于将仓库中各Openstack组件的配置模板翻译成对应的配置信息并发送至各云平台节点上。
将仓库中各Openstack组件的配置模板翻译成对应的配置信息通过Playbook中的template模块实现。template模块将configuration仓库中的jiaja2模板翻译成需要的配置信息,比如用户输入的磁盘信息,地址信息等等,可以在template拷贝模板到目标机器的过程中自动替换预先设计好的参数信息,达到每台机器独立配置信息的目的。
参见图2所示,本发明还公开了一种Openstack云平台自定义部署系统的部署方法,包括:组件安装执行模块创建多个独立的执行单元,每个执行单元用于执行各Openstack组件独立安装中的一项独立功能;然后控制模块根据用户指定的Openstack云平台部署模式设置安装模式,安装模式包括Openstack云平台的结构和各云平台节点需要安装的组件;配置模板分发模块根据控制模块设置的安装模式将各Openstack组件的配置模板发送到Openstack云平台的各云平台节点上;最后控制模块通过设置的安装模式控制组件安装执行模块使用多个执行单元执行各云平台节点上需要安装的Openstack组件的协作安装。
组件安装执行模块使用多个执行单元执行各云平台节点需要安装的Openstack组件的独立安装之后,用户接口定义模块根据用户指定的Openstack云平台部署模式添加和部署Openstack云平台的用户接口。
包括以下步骤:
S1,组件安装执行模块创建多个独立的执行单元,每个执行单元用于执行各Openstack组件独立安装中的一项独立功能;
S2,控制模块获取用户指定的Openstack云平台部署模式;
S3,控制模块根据用户指定的Openstack云平台部署模式设置Openstack云平台的安装模式,安装模式包括待安装的Openstack云平台的结构和各云平台节点需要安装的Openstack组件;
S4,配置模板分发模块根据控制模块设置的安装模式将各Openstack组件的配置模板发送到各云平台节点上;
S5,控制模块通过设置的安装模式控制组件安装执行模块使用多个执行单元执行各云平台节点需要安装的Openstack组件的协作安装;
S6,用户接口定义模块根据用户指定的Openstack云平台部署模式添加和部署Openstack云平台的用户接口。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。