搜尋
首頁後端開發Python教學ython 專案啟動 Python 學習

開始使用 Python 腳本進行 DevOps 自動化

?介紹

歡迎來到 DevOps 和 Python 的世界
人們普遍認為 DevOps 工程師不編碼,但事實並非如此。 DevOps 工程師通常依靠程式設計技能來自動化流程、管理基礎架構和簡化工作流程。 Python 和 Go 因其多功能性和易用性而成為 DevOps 世界中最受歡迎的兩種語言。

今天,我們將踏上令人興奮的旅程,創建三個 Python 項目,它們不僅向您介紹程式設計的關鍵,還幫助您建立有意義的實用應用程式。

以下是我們將要探索的內容:

  • 天氣程序 — 一個將城市名稱作為使用者輸入並顯示其當前天氣的程式。 (我們將使用 Wea​​therAPI 取得 JSON 格式的資料 — 聽起來很令人興奮,對吧?)
  • GitHub Pull Request Tracker — 一個即時項目,用於列出使用 GitHub 的 API 向 GitHub 儲存庫發出 Pull 請求的使用者。
  • SlackBot for Jenkins Pipeline — 一個專案的奇蹟,它觸發 Jenkins 管道並透過自訂 SlackBot 將其狀態傳遞到您的 Slack 通道。

那麼,你準備好踏上這段旅程了嗎?讓我們開始吧!


?先決條件

在我們深入編碼之前,讓我們確保您擁有開始所需的一切。這些項目適合初學者,但擁有以下工具和技能將使過程更加順利:

1。 Python基礎知識
了解變數、函數、迴圈以及如何使用函式庫將會很有幫助。如果您是新手,請不要擔心 - 這些項目將加強您的學習!

2。 Python環境

確保您的系統上安裝了 Python。您可以從 python.org 下載它。也推薦使用 VS Code 或 PyCharm 等程式碼編輯器。

3。 API 基礎

您將在所有三個項目中使用 API。熟悉發出 HTTP 請求和處理 JSON 回應是一個額外的好處,但我將引導您完成每個步驟。

4。要安裝的工具

  • 用於進行 API 呼叫的 requests 函式庫。使用 pip install requests 安裝它。
  • 第三個項目的 Slack API 憑證和設定。不用擔心;當我們到達那裡時我會提供詳細的說明。
  • 第二個專案的 GitHub 帳戶和第三個專案的 Jenkins 存取權限。

一旦您準備好這些先決條件,我們就可以開始我們的第一個專案 - 建立天氣程序!


?項目一:天氣計劃

讓我們深入研究我們的第一個 Python 專案—天氣程式。這個簡單而實用的腳本將接受用戶輸入的城市名稱並顯示其當前天氣。為了實現這一目標,我們將使用 Wea​​therAPI 來獲取 JSON 格式的即時天氣數據,並以用戶友好的方式顯示它。

工作原理:

  • 腳本提示使用者輸入城市名稱。
  • 使用 WeatherAPIAPI 金鑰,腳本取得指定城市的天氣資料。
  • 來自 API 的 JSON 回應被解析以提取溫度、風速和天氣狀況等資訊。
  • 結果以簡潔、可讀的格式顯示。

逐步說明:

  • 建立一個Python檔:
    • 開啟您喜歡的程式碼編輯器(建議使用 VS Code 或 PyCharm)並建立一個名為weather.py 的新檔案。
    • 插入以下程式碼:
 import requests

 def get_city_weather(city, api_key):
     city_name = city.lower()
     url = f"http://api.weatherapi.com/v1/current.json?key={api_key}&q={city_name}"

     response = requests.get(url)

     if response.status_code == 200:
         data = response.json()

         description = data['current']['condition']['text']
         temp = data['current']['temp_c']
         wind = data['current']['wind_kph']

         print(f"\nWeather in {city.capitalize()}:")
         print(f"Temperature: {temp}°C")
         print(f"Wind Speed: {wind} Km/hr")
         print(f"Condition: {description.capitalize()}")

     else:
         print(f"{city_name} not found.")

 def main():
     city = input("Enter Your City: ")
     API_KEY = "<your_api_key>"

     get_city_weather(city, API_KEY)

 if __name__ == "__main__":
     main()
</your_api_key>
  • 設定您的 API 金鑰:

    • 造訪 WeatherAPI 並建立免費帳戶。
    • 登入後,選擇免費方案產生您的 API 金鑰。
  • 複製 API 金鑰並在程式碼中替換為實際金鑰。

  • 執行腳本:

    • 在儲存weather.py的資料夾中開啟終端機。
    • 使用 python Weather.py 運行腳本。
    • 出現提示時輸入城市名稱(例如「Ganganagar」)。該腳本將顯示該城市當前的天氣狀況。

範例輸出:

Enter Your City: Ganganagar
Weather in Ganganagar:
Temperature: 24°C
Wind Speed: 10 Km/hr
Condition: Clear

就是這樣!您已經成功創建了您的第一個 Python 專案。這是一種簡單而強大的方式來了解 API 如何在現實應用程式中運作。


?專案 2:GitHub 拉取請求追蹤器

現在,讓我們建立一個 GitHub Pull Request (PR) 追蹤器。該專案利用 GitHub API 來獲取有關特定儲存庫的拉取請求的詳細資訊。我們將過濾資料以提取 PR 建立者的使用者名,計算每個建立者建立的 PR 數量,並顯示此資訊。

工作原理:

  • 此腳本向 GitHub API 發出 HTTP GET 請求,以取得儲存庫的拉取請求詳細資訊。
  • 它解析 JSON 回應以提取 PR 創建者的使用者名稱。
  • 這些使用者名稱儲存在字典中,並包含他們創建的 PR 數量。
  • 程式輸出字典和 PR 創建者的詳細列表及其各自的計數。

逐步說明:

  • 建立一個Python檔:
    • 開啟程式碼編輯器並建立一個名為 gb_tracker.py 的新檔案。
    • 插入以下程式碼:
 import requests

 def get_city_weather(city, api_key):
     city_name = city.lower()
     url = f"http://api.weatherapi.com/v1/current.json?key={api_key}&q={city_name}"

     response = requests.get(url)

     if response.status_code == 200:
         data = response.json()

         description = data['current']['condition']['text']
         temp = data['current']['temp_c']
         wind = data['current']['wind_kph']

         print(f"\nWeather in {city.capitalize()}:")
         print(f"Temperature: {temp}°C")
         print(f"Wind Speed: {wind} Km/hr")
         print(f"Condition: {description.capitalize()}")

     else:
         print(f"{city_name} not found.")

 def main():
     city = input("Enter Your City: ")
     API_KEY = "<your_api_key>"

     get_city_weather(city, API_KEY)

 if __name__ == "__main__":
     main()
</your_api_key>

執行腳本:

  • 在包含 gb_tracker.py 的資料夾中開啟終端。
  • 使用 python gb_tracker.py 運行腳本。

預期輸出:

當腳本成功運行時,它會從 argoproj/argo-cd 儲存庫獲取拉取請求的詳細資訊。這將顯示以下輸出:

Enter Your City: Ganganagar
Weather in Ganganagar:
Temperature: 24°C
Wind Speed: 10 Km/hr
Condition: Clear

用例:

  • 開發環境:用它來監控儲存庫中的 PR 活動並追蹤貢獻者。
  • 協作:確定頻繁貢獻者及其活動水平,以實現更好的團隊管理。

就是這樣!一個功能腳本,可從 GitHub 獲取即時數據並對其進行處理以獲取真實世界的見解。


?項目 3:用於 Jenkins Pipeline 的 SlackBot

我們的最終專案是一個 gem - 一個整合 Jenkins 和 Slack 以自動產生通知的腳本。此 Python 腳本觸發 Jenkins 管道,監視其狀態,並在管道完成時向您的 Slack 通道發送通知。

工作原理:

  • 觸發管道:腳本先觸發 Jenkins 管道。
  • 監控建置狀態:定期檢查管道的狀態,直到建置完成。
  • 發送 Slack 通知:建置完成後,腳本會使用 Slack 機器人在指定的 Slack 頻道中通知狀態。

逐步說明:

建立 Python 檔案:
在程式碼編輯器中建立一個名為 jenkins-slack-integration.py 的檔案。
插入以下程式碼:

 import requests

 url = 'https://api.github.com/repos/argoproj/argo-cd/pulls'

 response = requests.get(url)

 if response.status_code == 200:
     pull_requests = response.json()

     pr_creators = {}

     for pull in pull_requests:
         creator = pull['user']['login']
         if creator in pr_creators:
             pr_creators[creator] += 1
         else:
             pr_creators[creator] = 1

     print(f"PR Creator counts: {pr_creators}")

     for creator, count in pr_creators.items():
         print(f"Creator: {creator}: {count} PRs")

 else:
     print(f"Failed to make connection. Status Code: {response.status_code}")

設定 Jenkins:

在 Jenkins 中建立一個名為 Jenkins-Python-pipeline 的管道專案。
新增以下 Hello World 管道腳本:

 PR Creator counts: {'dependabot[bot]': 7, 'devopsjedi': 1, 'aali309': 3, 'adriananeci': 1, 'amine7536': 1, 'lf32': 1, 'OpenGuidou': 1, 'ivan-cai': 1, 'surajyadav1108': 2, 'vasilegroza': 1, 'toyamagu-2021': 1, 'dvcanton': 1, 'vivian-xu': 1, 'rahulbollisetty': 1, 'blakepettersson': 1, 'dacofr': 1, 'mrysavy': 1, 'damsien': 1, 'lsq645599166': 1, 'jpbelangerupgrade': 1, 'Aaron-9900': 1}
 Creator: dependabot[bot]: 7 PRs
 Creator: devopsjedi: 1 PRs
 Creator: aali309: 3 PRs
 Creator: adriananeci: 1 PRs
 Creator: amine7536: 1 PRs
 Creator: lf32: 1 PRs
 Creator: OpenGuidou: 1 PRs
 Creator: ivan-cai: 1 PRs
 Creator: surajyadav1108: 2 PRs
 Creator: vasilegroza: 1 PRs
 Creator: toyamagu-2021: 1 PRs
 Creator: dvcanton: 1 PRs
 Creator: vivian-xu: 1 PRs
 Creator: rahulbollisetty: 1 PRs
 Creator: blakepettersson: 1 PRs
 Creator: dacofr: 1 PRs
 Creator: mrysavy: 1 PRs
 Creator: damsien: 1 PRs
 Creator: lsq645599166: 1 PRs
 Creator: jpbelangerupgrade: 1 PRs
 Creator: Aaron-9900: 1 PRs
 # The details will vary accroding to the time when you run the script.

產生 Jenkins API 令牌:

  • 前往您的 Jenkins 使用者設定。

ython Projects to Kickstart Python Learning

  • 建立一個新令牌並複製它。

ython Projects to Kickstart Python Learning

  • 替換 在帶有此標記的腳本中。

設定 Slack:

  • 建立一個名為#devops-updates 的 Slack 頻道。
  • 創建一個名為 demo 的機器人並邀請其加入頻道。
  • 產生機器人令牌並在腳本中替換為該令牌。

執行腳本:

  • 在運行之前,請確保您已在 #devops-updates 中使用 inform@demo 將機器人新增至 slack 通道。
  • 使用 python jenkins-slack-integration.py 執行腳本。
  • 管道完成後,機器人將在 Slack 通道中發布一條包含管道狀態的消息。

Slack 中的範例輸出:

ython Projects to Kickstart Python Learning

管道已成功構建,狀態:**成功**

這個專案是 Python 如何彌合 CI/CD 工具和通訊平台之間的差距、自動通知並改善協作的絕佳範例。


?結論

恭喜您完成這三個令人興奮的 Python 專案!每個專案都旨在教您如何在現實場景中使用 Python:

  • 天氣程式:向您展示如何使用 API 並處理 JSON 資料來取得和顯示有意義的資訊。
  • GitHub PR Tracker:教您如何與 GitHub 的 API 互動並以結構化格式處理即時資料。
  • SlackBot for Jenkins Pipeline:展示了 Python 自動化 DevOps 任務並透過無縫整合增強團隊溝通的能力。

這些項目只是冰山一角。當您進一步探索時,您將看到 Python 的多功能性如何使其成為任何 DevOps 工程師的必備技能。除了編碼之外,它還可以實現自動化、提高生產力,並彌合複雜工作流程和使用者友好的解決方案之間的差距。

不斷建構、實驗和學習-這就是 Python 和 DevOps 的本質!請記住,掌握程式設計的最好方法就是實踐。

感謝您加入我的旅程!如果您喜歡這個博客,請隨時與您的朋友和其他學習者分享。

?如需了解更多資訊博客,請在 Hashnode、X(Twitter) 和 LinkedIn 上關注我。

到此為止,祝您編碼愉快! !

快樂學習! ?

以上是ython 專案啟動 Python 學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python與C:學習曲線和易用性Python與C:學習曲線和易用性Apr 19, 2025 am 12:20 AM

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python vs. C:內存管理和控制Python vs. C:內存管理和控制Apr 19, 2025 am 12:17 AM

Python和C 在内存管理和控制方面的差异显著。1.Python使用自动内存管理,基于引用计数和垃圾回收,简化了程序员的工作。2.C 则要求手动管理内存,提供更多控制权但增加了复杂性和出错风险。选择哪种语言应基于项目需求和团队技术栈。

科學計算的Python:詳細的外觀科學計算的Python:詳細的外觀Apr 19, 2025 am 12:15 AM

Python在科學計算中的應用包括數據分析、機器學習、數值模擬和可視化。 1.Numpy提供高效的多維數組和數學函數。 2.SciPy擴展Numpy功能,提供優化和線性代數工具。 3.Pandas用於數據處理和分析。 4.Matplotlib用於生成各種圖表和可視化結果。

Python和C:找到合適的工具Python和C:找到合適的工具Apr 19, 2025 am 12:04 AM

選擇Python還是C 取決於項目需求:1)Python適合快速開發、數據科學和腳本編寫,因其簡潔語法和豐富庫;2)C 適用於需要高性能和底層控制的場景,如係統編程和遊戲開發,因其編譯型和手動內存管理。

數據科學和機器學習的Python數據科學和機器學習的PythonApr 19, 2025 am 12:02 AM

Python在數據科學和機器學習中的應用廣泛,主要依賴於其簡潔性和強大的庫生態系統。 1)Pandas用於數據處理和分析,2)Numpy提供高效的數值計算,3)Scikit-learn用於機器學習模型構建和優化,這些庫讓Python成為數據科學和機器學習的理想工具。

學習Python:2小時的每日學習是否足夠?學習Python:2小時的每日學習是否足夠?Apr 18, 2025 am 12:22 AM

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Web開發的Python:關鍵應用程序Web開發的Python:關鍵應用程序Apr 18, 2025 am 12:20 AM

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優

Python vs.C:探索性能和效率Python vs.C:探索性能和效率Apr 18, 2025 am 12:20 AM

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。