大(dà)家(jiā)好!
又到了分享的時(shí)間(jiān),今天給大(dà)家(jiā)分享一款,開(kāi)源,免費跨平台的devops批量運維工具。讓我們先聽(tīng)聽(tīng),作(zuò)者是怎麽吹的:
作(zuò)者道(dào):
開(kāi)源+免費+跨平台安裝+100%兼容shell,
跨平台:主控機可(kě)以安裝在win,linux上(shàng)。可(kě)以管理(lǐ)win,linux被控機。
類似于Puppet,Ansible,pipeline。号稱比ansible好10倍,具有(yǒu)批量遠程執行(xíng)腳本,定時(shí)運行(xíng)腳本的,devops運維工具。運維手中的瑞士軍刀!
devops批量運維工具《卡死你(nǐ)3000》。
我道(dào):“先等等,名字咋這麽怪呢?”
作(zuò)者答(dá):名字而已,瞎編!
v1.0版開(kāi)發代号=《卡死你(nǐ)3000》,源于要你(nǐ)命3000。《卡死你(nǐ)3000》最大(dà)的好處之一,就是100%兼容你(nǐ)編寫的舊(jiù)的bash,csh,zsh腳本。還(hái)有(yǒu)win上(shàng)的bat,vbs腳本等。
項目內(nèi)還(hái)封裝了,姥姥語音(yīn),表情包鬥圖樂等。再加上(shàng)舊(jiù)bat,bash腳本,緻力于3000個(gè)腳本工具。。。
v2.0版開(kāi)發代号(已經發布)=《穿雲箭》
寓意:一支穿雲箭,千萬被控機,從斧頭幫;)趕來(lái)相見。
我道(dào):“哦,我明(míng)白了。原來(lái)3000是指,可(kě)以四處調用各種腳本,工具多(duō)的意思。”
作(zuò)者道(dào):
“它控制(zhì)win被控機基于winrm協議。它控制(zhì)linux被控機,基于ssh協議。”
【主控機】控制(zhì)【被控機】基于【開(kāi)源 + 免費的】powershell語言。
作(zuò)者答(dá):
1 《卡死你(nǐ)3000》控制(zhì)win被控機無敵。無需安裝agent。
2 腳本遠程傳遞變量參數(shù)時(shí),可(kě)以直傳 「對象」 ,此功能世界上(shàng)唯一!比其他批量運維工具強一代!
$從被控機返回的_對象結果_而不是字符串 = krun.ps1 { 被控機命令1 } -allparameter $主控機本地對象1,$主控機本地對象2
上(shàng)述【主控機腳本a.ps1】,把主控機上(shàng)的.net對象,或powershell對象【主控機本地對象1】,【主控機本地對象2】 傳遞到被控機,由【被控機命令1】接收參數(shù), 執行(xíng)結果對象,從被控機返回到主控機變量【$從被控機返回的_對象結果_而不是字符串】中。
大(dà)家(jiā)都是面向對象編程語言的老司機,還(hái)需要我解釋 「遠程對象」 比字符串的好處嗎?
你(nǐ)舊(jiù)的shell腳本,不管是.py,還(hái)是.sh,放在主控機,然後在主控機腳本內(nèi)寫上(shàng)kct 主控機路徑 被控機路徑,即可(kě)複制(zhì)到被控機。比如你(nǐ)在卡死你(nǐ)3000腳本中寫:
bash -f /xxx/你(nǐ)的bash腳本
或
python -c /你(nǐ)的項目/b.py
還(hái)不明(míng)白?卡死你(nǐ)3000,100%兼容你(nǐ)已有(yǒu)的linux腳本,而ansible你(nǐ)要學它n多(duō)模塊。
yaml有(yǒu)如下缺點:
1 關鍵字不兼容。Ansible,阿裏雲的運維工具雲助手,騰訊雲的藍(lán)鲸,都用yaml,但(dàn)它們之間(jiān)的關鍵字不兼容。
2 Yaml還(hái)有(yǒu)文本縮進問題,或空(kōng)格問題。
3 腳本套腳本像喝(hē)水(shuǐ)般容易,管道(dào)容易。Yaml套yaml難,yaml套腳本難。
4 bash中有(yǒu)for,cshell中有(yǒu)foreach,powershell中有(yǒu)for,foreach。For是shell腳本人(rén)最常用的功能。
自打ansible來(lái)了之後,它用yaml關鍵字定義和(hé)jinjia2代替了for。可(kě)以說for的腿被被打折了。
5 管道(dào)傳值如“a腳本語言編寫的腳本1 | b腳本語言編寫的腳本1”,這在基于yaml的語言中,難以實現。在基于腳本的卡死你(nǐ)3000中,天生(shēng)支持。
6 還(hái)有(yǒu)必不可(kě)少(shǎo)的複制(zhì)文件功能,使用起來(lái)也很(hěn)簡單。還(hái)支持跨平台win,linux文件互傳。
7 主控機支持win。win,linux被控機操作(zuò)一緻。用win主控機時(shí)可(kě)以用聲音(yīn),背景圖片報警。
簡單而言,腳本學用簡單,用途廣。《卡死你(nǐ)3000》和(hé)ansible,都用powershell控制(zhì)win,有(yǒu)一半是相同的。它們最大(dà)的區(qū)别是,卡死你(nǐ)3000基于腳本。而Ansible基于yaml。用ansible,藍(lán)鲸等,就必須學習它的關鍵字,用它的模塊。
作(zuò)為(wèi)批量運維工具,它還(hái)支持定時(shí)任務,循環周期最短(duǎn)10秒(miǎo)鍾,主要用于監控應用,磁盤,內(nèi)存等。
我還(hái)為(wèi)卡死你(nǐ)3000定時(shí)任務主控機,開(kāi)發了主控機雙機高(gāo)可(kě)用功能。高(gāo)可(kě)用功能等。。
我道(dào):“嗯,挺能吹的,那(nà)麽”
作(zuò)者道(dào):
自動批量運維卻離不了腳本。但(dàn)這麽多(duō)年為(wèi)啥沒有(yǒu)shell的自動批量運維項目?
為(wèi)啥讓ansible成氣候了?隻因單純的shell功能有(yǒu)限,不足以支撐整個(gè)自動批量運維項目。
讓我嘗試分析出幾個(gè)原因:
支持管道(dào)傳遞強類型對象!請(qǐng)看:
'abc'| foreach-object {$_.toupper()}
遠程傳遞強類型對象!請(qǐng)看:
$從遠程返回的日期型對象 = krun -powershell代碼塊 { get-date }
2 powershell,卡死你(nǐ)3000,中有(yǒu)多(duō)線程調用腳本功能。多(duō)線程帶來(lái)了快速,輕量,大(dà)批量的好處,也帶來(lái)了不如多(duō)進程穩定的壞處。線程的講解以後再說。
3 win上(shàng)powershell強,win沒有(yǒu)自帶sshd,也是一個(gè)問題。
4 shell基于ssh傳遞多(duō)行(xíng)腳本代碼塊不行(xíng),傳遞腳本文件麻煩。多(duō)層傳遞沒有(yǒu)。卡死你(nǐ)3000隻需要在主控機上(shàng)指定腳本文件名,多(duō)行(xíng)腳本塊,則自動複制(zhì)到每台被控機執行(xíng)。從a機傳遞代碼塊到b機,b機再到c機,很(hěn)容易。用于穿透堡壘機。
5 更嚴謹,開(kāi)發效率高(gāo)!支持在win上(shàng)經vscode+ssh模塊遠程開(kāi)發,遠程調試,單步,斷點,執行(xíng)鼠标選中代碼。
你(nǐ)道(dào):
https://gitee.com/chuanjiao10/kasini3000
https://gitee.com/chuanjiao10/kasini3000_agent_linux #linux一鍵安裝powershell
主控機支持:
win10,win2012r2,win2016,win2019,centos7,centos8,ubuntu1404(但(dàn)不建議使用),ubuntu1604,ubuntu1804,ubuntu2004,debian8(但(dàn)不建議使用),debian9,debian10,alpine linux3.8----3.11,不支持centos6。
被控機支持:
win7,win2008r2,win10,win2012,win2016,win2019,centos7,centos8,ubuntu1404,ubuntu1604,ubuntu1804,ubuntu2004,debian8,debian9,debian10。alpine linux3.8----3.11,樹(shù)莓派linux,樹(shù)莓派win,不支持centos6。
excel版 命令手冊:
https://gitee.com/chuanjiao10/kasini3000/tree/master/docs
腳本例子:
https://gitee.com/chuanjiao10/kasini3000/wikis/卡死你(nǐ)3000腳本例子
常見問題:
https://gitee.com/chuanjiao10/kasini3000/wikis/卡死你(nǐ)3000腳本編寫要求和(hé)常見問題
卡死你(nǐ)3000主控機安裝:
https://gitee.com/chuanjiao10/kasini3000/wikis/安裝win版卡死你(nǐ)3000主控機
https://gitee.com/chuanjiao10/kasini3000/wikis/安裝linux版卡死你(nǐ)3000主控機
卡死你(nǐ)3000官方技(jì)術(shù)支持群。qq群:700816263
1 按照https://gitee.com/chuanjiao10/kasini3000/tree/master/docs/examples/nodelist.csv
編寫被控機ip、端口、賬戶、密碼、并保存在c:\ProgramData\kasini3000\nodelist.csv
這裏以win主控機為(wèi)例:
2 運行(xíng)pwsh。運行(xíng)c:\ProgramData\kasini3000\k-console.ps1
k-console.ps1有(yǒu)2個(gè)快捷方式。kc=用穩定版pwsh。kcp=用psv7版pwsh,建議用kcp
3 cdip 192.168.1.2 #選中被控機
4 kct #複制(zhì)文件,從主控機到被控機
5 kcf #複制(zhì)文件,從被控機到主控機
6 gtnode #進入被控機命令行(xíng)
7 .\krun.ps1 -腳本文件名 d:\xx.ps1 # 在遠程的,cdip選中的,被控機上(shàng)】運行(xíng)【主控機上(shàng)的d盤的腳本】。
8 .\krun.ps1 -powershell代碼塊 {ls /tmp} # 在【遠程的選中被控機上(shàng)】運行(xíng)【代碼塊】。
9 .\k-commit.ps1 -腳本文件名 d:\xx.ps1 #在後台運行(xíng)腳本。
10 .\k-commit.ps1 -powershell代碼塊 {ls /tmp} #在後台運行(xíng)ps代碼塊。
11 kl,kt。#輸出後台運行(xíng)的代碼結果。
12 安裝psv6後,用.\k-commit-rs.ps1。它是線程級别的,它作(zuò)用和(hé).\k-commit.ps1相同。
13 支持進程級别,線程級别,的定時(shí)任務。
很(hěn)久以前,在一個(gè)虛拟位面上(shàng),有(yǒu)一個(gè)【馮-諾依曼計(jì)算(suàn)機國】,國內(nèi)有(yǒu)一個(gè)大(dà)家(jiā)庭叫做(zuò)【腳本命令行(xíng)】。家(jiā)庭中的bash,csh,zsh,bat,vbs,powershll兄弟們分工明(míng)确,互相合作(zuò),兄弟們用【管道(dào)】傳遞消息。
突然間(jiān),家(jiā)裏來(lái)了三頭大(dà)怪獸,它們是【阿裏雲助手=盒馬大(dà)聖】、【騰訊雲藍(lán)鲸=鲸角大(dà)王】、【ansible=歪果仁矮力大(dà)仙】
它們不分工,難合作(zuò),不用【管道(dào)】,矮力大(dà)仙還(hái)通(tōng)過python放出【幺蛾子jinjia2】,jinjia2怪一上(shàng)來(lái)就把for,foreach的腿打斷了,555,多(duō)麽善良好用的for啊!!!在此危機時(shí)刻,小(xiǎo)弟《卡死你(nǐ)》拿(ná)出3000種武器(qì),有(yǒu)鞋式吹風機,有(yǒu)光照才發光手電(diàn)筒,姥姥語音(yīn),表情包鬥圖樂,一一嘗試。。。
單純的shell強麽?單純的ssh行(xíng)麽?單純的yaml不麻煩麽?用途廣麽?這就是卡死你(nǐ)3000存在的意義。