运维管理平台开发思路
admin
2023-07-08 11:24:29
0

1 应用技术

后端

  • Python3.7
  • Django2.x
  • Celery4.x
  • Saltstack
  • Restful
  • Mysql
  • Redis

前端

  • jquery
  • bootstrap
  • bootstrap-table
  • bootstrap-fileinput

2 实现过程

2.1 CMDB资产管理

2.1.1 资产录入
  • 前端页面填写表单,
  • 提交数据到Django后台,
  • 通过Django Orm操作写入到Mysql数据库
    data_info = {'id':1,'ip':'192.168.56.1','hostname':'test'}
    OpServerM.objects.get_or_create(**data_info)
2.1.2 资产删除
  • 同上类似
2.1.3 资产修改
  • 前端利用bootstrapTable编辑
  • 通过ajax提交修改数据到Django后台
  • 然后通过Orm操作更新入库
    update_data = {'id':1,'ip':'192.168.56.101','hostname':'test01'}
    server = OpServerM.objects.filter(pk=update_data['id'])
    server.update(**update_data)
2.1.4 批量导入资产
  • 前端利用bootstrap-fileinput上传数据到Django后台
  • Django后台用bulk_create批量操作写入Mysql数据库
response = HttpResponse()
response['Content-Type'] = "text/javascript"
hostsFile = request.FILES.getlist('uploadhosts')
for i in hostsFile:
    filename = os.path.join(MEDIA_ROOT,i.name)
    file = open(filename, 'wb')
    for chrunk in i.chunks():
        file.write(chrunk)
    file.close()
  • 批量导入数据库bulk_create
    def imp_hosts(filename,sheet_name,model_name):
    fileds = model_name._meta.get_fields(include_parents=False)
    flist = []
    for filed in fileds:
        flist.append(str(filed).split('.')[-1])
    wb = load_workbook(filename)
    ##读取excel表sheet名称为sheet_name的数据
    ws = wb[sheet_name]
    List=[]
    for row in list(ws.rows)[1:]:
        cols = []
        for col in row:
            cols.append(col.value)
        tab_dic = dict(map(lambda x, y: [x, y], flist, cols))
        List.append(model_name(**tab_dic))
    model_name.objects.bulk_create(List)

2.2 服务器管理--Saltstack

2.2.1 定义各种服务state.sls模块
  • EG:文件同步
log-monitor:
  file.managed:
    - name: /data/shell/log-monitor.sh
    - source: salt://init/centos/files/log-monitor.sh
    - template: jinja
  • 更多任务编排请参考官网
2.2.2 配置Salt API

参考资料

  • Saltstack之Salt-api安装使用
  • 官方文档
2.2.3 Salt Restful API

Saltstack API

2.2.4 执行命令
salt '192.168.56.101' cmd.run 'free -m'
2.2.5 系统初始化、基础服务安装、应用安装、用户管理
  • 通过CMDB录入资产
  • Django后台配置定时任务读取CMDB数据
  • 利用state.sls模块将编排的saltstack任务分发到目标主机

参考资料

Saltstack任务编排stats.sls

2.3 文件分发

2.3.1 文件上传
  • 前端利用bootstrap-fileinput上传到Django静态服务目录media
    vim {django_root}/project/settings.py
    MEDIA_URL='/media/'
    MEDIA_ROOT='media'
  • 调用saltstack api的cp.get_url模块分发到目标服务器
    salt '192.168.56.101' cp.get_url http://{django-server:port}/media/upload.file /tmp/upload.file
2.3.2 文件下载
  • 调用saltstack api,利用cp.push模块将目标文件拉取到Salt Master端
    salt '192.168.56.101' cp.push /tmp/download.file
  • 然后使用cp.get_file将Salt Master端的文件推送到Django的静态服务media目录下
    salt 'django-server' cp.get_file  salt://192.168.56.101/tmp/download.file /{DJANGO_ROOT}/media/download.file
  • 最后前端下载Django后台的media目录下的文件
    wget http://{django-server:port}/media/download.file

2.4 任务管理--Celery

2.4.1 编写任务(task)
  • 定时检测CMDB的主机、基础服务、应用、用户

参考资料

Django2集成celery4执行异步任务、定时任务

2.4.2 启动Celery工作进程
celery -A celery_tasks worker -l info
2.4.3 查看注册任务
2.4.4 添加执行任务(task)
  • 利用Flower api对任务管理

官方文档

Celery管理和监控工具-Flower

Flower API

2.4.5 查看执行任务
2.4.6 查看执行任务结果

上一篇:Python实现二叉树

下一篇:centos安装python3

相关内容

热门资讯

美前副总统:共和党失去了方向,... 2026年是美国的中期选举年,共和党选情不利,可能在年底的选举中遭遇挫败。美国前副总统彭斯5月31日...
南枝原来去过中国?《给阿嬷的情... 《给阿嬷的情书》票房口碑双丰收,目前票房已突破13亿。凤凰卫视最新一期《问答神州》专访了该片导演蓝鸿...
法国海军扣押一艘俄“影子舰队”... 近日,法国海军在大西洋海域扣押了一艘据称从俄罗斯摩尔曼斯克出发的油轮,引发俄方强烈不满。俄新社6月1...
凤凰晚报丨面粉染头模仿黄仁勋,... 今日人物【面粉染头模仿黄仁勋,农村青年走红后称遭“法务”警告】“先赔偿5000元肖像侵权使用费,再删...
亲特朗普极右派候选人领跑哥伦比... 【文/观察者网 熊超然】当地时间5月31日,哥伦比亚总统选举拉开帷幕,首轮投票计票工作已完成逾99%...
2026年度网络举报系列宣传活... 5月28日至29日,以“每一件举报,都是共治的力量——豫你e行 同心护网”为主题的2026年度网络举...
中原首例帝企鹅DNA性别鉴定!... 近日,郑州海昌海洋公园正式对外公布中原首对人工繁育的帝企鹅萌宝的DNA性别鉴定报告。这是中原首个将 ...
我国科学家为细胞信号“导航”开... 新华社济南5月31日电(记者张力元)人体细胞犹如一座精密的通信城市,每天都有大量“指令”穿梭传递,调...
极端大风突袭哈尔滨!过山车停摆... 极目新闻记者 詹钘5月31日,受强对流天气影响,哈尔滨国际会展中心体育场相关设施受到损坏,原计划当晚...
三原电缆取得电缆接头连接用防护... 国家知识产权局信息显示,上海三原电缆附件有限公司取得一项名为“一种电缆接头连接用防护结构”的专利,授...