腳本原子化設計理念

来源:http://www.cnblogs.com/verrion/archive/2016/09/22/script_atom.html
-Advertisement-
Play Games

腳本原子化設計理念 運維的目標:運維當中重覆著大量相同相似的工作,機器規模數量一上來,則需要考慮自動化運維,儘量做到第一次人工處理,後面都依賴腳本或者工具和WEB化來完成。這樣編寫shell、python腳本變得非常重要,不僅可以替代很多重覆工作,而且提高效率和減少人工失誤率,我建議即使公司只有10 ...


腳本原子化設計理念

運維的目標:運維當中重覆著大量相同相似的工作,機器規模數量一上來,則需要考慮自動化運維,儘量做到第一次人工處理,後面都依賴腳本或者工具和WEB化來完成。這樣編寫shellpython腳本變得非常重要,不僅可以替代很多重覆工作,而且提高效率和減少人工失誤率,我建議即使公司只有10台伺服器,最低標準也要腳本化。然而我發現工作中很多運維人員編寫出來的腳本質量太差,並且每個腳本都在重覆很多代碼,用資料庫名詞來說就叫做冗餘,這樣觸發我寫該文章的目的,設計腳本原子化(該名詞由騰訊某位大牛提出來的)

 

一、設計初衷

1. 運維在日常的工作中可能會寫很多腳本來完成特定的一些功能,比如運維A寫個版本發佈的代碼,裡面會有文件推送的邏輯,運維B想實現一個遠程腳本執行的功能,可能在他的代碼里也有文件推送的邏輯。在沒有引入原子化設計的概念下,運維人員用各自的方式來實現文件推送這塊的邏輯。這樣一來工作效率會很低,運維人員都在重覆的造輪子,而且這個輪子只適合他自己的業務場景 


     

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 在引入原子化設計後,我們儘量將腳本的一些常用邏輯抽出來,做成一個公用的模塊,這個模塊就可以成為一個原子。有了原子,運維不用再關心這些基礎的模塊怎麼去實現,而是只關心上層的邏輯,當他需要一個基礎功能時,只需要去原子資源池裡找,找到後然後調用這個原子即可。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

這樣設計有以下方面的好處:

(1).提高運維開發效率

     運維不需要再從頭到尾寫他的邏輯代碼了,而是轉而去資源池找他需要的原子,然後再把這些原子拼接起來。

(2).腳本充分解耦

     因為腳本是一個個原子組成的,出現時易於排查。

 

二、原子化設計規範

所謂腳本原子,就相當於是一個腳本(如:python),完成一個特定的功能。用戶不用關心裡面的邏輯是什麼樣的,只需要知道這個原子是乾什麼的,然後向這個原子傳入事先約定好的參數(類型API),然後根據原子的輸出來判斷原子的執行狀態。

 

 

Demo:

1.編寫原子腳本

cat push_fle.py

 

該原子實現了一個文件推送的功能,它需要用戶提供三個參數,源文件路徑、目的文件路徑、推送的機器,返回的結果是一個字典,包括狀態碼、正確信息、錯誤信息。

 

2.原子調用

運維調用原子建議用python來實現。因為shell在調用python腳本時是作為該shell腳本的子進程出現的,如果原子異常退出,shell腳本還是會往下執行的,而且shell在調用python腳本時對它的返回結果也不好獲取

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 資料庫: 結構化查詢語言(Structured Query Language)簡稱SQL; 資料庫管理系統(Database Management System)簡稱DBMS; 資料庫管理員(Database Administration)簡稱DBA,功能是確保DBMS的正常高效運行; 資料庫分體驗 ...
  • 圖解安裝 PostgreSQL 【博主】反骨仔 【原文地址】http://www.cnblogs.com/liqingwen/p/5894462.html 序 園友的一篇《Asp.Net Core 項目實戰之許可權管理系統(3) 通過EntityFramework Core使用PostgreSQL》需 ...
  • 之前是Windows 10版本1607版本14393.102升級14393.187過後,突然出現不能撥公司防火牆的L2TPVPN了。 網上眾說紛紜,原來遇到這個問題的人真不少,不過我是第一次遇到。結合網上一些分析過後,我電腦的解決方式是: 錯誤描述:當連接VPN是回傳錯誤為“ L2TP連接嘗試失敗, ...
  • GPIO 即通用輸入輸出口。凡事都要熟悉,熟能生巧。一定要掌握MDK軟體的工程操作方法。 對於GPIO的操作。 Project裡面要有以下幾個文件夾(開發之前需要包含相應的庫文件,這裡預設已經包含) STEP BY STEP(以按鍵和LED燈為例): 1.在USER文件夾里新建對應功能的C文件和H文 ...
  • 今天將mac os升級到了10.12,但是第一次關機就一直停著不動,只能強制關機(按電源鍵). 在網上查了下,這是mysql的一個bug. 進入到系統偏好設置中,點擊MySql,取消Automatically start mysql server on startup. ...
  • 1、單次轉換模式 通過配置“模式寄存器的MD2、MD1、MD0為001”,便可啟動單次轉換。 流程“上電 -》 單次轉換 -》 省電模式 ” , 片內振蕩上電需要大約1ms。 單次轉換的時序圖: 數字的含義:0x08 :表示後面的數字是用來設置mode register的; 0x280060:用來設 ...
  • linux free命令查看記憶體使用情況 導讀:linux free命令查看記憶體使用情況,free命令輸出結果的各選項的含義,以及free結果中buffer與cache的區別。 linux free命令查看記憶體使用情況free命令查看記憶體使用: 複製代碼代碼如下: [root@prdmis-db / ...
  • 修改setting.py http://www.cnblogs.com/fengri/articles/django5.html http://unun.in/python/216.html ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...