Python スクリプトを使用して DevOps 自動化を始めてみましょう
DevOps と Python の世界へようこそ
DevOps エンジニアはコーディングをしないというのが一般的な通説ですが、真実は全く異なります。 DevOps エンジニアは、プロセスを自動化し、インフラストラクチャを管理し、ワークフローを簡素化するためにプログラミング スキルに頼ることがよくあります。 Python と Go は、その多用途性と使いやすさにより、DevOps の世界で最も好まれている 2 つの言語です。
今日は、プログラミングの核心を紹介するだけでなく、有意義で実用的なアプリケーションの構築にも役立つ 3 つの Python プロジェクトを作成するエキサイティングな旅に乗り出します。
ここで検討する内容は次のとおりです:
それで、この旅に飛び込む準備はできていますか?始めましょう!
コーディングに入る前に、開始するために必要なものがすべて揃っていることを確認しましょう。これらのプロジェクトは初心者向けですが、次のツールとスキルを用意しておくとプロセスがよりスムーズになります:
1. Python の基本知識
変数、関数、ループ、およびライブラリの操作方法を理解すると役立ちます。初めての方でも心配する必要はありません。これらのプロジェクトはあなたの学習を強化します!
2. Python 環境
Python がシステムにインストールされていることを確認してください。 python.org からダウンロードできます。 VS Code や PyCharm などのコード エディターも推奨されます。
3. API の基礎
3 つのプロジェクトすべてで 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) Tracker を構築しましょう。このプロジェクトは、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 ツールと通信プラットフォームの間のギャップをどのように埋め、通知を自動化し、コラボレーションを改善できるかを示す素晴らしい例です。
これら 3 つのエキサイティングな Python プロジェクトの完了、おめでとうございます!各プロジェクトは、実際のシナリオで Python を使用する方法を教えるように設計されています。
これらのプロジェクトは氷山の一角にすぎません。さらに詳しく調べていくと、Python の多用途性により、Python が DevOps エンジニアにとって必須のスキルとなっていることがわかります。コーディングを超えて、自動化が可能になり、生産性が向上し、複雑なワークフローとユーザーフレンドリーなソリューションの間のギャップを埋めます。
構築、実験、学習を続けてください。これが Python と DevOps の本質です。プログラミングをマスターする最良の方法は実際にやってみることだということを忘れないでください。
この旅にご参加いただきありがとうございます!このブログを気に入っていただけましたら、お気軽にお友達や学習仲間と共有してください。
?さらに有益なブログについては、Hashnode、X(Twitter)、LinkedIn でフォローしてください。
それまで、ハッピーコーディング!!
楽しく学習してください! ?
以上がPython 学習を開始するための ython プロジェクトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。