开始使用 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中文网其他相关文章!