文章目录
[隐藏]

一、关于Shell

对于Openstack平台部署现在有许多强悍的工具,从Devstack、到红帽的RDO、再到Mirantis的Fuel(完全Web化)。另外,配置管理工具也越发的强大,从chef、puppet、saltstack,再到现在酷酷的Ansible,真可谓百花齐放。手工操作->脚本自动化->WEB自动化->调度自动化是运维的四个阶段,无论DevOps怎么发展,高质量的脚本也总能发挥其敏捷而不可替代的作用。相对于其他新潮的脚本语言,Shell脚本基本上是每个*inuxer最早接触的脚本语言,学习成本不是太高。另外,对于一些私有云的部署场景,比如自己设计的HA部署架构,Shell总能够快速的完成部署任务。

二、脚本简介

脚本运行在CentOS7.2环境下,之前实际部署时撰写了一版shell脚本,虽然能够完成部署工作,但是存在以下两个主要缺点:

  • 串行执行:某些耗时操作无法并行执行,比如yum upgrade;
  • 代码冗余:之前是将一些脚本scp到各个节点,然后再执行,其中有很多参数传递、增加权限和文件拷贝的操作,导致重复的代码比较多。

脚本最近进行了简单重构,力主解决以上问题,设计如下:

  • 采用统一配置文件

部署环境统一配置文件0-set-config.sh包含部署架构的信息,包括主机名称、主机类型、主机IP、网段、网卡名称、安装源、软件版本、硬盘、密码等信息。

  • 采用pssh进行某些操作的并行执行

pssh是一个python编写可以在多台服务器上执行命令的工具, 可以将通常循环变量各个节点然后执行某个命令换成pssh一行代码,并且还是并行执行(脑补一下加速比哈),代码如下:

其中,-h 为执行命令的远程主机列表,文件内容格式[user@]host[:port],可简写成ip列表,-i为每台主机执行完后的标准输出和标准错误输出,运行一下画风是这样的:

目前epel中已经pssh的rpm包,直接yum install安装即可,但并行传输的pscp没有找到。

为了配合pssh的使用节点IP列表,写了一个简单的生成节点IP列表的脚本,能够从统一配置文件自动生成节点IP列表,如下:

  • 简单封装

封装了文件传输和并行执行的操作,以及一些带颜色的回显提示消息。

并行执行命令的封装:pssh-exe,这里首先检查部署节点是否安装pssh,未安装直接安装,然后判断是在哪种类型节点上执行命令,控制节点、网络节点、计算节点还是全部节点。

拷贝文件到各个节点的封装:scp-exe,同上,目的节点也是按类型区分的。

其他的带颜色的输出信息的简单封装,类似与log输出:

提示消息输出print-info.sh

警告消息输出print-warnning.sh

进度分割线print-split.sh

输出样式如下:

基本目录结构

三、基本配置

1、SSH配置

配置部署节点到其他节点的无密码认证。

2、网络配置

假设已经配置好管理网络,设置每个节点上的管理、虚拟、存储网络所对应网卡开机自动连接,并检验三套网络IP尾数是否一致,如果不一致时会统一修改,最后测试每个节点上的三套网络的连通性。

3、主机名及Hosts文件配置

生成根据统一配置文件,生成hosts文件,拷贝到每个节点,并设置主机名。

4、NTP配置

采用chrony时间同步软件,假设离线环境,所有节点时间同步参考controller01,设置时区,将验证结果写到临时的文件result.log中。

5、防火墙及SELinux配置

关闭防火墙,禁用SELinux,SELinux禁用时需要重启,这里提示确认操作。disable_firewall_selinux.sh

6、Yum安装源配置

set-local-yum-repos.sh设置本地源,并利用pssh执行安装更新。

generate_repo.sh为一般Yum repo的安装源模版文件,以下列出CentOS和EPEL的模版,其他请查考源码中conf/yum.repos.d/目录。

四、其他

完整目录结构如下:

源码:https://github.com/zjmeixinyanzhi/Openstack-HA-Install-Shells

五、系列文章

Openstack云平台脚本部署”系列文章目录如下:

Openstack云平台脚本部署之概述(零)

Openstack云平台脚本部署之基础环境配置(一)

Openstack云平台脚本部署之Galera高可用集群配置(二)

Openstack云平台脚本部署之RabbitMQ高可用集群部署(三)

Openstack云平台脚本部署之MongoDB配置(四)

Openstack云平台脚本部署之Memcached配置(五)

Openstack云平台脚本部署之Keystone认证服务配置(六)

Openstack云平台脚本部署之Glance镜像服务配置(七)

Openstack云平台脚本部署之Nova计算服务配置(八)

Openstack云平台脚本部署之Neutron网络服务配置(九)

Openstack云平台脚本部署之Dashboard配置(十)

Openstack云平台脚本部署之Cinder块存储服务配置(十一)

Openstack云平台脚本部署之Ceilometer数据收集服务配置(十二)

Openstack云平台脚本部署之Aodh告警服务配置(十三)

Openstack云平台脚本部署之Ceph存储集群配置(十四)

Openstack云平台脚本部署之计算节点服务配置(十五)

Openstack云平台脚本部署之增加计算节点配置(十六)