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