下面我为你详细讲解如何用Python搭建一个CMDB系统。
1. 准备工作
在开始构建CMDB系统之前,你需要先安装好Python 3.x和一个web框架,比如Django或Flask。本例中,我们将使用Django框架。
2. 创建数据库
在Django中,可以使用ORM(对象关系映射)来管理数据库,这意味着我们可以使用Python类来代表数据库中的表格。在项目根目录下,打开终端或命令行,运行以下命令以创建数据库:
python manage.py makemigrations
python manage.py migrate
3. 添加模型类
我们需要为数据库添加几个模型类。模型类是Django框架中ORM的核心。这里,我们需要添加两个模型类:服务器信息和应用程序信息。这里以服务器信息为例,示例代码如下:
from django.db import models
class Server(models.Model):
hostname = models.CharField(max_length=100)
ip_address = models.GenericIPAddressField()
os_type = models.CharField(max_length=50)
cpu_count = models.IntegerField()
memory_size = models.IntegerField()
disk_size = models.IntegerField()
create_time = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.hostname
在此示例中,我们定义了一个名为“Server”的模型类,它有六个属性:hostname,ip_address,os_type,cpu_count,memory_size和disk_size。我们还添加了一个自动生成时间戳的属性create_time。最后,我们定义了这个模型类的__str__方法,以便在admin后台界面中更好地显示它。
4. 创建视图
视图是Django框架中的另一个核心组件,它用于处理HTTP请求。视图通常根据请求的URL路径和HTTP方法来执行不同的操作。在这个例子中,视图类要做的是显示所有服务器信息,或添加/编辑服务器信息。
在项目的views.py文件中,添加以下代码:
from django.shortcuts import render
from django.views import View
from .models import Server
class ServerList(View):
def get(self, request):
servers = Server.objects.all()
return render(request, "server_list.html", {"servers": servers})
class ServerEdit(View):
def get(self, request, server_id):
server = Server.objects.get(id=server_id)
return render(request, "server_edit.html", {"server": server})
def post(self, request, server_id):
server = Server.objects.get(id=server_id)
server.hostname = request.POST.get("hostname")
server.ip_address = request.POST.get("ip_addr")
server.os_type = request.POST.get("os_type")
server.cpu_count = request.POST.get("cpu_count")
server.memory_size = request.POST.get("memory_size")
server.disk_size = request.POST.get("disk_size")
server.save()
return render(request, "server_edit.html", {"server": server})
在此示例中,我们定义了两个视图类:ServerList和ServerEdit,前者用于展示所有服务器信息,后者用于添加/编辑服务器信息。我们在每个类中定义了一个get方法和一个post方法,以便根据HTTP请求类型执行不同的操作。
5. 创建模板
在Django中,模板用于在视图中呈现数据。在项目的templates文件夹中,添加以下两个HTML文件:
server_list.html:
{% for server in servers %}
<h3>{{server.hostname}}</h3>
<p>{{server.ip_address}}</p>
<p>{{server.os_type}}</p>
<p>{{server.cpu_count}}</p>
<p>{{server.memory_size}}</p>
<p>{{server.disk_size}}</p>
{% endfor %}
server_edit.html:
<form method="post">
{% csrf_token %}
<label>Hostname:</label>
<input type="text" name="hostname" value="{{server.hostname}}"><br>
<label>IP Address:</label>
<input type="text" name="ip_addr" value="{{server.ip_address}}"><br>
<label>OS Type:</label>
<input type="text" name="os_type" value="{{server.os_type}}"><br>
<label>CPU Count:</label>
<input type="text" name="cpu_count" value="{{server.cpu_count}}"><br>
<label>Memory Size:</label>
<input type="text" name="memory_size" value="{{server.memory_size}}"><br>
<label>Disk Size:</label>
<input type="text" name="disk_size" value="{{server.disk_size}}"><br>
<input type="submit" value="Save">
</form>
6. 添加路由
为了访问我们创建的视图,我们需要将其与相应的URL路径绑定起来。在项目的urls.py文件中,添加以下代码:
from django.urls import path
from .views import ServerList, ServerEdit
urlpatterns = [
path("servers/", ServerList.as_view(), name="server_list"),
path("servers/edit/<int:server_id>/", ServerEdit.as_view(), name="server_edit"),
]
在此示例中,我们绑定了两个URL路径到相应的视图类:"/servers/"对应的ServerList视图,“/servers/edit/”后面加id对应的是ServerEdit视图。
示例
以上就是使用Python和Django搭建一个简单且好用的CMDB系统的完整攻略。下面,我将以修改一台服务器信息为例,介绍如何使用这个CMDB系统。
-
首先,进入服务器列表页面,在这个页面中,我们可以看到所有已经添加的服务器信息。
-
在列表中选择一台服务器,点击“编辑”按钮,会跳转到服务器编辑页面。
-
在服务器编辑页面,修改服务器信息,然后点击“保存”。
-
修改完成后,系统会自动跳转回到修改过的服务器信息的页面,同时更新到数据库中。
使用这个CMDB系统可以方便地管理多台服务器,且可以随时添加、修改服务器信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:10分钟用python搭建一个超好用的CMDB系统 - Python技术站