干货|基于Ansible的Ceph自动化部署解析

时间:2024-04-14 13:41:41

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文干货|基于Ansible的Ceph自动化部署解析

▍作者简介

作者纪伯年16年毕业于哈工大,目前是中兴通讯的后端开发,专注于云计算与存储技术。平时喜欢学习一些相关领域的架构知识,并热衷于钻研精妙的算法与逻辑。

    

▍背景介绍

当前项目中Ceph部署采用利用Ansible调用部署脚本的方式,Ceph部署部分文本分为两部分:Ceph配置部署脚本,Ansible执行脚本。本文以当前项目版本的Ceph配置部署文件为例,对Ceph自动化部署中的命令进行解释与分析,旨在提供一份基于实例的实用性文档,方便他人日后对文件的解读与修改,或是对当前实例的部分或完整复现。

 

▍文件结构解析

Ceph部署部分代码包含9个文件,其中ceph-pkgs.tar.gz为Ceph安装包文件,script.tar.gz为Ceph部署脚本压缩包文件,其余为Ansible执行文件。

Ansible执行文件中,deploy.yml为Ansible入口文件,vars.yml为变量文件,其余为执行任务文件。将script.tar.gz解压后可以看到Ceph配置执行文件的内容,其中install-package.sh为Ceph安装脚本,其余均为Ceph配置部署脚本。代码执行的流程如下图所示:

干货|基于Ansible的Ceph自动化部署解析

▍Ansible执行代码解析

1.  基础介绍

Ansible的脚本叫做Playbook,用YAML格式编写。最基本的Playbook包含三个部分:主机与用户、执行任务、响应事件。任务的执行会调用Ansible的各种模块。下面将结合具体实例逐条语句分析,更多Playbook语法请参见Ansible书籍或官方文档


2. 代码解析

按照代码执行顺序,首先进入deploy.yml文件。以下为文件源码及解析:

干货|基于Ansible的Ceph自动化部署解析

而后在任务列表中,进入unarchive.yml文件。以下为文件源码及解析:

干货|基于Ansible的Ceph自动化部署解析

随后执行install-package.yml。以下为文件源码及解析:

干货|基于Ansible的Ceph自动化部署解析

接下来执行deploy_task.yml。以下为文件源码及解析:

干货|基于Ansible的Ceph自动化部署解析

经过Ceph配置部署脚本的运行后,Ceph部署成功,然后运行osd_task.yml和rest_api.yml。以下为文件源码及解析:

干货|基于Ansible的Ceph自动化部署解析

Vars.yml为变量文件,格式较为规矩,在此不做赘述。

以上即为Ansible执行脚本的简要解析,其中出现的模块、方法有限,故介绍不够全面,如需更丰富的配置和操作请参阅书籍或手册。


▍Ceph配置部署脚本解析

1.基础介绍

所有Ceph的部署都始于存储集群。Ceph存储集群有两类守护进程:对象存储守护进程OSD(Object Storage Device Daemon Progress)和监听器MON(Monitor)。若要运行Ceph文件系统(CephFS)则还需要一个元数据服务器MDS(Metadata Server)。本例为搭建3节点的Ceph集群并使用CephFS,需要1个MON,三个OSD,两个MDS。

2.代码解析

当Ansible运行到install-package.yml最后一句时运行install-package.sh脚本文件。以下为文件源码及解析:

干货|基于Ansible的Ceph自动化部署解析

而后,Ansible继续运行到deploy_task.yml中,调用deployInterface.sh脚本文件并输入参数。以下为文件源码及解析:

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

随后进入ceph-deploy.sh开始执行Ceph集群配置及部署。以下为文件源码及解析(本节代码较长,格式多样,故源码和解析并非完全左右分布,且照源码有些许不同,但我相信你们看得懂):

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

干货|基于Ansible的Ceph自动化部署解析

部署节点2、3时调用了ceph-rest-api.sh脚本,用以启动restful api。以下为文件源码及解析:

干货|基于Ansible的Ceph自动化部署解析

此脚本在节点2、3上均执行一次,随后在Ansible执行最后一个文件rest_api.yml时再在本节点执行一次。

依次退出ceph-deploy-.sh、deployInterface.sh、deploy_task.yml后,Ansible进入osd_task.yml调用deploy-osd.sh脚本。以下为文件源码及解析:

干货|基于Ansible的Ceph自动化部署解析

最后,Ansible进入rest_api.yml,调用ceph-rest-api.sh脚本。自此,Ceph配置、部署的工作全部完成。


▍总结

本文以Ceph部署部分源码为例,对基于Ansible的Ceph配置部署文件进行了逐条解析。尽管抱着既详尽又清爽的初衷,但Ceph本身的结构、细节的配置并不易理解与掌握,加之官方文档遭烂的结构体系和不完整的关键词解释(英文文档稍好,也没好多少),使得在赶工下完成的本文既不详尽又不清爽。还望和大家共同探讨并给与指正。

干货|基于Ansible的Ceph自动化部署解析