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

相信大家都使用过分布式存储,而在分布式存储中较为出色的非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来完成最后一公里的任务!

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

原文地址:https://www.cnblogs.com/devops-ITboge/p/11012607.html

时间: 2024-11-13 08:07:32

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

自动互信脚本shell/expect

cat >forallHost.sh#!/bin/bashfor i in {1..9}do/usr/bin/expect autoyes.sh $idone cat >autoyesMkdir.sh#!/usr/bin/expectset time 1set i [ lindex $argv 0 ]spawn ssh 192.168.4.$i "mkdir /root/.ssh"expect {"password:" {send "12345

Centos7.5安装docker(yum安装、rm安装、脚本安装docker)

一.环境 操作系统:CentOS Linux release 7.5.1804 (Core)Docker类型:Docker CE 二.安装OS 要求: 1.要安装Docker CE,您需要CentOS 7的维护版本.不支持或测试存档版本.2.该centos-extras库必须启用.默认情况下,此存储库已启用,但如果已将其禁用,则需要 重新启用它. 注:docker分为CE社区版和EE企业版 三.卸载旧版本 较旧版本的Docker被称为docker或docker-engine.如果已安装这些,请卸

4、自动部署(通过脚本把名称服务器自动部署到155机上)

1.简单自动生成文本脚本: cat  >  word1.txt  创建文本时 会等待输入,如果想不等待输入,直接生成文本,可以先写个脚本(如:word.sh),把对应的输入写在  +END+     +END+之间.运行脚本就可以生成 word1.txt   word2.txt 二个文本了,不需要等待输入. [[email protected] ww]# vi  word.sh      (编写脚本) #! /bin/bash cat > word1.txt << +END+ wo

linux 下shell 编写脚本

linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个脚本,给定一个正整数,反序输出这个这个数. 例如:程序输入123,那么应该输出321. 3.Linux命令+shell编程:编写一个程序,实现定时文件备份的功能. 要求: 1.备份某个目录下的所有文件 2.对备份文件进行压缩 3.生成合理的日志文件 4.Shell下的gui(libnotify-bi

通过跳板机建立信任,对多个tomcat服务统一安装部署(shell编写)

=========================================================== conf : 录入服务器IP.安装路径后,脚本自动获取需要修改配置.每个服务提供一个配置文件,方便管理与扩展. bin : 提供总执行与单一执行脚本,脚本通过自动化获取配置,便于维护与扩展. bak : 保留获取原配置文件,便于问题分析. temp : 临时文件将及时删除无任何冗积. tools: 常用配置与通用文件处理写入统一函数,具体服务只需调用. new : 服务器交互文

脚本安装Discuz论坛(shell + Python 实现自动化安装)

实验环境 1.shell 脚本:linux centos 7 系统2.Python shell 脚本:window 系统 3.其他:python selenium 模块,谷歌浏览器, 谷歌浏览器驱动.4.discuz 链接:https://pan.baidu.com/s/1vOwN_f56wJlIzauGrFoR1Q 提取码:mijf 实验步骤 1.上传discuz包到Linux系统/opt目录下 方法一:挂载 方法二:通过Xftp软件上传 2.编写脚本package.sh (可查看上一篇博客,

mysql自动备份脚本及异地定时FTP

分享个自己写的mysql自动备份脚本.定时执行设置及windows自动FTP,请大家指教. 前提环境:mysql数据库服务器开启vsftpd,并配置合适帐号以便能被内网存储服务器FTP 第一步:编写mysql自动执行脚本 #!/bin/sh # mysql_db_backup.sh: backup mysql databases. # # Last updated: Wed Nov  9 07:01:01 CST 2011 # ----------------------------------

linux apache 自动监护脚本

1 首先安装curl yum install curl 2 编写shell vi restart_apache.sh 写入一下内容 #!/bin/bashURL="http://127.0.0.1/"curlit(){curl --connect-timeout 35 --max-time 40 --head --silent "$URL" | grep '200'} doit(){if ! curlit; thensleep 20top -n 1 -b >&

自动交互脚本之expect

一.Expect简介 在远程服务器执行某项任务,这是最正常不过了,如何有效自动的执行呢?这里介绍自动交互脚本expect的使用. Expect是一个简单的工具语言,功能就是进行自动化的人机交互.它的作者对Expect的定义:是一个实现自动交互功能的软件套件(a software suite for automating interactive tools),使用expect,它能帮助我们在合适的情景下进行合适的交互. Expect是一种能够按照脚本内容里面设定的方式与交互式程序进行"会话&quo