【easyctl】使用easyctl跨主機(jī)并行執(zhí)行shell

背景說明

很多時(shí)候我們需要批量對主機(jī)執(zhí)行shell畅铭,比如說設(shè)置內(nèi)核參數(shù)。一臺一臺登錄執(zhí)行配置顯然不行榄笙。

當(dāng)然ansible-playbook是個不錯的選擇搭盾。

ansible-playbook并不太適用于離線環(huán)境(主要yum不可用場景),且對新手不太友好,需要一定的學(xué)習(xí)成本秉颗。

這個時(shí)候我們就可以使用easyctl 來實(shí)現(xiàn)

安裝easyctl

選擇任意方式安裝

  • 編譯安裝最新版
git clone https://github.com/weiliang-ms/easyctl.git
cd easyctl
go build -ldflags "-w -s" -o /usr/local/bin/easyctl
  • 下載編譯好的文件

easyctl-v0.7.16-alpha

chmod +x easyctl
mv easyctl /usr/local/bin
  • 兼容性

  • CentOS6

  • CentOS7

使用方式

  1. 生成默認(rèn)配置文件
$ easyctl exec shell
INFO[0000] 生成配置文件樣例, 請攜帶 -c 參數(shù)重新執(zhí)行 -> config.yaml
  1. 修改配置文件config.yaml中主機(jī)列表配置

easyctl根據(jù)主機(jī)列表ssh遠(yuǎn)程至目標(biāo)主機(jī)執(zhí)行shell

server:
  #  - host: 10.79.165.[11:13]
  #    username: root
  #    password: neusoft
  #    port: 22
  #  - host: 10.79.164.[61:63]
  #    username: root
  #    password: neusoft
  #    port: 22
  - host: 10.10.10.[1:3]
    username: root
    privateKeyPath: ~/.ssh/id_rsa
    password: ""
    port: 22
excludes:
  - 192.168.235.132
script: "1.sh"
  1. 執(zhí)行shell

添加--debug可以輸出詳細(xì)內(nèi)容痢毒。

$ easyctl exec shell -c config.yaml --debug

配置項(xiàng)說明

  • 主機(jī)配置段:該段配置遠(yuǎn)程執(zhí)行shell的主機(jī)信息,字段說明如下
    • host: 10.10.10.[1:3] 主機(jī)地址段蚕甥,適用于ip連續(xù)場景哪替。分隔符可以為[1:3]1-2菇怀、[1-2]凭舶、1:2
    • username: 遠(yuǎn)程主機(jī)ssh用戶名稱,缺省值為root
    • password: 對應(yīng)username的密碼
    • privateKeyPath: ssh私鑰路徑
    • port: ssh端口爱沟,默認(rèn)22
    • excludes: 排除host地址段內(nèi)的ip地址列表

privateKeyPath優(yōu)先級高于password:

  1. privateKeyPath為空帅霜,取password值,ssh使用密碼登錄方式
  2. privateKeyPath非空呼伸,取privateKeyPath值身冀,ssh使用密鑰登錄方式
server:
  #  - host: 10.79.165.[11:13]
  #    username: root
  #    password: neusoft
  #    port: 22
  #  - host: 10.79.164.[61:63]
  #    username: root
  #    password: neusoft
  #    port: 22
  - host: 10.10.10.[1:3]
    username: root
    privateKeyPath: ~/.ssh/id_rsa
    password: ""
    port: 22
excludes:
  - 192.168.235.132
  • 腳本配置:
    • script: "date": 遠(yuǎn)程執(zhí)行的shell指令,適用于運(yùn)行單個shell指令場景
    • script: "1.sh": 遠(yuǎn)程執(zhí)行的shell腳本括享,適用于運(yùn)行多個shell指令場景

配置樣例

1.主機(jī): 10.10.10.1-10.10.10.10執(zhí)行date指令搂根,使用密鑰登錄方式

server:
  - host: 10.10.10.[1:10]
    username: root
    privateKeyPath: ~/.ssh/id_rsa
    password: ""
    port: 22
excludes:
  - 192.168.235.132
script: "date"

2.主機(jī): 10.10.10.1-10.10.10.10執(zhí)行date指令,使用密碼登錄方式

server:
  - host: 10.10.10.[1:10]
    username: root
    # privateKeyPath: ~/.ssh/id_rsa
    password: "123456"
    port: 22
excludes:
  - 192.168.235.132
script: "date"

3.主機(jī): 10.10.10.1铃辖、10.10.10.3剩愧、10.10.10.4執(zhí)行date指令,使用密碼登錄方式

server:
  - host: 10.10.10.[1:4]
    username: root
    # privateKeyPath: ~/.ssh/id_rsa
    password: "123456"
    port: 22
excludes:
  - 10.10.10.2
script: "date"

4.主機(jī): 10.10.10.1娇斩、10.10.10.3仁卷、10.10.10.4執(zhí)行shell腳本,使用密碼登錄方式

server:
  - host: 10.10.10.[1:4]
    username: root
    # privateKeyPath: ~/.ssh/id_rsa
    password: "123456"
    port: 22
excludes:
  - 10.10.10.2
script: "/root/modify-sysctl.sh"

/root/modify-sysctl.sh腳本內(nèi)容如下

#!/bin/bash
sed -i '/vm.dirty_background_ratio/d' /etc/sysctl.conf
sed -i '/vm.dirty_ratio/d' /etc/sysctl.conf
echo "vm.dirty_ratio=10" >> /etc/sysctl.conf
echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf
sysctl -p

5.主機(jī): 10.10.10.1成洗、10.10.10.3五督、10.10.10.4執(zhí)行shell腳本藏否,使用密碼登錄方式瓶殃,且ssh端口及密碼均不一致

server:
  - host: 10.10.10.1
    username: root
    # privateKeyPath: ~/.ssh/id_rsa
    password: "123456"
    port: 22
  - host: 10.10.10.3
    username: root
    # privateKeyPath: ~/.ssh/id_rsa
    password: "123"
    port: 22122
  - host: 10.10.10.4
    username: root
    # privateKeyPath: ~/.ssh/id_rsa
    password: "456"
    port: 22222
excludes:
  - 10.10.10.2
script: "/root/modify-sysctl.sh"

/root/modify-sysctl.sh腳本內(nèi)容如下

#!/bin/bash
sed -i '/vm.dirty_background_ratio/d' /etc/sysctl.conf
sed -i '/vm.dirty_ratio/d' /etc/sysctl.conf
echo "vm.dirty_ratio=10" >> /etc/sysctl.conf
echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf
sysctl -p
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市副签,隨后出現(xiàn)的幾起案子遥椿,更是在濱河造成了極大的恐慌,老刑警劉巖淆储,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冠场,死亡現(xiàn)場離奇詭異,居然都是意外死亡本砰,警方通過查閱死者的電腦和手機(jī)碴裙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舔株,你說我怎么就攤上這事莺琳。” “怎么了载慈?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵惭等,是天一觀的道長。 經(jīng)常有香客問我办铡,道長辞做,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任寡具,我火速辦了婚禮秤茅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘童叠。我一直安慰自己嫂伞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布拯钻。 她就那樣靜靜地躺著帖努,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粪般。 梳的紋絲不亂的頭發(fā)上拼余,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機(jī)與錄音亩歹,去河邊找鬼匙监。 笑死,一個胖子當(dāng)著我的面吹牛小作,可吹牛的內(nèi)容都是我干的亭姥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼顾稀,長吁一口氣:“原來是場噩夢啊……” “哼达罗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起静秆,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤粮揉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抚笔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扶认,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年殊橙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辐宾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狱从。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖叠纹,靈堂內(nèi)的尸體忽然破棺而出矫夯,到底是詐尸還是另有隱情,我是刑警寧澤吊洼,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布训貌,位于F島的核電站,受9級特大地震影響冒窍,放射性物質(zhì)發(fā)生泄漏递沪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一综液、第九天 我趴在偏房一處隱蔽的房頂上張望款慨。 院中可真熱鬧,春花似錦谬莹、人聲如沸檩奠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽埠戳。三九已至,卻和暖如春蕉扮,著一層夾襖步出監(jiān)牢的瞬間整胃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工喳钟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留屁使,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓奔则,卻偏偏與公主長得像蛮寂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子易茬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容