溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

運維管理平臺開發(fā)思路

發(fā)布時間:2020-06-19 22:49:29 來源:網(wǎng)絡(luò) 閱讀:389 作者:蜷縮的蝸牛 欄目:編程語言

1 應(yīng)用技術(shù)

后端

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

前端

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

2 實現(xiàn)過程

2.1 CMDB資產(chǎn)管理

2.1.1 資產(chǎn)錄入
  • 前端頁面填寫表單,
  • 提交數(shù)據(jù)到Django后臺,
  • 通過Django Orm操作寫入到Mysql數(shù)據(jù)庫
    data_info = {'id':1,'ip':'192.168.56.1','hostname':'test'}
    OpServerM.objects.get_or_create(**data_info)
2.1.2 資產(chǎn)刪除
  • 同上類似
2.1.3 資產(chǎn)修改
  • 前端利用bootstrapTable編輯
  • 通過ajax提交修改數(shù)據(jù)到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 批量導入資產(chǎn)
  • 前端利用bootstrap-fileinput上傳數(shù)據(jù)到Django后臺
  • Django后臺用bulk_create批量操作寫入Mysql數(shù)據(jù)庫
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()
  • 批量導入數(shù)據(jù)庫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的數(shù)據(jù)
    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 服務(wù)器管理--Saltstack

2.2.1 定義各種服務(wù)state.sls模塊
  • EG:文件同步
log-monitor:
  file.managed:
    - name: /data/shell/log-monitor.sh
    - source: salt://init/centos/files/log-monitor.sh
    - template: jinja
  • 更多任務(wù)編排請參考官網(wǎng)
2.2.2 配置Salt API

參考資料

  • Saltstack之Salt-api安裝使用
  • 官方文檔
2.2.3 Salt Restful API

Saltstack API

2.2.4 執(zhí)行命令
salt '192.168.56.101' cmd.run 'free -m'
2.2.5 系統(tǒng)初始化、基礎(chǔ)服務(wù)安裝、應(yīng)用安裝、用戶管理
  • 通過CMDB錄入資產(chǎn)
  • Django后臺配置定時任務(wù)讀取CMDB數(shù)據(jù)
  • 利用state.sls模塊將編排的saltstack任務(wù)分發(fā)到目標主機

參考資料

Saltstack任務(wù)編排stats.sls

2.3 文件分發(fā)

2.3.1 文件上傳
  • 前端利用bootstrap-fileinput上傳到Django靜態(tài)服務(wù)目錄media
    vim {django_root}/project/settings.py
    MEDIA_URL='/media/'
    MEDIA_ROOT='media'
  • 調(diào)用saltstack api的cp.get_url模塊分發(fā)到目標服務(wù)器
    salt '192.168.56.101' cp.get_url http://{django-server:port}/media/upload.file /tmp/upload.file
2.3.2 文件下載
  • 調(diào)用saltstack api,利用cp.push模塊將目標文件拉取到Salt Master端
    salt '192.168.56.101' cp.push /tmp/download.file
  • 然后使用cp.get_file將Salt Master端的文件推送到Django的靜態(tài)服務(wù)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 任務(wù)管理--Celery

2.4.1 編寫任務(wù)(task)
  • 定時檢測CMDB的主機、基礎(chǔ)服務(wù)、應(yīng)用、用戶

參考資料

Django2集成celery4執(zhí)行異步任務(wù)、定時任務(wù)

2.4.2 啟動Celery工作進程
celery -A celery_tasks worker -l info
2.4.3 查看注冊任務(wù)
2.4.4 添加執(zhí)行任務(wù)(task)
  • 利用Flower api對任務(wù)管理

官方文檔

Celery管理和監(jiān)控工具-Flower

Flower API

2.4.5 查看執(zhí)行任務(wù)
2.4.6 查看執(zhí)行任務(wù)結(jié)果
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI