1 应用技术
后端
- Python3.7
- Django2.x
- Celery4.x
- Saltstack
- Restful
- Mysql
- Redis
前端
- jquery
- bootstrap
- bootstrap-table
- bootstrap-fileinput
2 实现过程
2.1 CMDB资产管理
2.1.1 资产录入
2.1.2 资产删除
2.1.3 资产修改
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模块
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 文件上传
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)
参考资料
Django2集成celery4执行异步任务、定时任务
2.4.2 启动Celery工作进程
celery -A celery_tasks worker -l info
2.4.3 查看注册任务
2.4.4 添加执行任务(task)
官方文档
Celery管理和监控工具-Flower
Flower API
2.4.5 查看执行任务
2.4.6 查看执行任务结果