利用clustersh在集群中执行shell脚本

引言


本文将介绍一个叫做clustersh的命令行小工具。

如果你想要在许多刚刚装完linux系统的服务器(可能有上百台)
上统一执行某个shell脚本,那么clustersh就非常适合你。

“刚刚装完linux操作系统”仅仅是为强调clustersh不需要在集群上
安装任何东西,并不是clustersh运行的必要条件。

如果你的集群中包含很多不同种类的Linux发行版系统,clustersh还可以自动
识别操作系统类型,并为你选择执行相应的脚本。

Github地址


https://github.com/DQinYuan/clustersh/tree/master/zhdocs

如果觉得有用的,欢迎给个Star。Github上有更加完善的文档

使用介绍


clustersh的使用非常简单。只需任选一台与集群网络联通的linux机器
,在其上按照如下步骤操作.

假设我们的任务是给集群内所有机器统一安装一个nfs客户端,集群内有centos机器和
ubuntu机器

下载clustersh

去下载地址下载clustersh的二进制文件(利用下面的wget命令),
然后将其移动到linux的PATH路径下:

wget https://github.com/DQinYuan/clustersh/releases/download/v0.1.0/clustersh
chmod a+x clustersh
mv clustersh /usr/local/bin

尝试运行一下命令:

clustersh --help

可以看到相关的帮助信息

准备一个文件夹

之后准备一个文件夹(假设是~/clustershtest):

mkdir ~/clustershtest
cd ~/clustershtest

配置ips

在文件夹下创建一个名叫ips的文件:

touch ips

然后在里面配置上集群中所有机器的ip,
假设我的集群中有5台机器,分别是10.10.108.23,10.10.108.71,
10.10.108.72,10.10.108.73,10.10.108.90。
于是我们可以如下配置ips:

10.10.108.23
10.10.108.71-73
10.10.108.90

这里我们使用了71-73直接指定了一个范围的ip来简化配置,clustersh
目前只支持在ip地址的第四段使用范围指定。

默认情况下配置文件名叫做ips,如果你不想让它叫做ips的花,可以在后面
执行clustersh命令是使用--ips指定。

编写shell脚本

在文件夹下写如下两个脚本:

  • nfs_centos.sh,用于在centos机器上安装nfs-client
#!/bin/sh

yum install -y  nfs-utils
  • nfs_ubuntu.sh,用于在ubuntu上安装nfs-client
#!/bin/sh

apt install -y nfs-common

在开始下一步之前,你最好确保你写的
所有shell脚本在对应操作系统上都测试通过。

执行clustersh

最后在文件夹下执行如下命令即可:

clustersh nfs -U root -P xxxxxx

clustersh会寻找当前目录下的ips文件,将其中
的ip地址读出,依次使用命令行提供的用户名和密码
(这里的用户名为root,密码为xxxxxx)登陆
这些ip。(在实践中,集群大多有统一的用户名和密码,
所以这里就使用统一的用户名与密码登陆集群了)

nfs是shell脚本的简称clustersh会根据服务器
的操作系统类型将其扩充为nfs_操作系统类型.sh
如果nfs_操作系统类型.sh文件不存在的话则扩充为nfs.sh.

比如clustersh登陆到一台centos服务器后,发现
操作系统是centos,于是就会尝试寻找nfs_centos.sh
如果有的话就执行它,没有的话则执行nfs.sh

如果在集群中还有更多的操作系统类型,请以如下格式命名脚本:

简称_操作系统类型.sh

clustersh当前支持识别的操作系统类型有:

操作系统类型
centos
rhel
aliyun
fedora
debian
ubuntu
raspbian

你也可以再提供一个简称.sh用于在操作系统类型无法识别或者
没有提供针对该种操作系统的脚本时执行。

如果你写的脚本对所有操作系统都通用的话,你直接给一个简称.sh即可。

查看输出

虽然shell脚本在相应的操作系统上都测试通过了,
但是在集群中某些机器运行时还是有可能因为一些
难以预料的原因(比如磁盘空间不足,DNS配置错误等等)
失败,clustersh在运行时会打印每台机器运行的成败情况,
对于少数失败的机器,最好手动登陆上去完成操作。

clustersh fail

比如从上面的输出中看到10.10.108.41因为某些原因没能成功
执行脚本,最好手工登陆上去操作,不过这种情况属于少数,
并不会花费太多的精力。

案例源代码

更多特性


cluster还有一个比较重要的特性就是,在你的shell脚本中,可以使用当前工作目录及其子目录的任意文件,因为这些目录与文件都会被clustersh自动拷贝到目标服务器上去。

对于集群中的每一台服务器,clustersh example的执行流程如下:

  • 将当前工作及其子目录中的所有文件拷贝到目标服务器上
  • 识别目标服务器类型(centos,ubuntu等)
  • 根据目标服务器类型,查看用户是否提供针对该操作系统的脚本(比如example_centos.sh),如果提供,则执行;反之,直接执行shname.sh
clustersh summary
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 当总是回忆起一个人时 我们要对这个人说 我想你了 当总是梦见一个人时 我们要对这个人说 我想你了 当总是想看见一个...
    冷冷的孤独阅读 199评论 0 2
  • 21世纪是一个科技飞速发展的世纪。 爸爸说以前的绿铁皮火车,从西安到上海要38个小时,可是现在我们的高铁...
    陈才子尧阅读 116评论 0 0
  • 出差途中完成第二部影片《极速蜗牛》的观赏。 影片讲述了在某个普通的郊外住宅区青草丛内,生活着一群普普通通的菜园蜗牛...
    静待花开_问兰阅读 358评论 0 0
  • 发现爱运动的人,是从来不用别人监督 就会自己计划运动次数。之前每周硬性规 定至少跑两次步,在清明假期前后由于...
    老娜说阅读 364评论 2 5
  • 那一年儿子八岁,这个恶狠狠的眼神背后有故事哦! 儿子无论做什么事说什么事我都笑,一直都觉得儿子那么好玩那么可爱,他...
    幽兰在空谷阅读 311评论 0 1