shell编写的多服务器自动互信脚本(安装ceph)

脚本后续更新及迭代将由kkitDeploy项目代替
https://github.com/luckman666/kkitdeploy_server
请大家持续关注kkitDeploy

 

相信大家都使用过分布式存储,而在分布式存储中较为出色的非ceph莫属了,但是这里就不深入聊ceph啦,我们只是聊聊安装ceph时遇到的问题。

    ceph需要多台主机进行ssh互信。三台还能忍受,但是当超过三台那工作量想想就令人发指,而且都是重复性的动作。这类操作必须要优化掉。

因此用shell写了一个多服务器互信脚本,仅供大家借鉴参考。具体脚本已经上传至github可在本公众号代码仓库中找到install_ceph进行下载使用。

代码不多说了比较简单,相信大家都能看懂!

这里只讲几点我当时的书写思路:

    install_ceph.sh是主节点安装程序,本着模块化的调用的方针,整个脚本脉络还是很清晰的。脚本由多个小函数组成,每个函数对应不同的功能。然后由main函数再进行调用。

互信我们需要获取本机IP地址,那就写了名为get_localip的函数。

1 get_localip(){
2 ipaddr='172.0.0.1'
3 ipaddr=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}')
4 echo "$ipaddr"
5 }

然后最后边是主函数main

 1 main(){
 2  yum_update  
 3  yum_config 
 4  iptables_config 
 5  sysctl_config  
 6  system_config 
 7  ssh_config 
 8  ulimit_config 
 9  change_hosts 
10  rootssh_trust
11  yum_install_ceph 
12  config_ceph 
13  install_ceph
14 if [ "$?" != 0 ]; then
15 remove_ceph
16 install_ceph_repo_url
17 mon_admin
18 check_status
19 else
20 mon_admin
21 fi
22 if [ "$?" != 0 ]; then
23 remove_ceph
24 install_ceph_repo_url
25 mon_admin
26 check_status
27 else
28 mon_admin
29 fi
30 }
31 main > ./setup.log 2>&1

在这里我们实现各个方法的组合调用,最后我们只需要执行main函数就行了。同样我们不想执行哪个方法,就可以注释掉main函数中哪个方法的名字就可以了。具体使用方法见README.md

波哥写的不只是技术,而是人生!是不是灰常牛X呀!!哇咔咔咔咔!

 

PS:shell其实我并没有深入研究过,这么多年也就是赶着用赶着写。好在非常简单易用。写shell有种手短的感觉,shell类似那种近身肉搏型的,快,准,狠,寸劲十足。所以我们在日常项目中时长会用shell来完成最后一公里的任务!

最近哥又在憋大招,波哥品质,坚若磐石。大家可以关注我的公众号获取更多的项目代码和讲解!

posted @ 2019-06-12 20:40  波哥的IT人生  阅读(288)  评论(0编辑  收藏  举报