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来完成最后一公里的任务!
最近哥又在憋大招,波哥品质,坚若磐石。大家可以关注我的公众号获取更多的项目代码和讲解!