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