cmdb

373 阅读2分钟

环境和依赖介绍

依赖环境都配置到了镜像中(hikcmdb:1.7)

  • django:2.2.5
  • 存储:postgresql
  • python:3.6
  • UI:simpleui-3.9
  • docker:18.09.7

安装方法

说明:首次安装先初始化,后面启动服务时只需执行部署动作

初始化

  • 配置数据库 /home/ops/newcmdb/mysite/settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'postgres',  #数据库
        'USER': 'postgres', #用户名
        "PASSWORD" : 'pg123456', #自己的密码
        "HOST":'172.16.0.4',  #数据库ip
        'PORT':5432,   #数据库监听端口
    }
}
  • 预启动
docker run -it -p 8888:8888 --name cmdb --restart=always -v /home/ops/newcmdb:/usr/src/cmdb hikcmdb:1.7 bash
  • 初始化数据库
docker exec -it cmdb python manage.py makemigrations
docker exec -it cmdb python manage.py migrate
  • 创建用户
docker exec -it cmdb python manage.py createsuperuser
  • 删除容器
docker rm -f cmdb

部署

docker run -it -p 8888:8888 --name cmdb --restart=always -v /home/ops/newcmdb:/usr/src/cmdb hikcmdb:1.7 

自定义配置

编辑 app/admin.py文件,在对应模型的管理器中进行自定义设置

列表页面配置

  • 自定义显示的列
#Asset模型管理器
class Assetlist(ImportExportActionModelAdmin):
    ...
    list_display = ['node_ip', 'bmc_ip', 'area', 'project', 'service', 'asset_type', 'pic', 'user', 'status', 'comment_ellipsis', 'login_manage' ] 
    ...
  • 搜索字段
    ...
    search_fields = ['node_ip', 'bmc_ip', 'sn', 'assetnum']  
    ...
  • 过滤字段
    ...
    list_filter = ['area', 'manufacturer', 'env']  
    ...
  • 每页显示条数
    ...
    list_per_page = 10  # 每页显示10条
    ...

字段配置

在app/models.py中对字段进行操作,models.py定义一个或多个表(class),在对应表中增、删、改字段即可。最后,执行数据库迁移操作生效

docker exec -it cmdb python manage.py makemigrations
docker exec -it cmdb python manage.py migrate

编辑页面配置

增加一个字段后如何展示在编辑页面?只需将字段添加至fieldsets中的任意一个fields中。fieldsets用于对字段分块,看起来比较整洁

fieldsets = (
        (u'IP地址', {
            'fields': ('node_ip', 'bmc_ip')
        }),

        (u'配置', {
            'classes': ('2',),
            'fields': ('os', 'port', 'cpu', 'memory', 'disk', 'disknum')
        }),

        (u'位置信息', {
            'classes': ('3',),
            'fields': ('area', 'room', 'cabinet', 'cabinet_location', 'sn', 'assetnum', 'material_num')
        }),

        (u'其他', {
            'classes': ('4',),
            'fields': ('manufacturer', 'asset_type', 'status', 'project', 'env', 'service', 'pic', 'user', 'comment')
        })
    )