開始使用 Python 腳本進行 DevOps 自動化
歡迎來到 DevOps 和 Python 的世界
人們普遍認為 DevOps 工程師不編碼,但事實並非如此。 DevOps 工程師通常依靠程式設計技能來自動化流程、管理基礎架構和簡化工作流程。 Python 和 Go 因其多功能性和易用性而成為 DevOps 世界中最受歡迎的兩種語言。
今天,我們將踏上令人興奮的旅程,創建三個 Python 項目,它們不僅向您介紹程式設計的關鍵,還幫助您建立有意義的實用應用程式。
以下是我們將要探索的內容:
那麼,你準備好踏上這段旅程了嗎?讓我們開始吧!
在我們深入編碼之前,讓我們確保您擁有開始所需的一切。這些項目適合初學者,但擁有以下工具和技能將使過程更加順利:
1。 Python基礎知識
了解變數、函數、迴圈以及如何使用函式庫將會很有幫助。如果您是新手,請不要擔心 - 這些項目將加強您的學習!
2。 Python環境
確保您的系統上安裝了 Python。您可以從 python.org 下載它。也推薦使用 VS Code 或 PyCharm 等程式碼編輯器。
3。 API 基礎
您將在所有三個項目中使用 API。熟悉發出 HTTP 請求和處理 JSON 回應是一個額外的好處,但我將引導您完成每個步驟。
4。要安裝的工具
一旦您準備好這些先決條件,我們就可以開始我們的第一個專案 - 建立天氣程序!
讓我們深入研究我們的第一個 Python 專案—天氣程式。這個簡單而實用的腳本將接受用戶輸入的城市名稱並顯示其當前天氣。為了實現這一目標,我們將使用 WeatherAPI 來獲取 JSON 格式的即時天氣數據,並以用戶友好的方式顯示它。
工作原理:
逐步說明:
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()
設定您的 API 金鑰:
複製 API 金鑰並在程式碼中替換為實際金鑰。
執行腳本:
範例輸出:
Enter Your City: Ganganagar Weather in Ganganagar: Temperature: 24°C Wind Speed: 10 Km/hr Condition: Clear
就是這樣!您已經成功創建了您的第一個 Python 專案。這是一種簡單而強大的方式來了解 API 如何在現實應用程式中運作。
現在,讓我們建立一個 GitHub Pull Request (PR) 追蹤器。該專案利用 GitHub API 來獲取有關特定儲存庫的拉取請求的詳細資訊。我們將過濾資料以提取 PR 建立者的使用者名,計算每個建立者建立的 PR 數量,並顯示此資訊。
工作原理:
逐步說明:
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()
執行腳本:
預期輸出:
當腳本成功運行時,它會從 argoproj/argo-cd 儲存庫獲取拉取請求的詳細資訊。這將顯示以下輸出:
Enter Your City: Ganganagar Weather in Ganganagar: Temperature: 24°C Wind Speed: 10 Km/hr Condition: Clear
用例:
就是這樣!一個功能腳本,可從 GitHub 獲取即時數據並對其進行處理以獲取真實世界的見解。
我們的最終專案是一個 gem - 一個整合 Jenkins 和 Slack 以自動產生通知的腳本。此 Python 腳本觸發 Jenkins 管道,監視其狀態,並在管道完成時向您的 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 令牌:
設定 Slack:
執行腳本:
Slack 中的範例輸出:
管道已成功構建,狀態:**成功**
這個專案是 Python 如何彌合 CI/CD 工具和通訊平台之間的差距、自動通知並改善協作的絕佳範例。
恭喜您完成這三個令人興奮的 Python 專案!每個專案都旨在教您如何在現實場景中使用 Python:
這些項目只是冰山一角。當您進一步探索時,您將看到 Python 的多功能性如何使其成為任何 DevOps 工程師的必備技能。除了編碼之外,它還可以實現自動化、提高生產力,並彌合複雜工作流程和使用者友好的解決方案之間的差距。
不斷建構、實驗和學習-這就是 Python 和 DevOps 的本質!請記住,掌握程式設計的最好方法就是實踐。
感謝您加入我的旅程!如果您喜歡這個博客,請隨時與您的朋友和其他學習者分享。
?如需了解更多資訊博客,請在 Hashnode、X(Twitter) 和 LinkedIn 上關注我。
到此為止,祝您編碼愉快! !
快樂學習! ?
以上是ython 專案啟動 Python 學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!