基于蓝鲸(Django)的CMDB开发-准备⼯作
蓝鲸基于Django开发,是腾讯游戏运营部⾃主研发的⼀套具有多项探索式创新的,为业务量⾝打造的,定制化的⼀站式运维体系。在蓝鲸的后台,它提供了“开发框架”,集成了公共的后台模块,如登录、API 调⽤等。
需求
我的需求很简单,由于⼿中管着多个云⼚商的账号,每个账号下有⼀箩筐的云主机和数据库实例。我希望在蓝鲸中实现⼀个功能类似CMDB 的APP,通过API抓取所有云⼚商账号下的实例,实现资产可视化管理,这样每次查实例的时候,就不⽤再来回频繁地切换账号,做到所有资产的⼀⽬了然。
0-开始之前
在开始之前,需要准备的有:
1、下载蓝鲸开发框架。
2、搭建开发环境。
关于蓝鲸开发框架
蓝鲸提供的后台“开发框架”,其实就是⼀套Django的框架,将蓝鲸中相关信息写在⾥⾯,你要做的是填⼊你的相关代码,然后部署到蓝鲸系统中,即可实现⾃定义功能的开发。
它的理念,⽆⾮是蓝鲸作为PAAS平台的存在,⽽个⼈开发的应⽤以SAAS的⽅式接⼊蓝鲸。
蓝鲸提供1.0和2.0两个开发框架的版本。在蓝鲸开发者中⼼提供了开发框架和相关资源包的下载:
整个框架的⽬录结构如下:
- blueapps # Python开发框架模块
- blueking # ESB调⽤模块
- config # 应⽤配置⽬录
- __init__.py # 应⽤ RUN_VER(ieod/clouds/qcloud)、APP_CODE 和 SECRET_KEY 等配置
- dev.py # 本地开发配置(开发团队共享)
- default.py # 全局配置
- prod.py # ⽣产环境配置
- stag.py # 预发布环境配置
- home_application # Django 模板应⽤样例
- __init__.py
- admin.py
- urls.py
- models.py
- tests.py
- views.py
- templates # Django 模板
django admin 自定义页面-
home_application
- contact.html # 页⾯
- dev_guide.html # 开发指引
- index_home.html # ⾸页
- mako_templates # mako 公共模板⽂件
- base.mako # mako 模板基础⽂件,其他的页⾯可以从这⾥继承
- mako_application # mako 模板应⽤样例
- __init__.py
- admin.py
- urls.py
- models.py
-
tests.py
- views.py
- mako_templates # 模板
- mako_application
- contact.html # 页⾯
- dev_guide.html # 开发指引
- index_home.html # ⾸页
- static # 公共静态⽂件
- js # 公共 js
- csrftoken.js # CSRFTOKEN
- settings.js # 异常处理
-
templates # 公共模板⽂件
- admin # admin 模板⽂件
- base_site.html
- login.html
- base.html # Django 模板基础⽂件,其他的页⾯可以从这⾥继承
- manage.py # Django ⼯程 manage
- # 依赖的 python 包列表
- settings.py # Django ⼯程 settings
- urls.py # Django ⼯程主路由 URL 配置
- wsgi.py # WSGI配置
- # Python 版本配置⽂件,默认指向 Python 3.6.2版本
熟悉Django的同学应该都知道这是典型的Django结构,⽽作为第⼀次接触的同学,你需要关注的点有:
- config⽂件夹
__init.py__: 这⾥存放的是你的 App 基本信息,如APPID和相应的TOKEN。 在 config/__init__.py可以查看 App 基本信息,请修改:APP_CODE、SECRET_KEY (⽤于 App 认证)和BK_URL(蓝鲸SaaS平台的URL)。RUN_VER 是当前 App 运⾏的 PaaS 版本,请不要修改:
# app 基本信息
# SaaS运⾏版本,如⾮必要请勿修改
RUN_VER ='open'
# SaaS应⽤ID
APP_CODE ='yourAPP name here'
# SaaS安全密钥,注意请勿泄露该密钥
SECRET_KEY ='xxxx-xxxx-xxxx-xxxx'
# 蓝鲸SaaS平台URL,例如 paas.bking
BK_URL =':80'
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(
__file__)))
default.py:没有特别情况⼤部分内容⽆须修改,只需要注册好你的APP项⽬名:
# 请在这⾥加⼊你的⾃定义 APP
INSTALLED_APPS +=(
'home_application',
'mako_application',
'your APP name here',
)
dev.py/prod.py/stag.py: 这三个⽂件分别代表了本地开发环境、预发布环境、正式环境的环境信息,APP的开发流程⼀般分为本地开发->预发布环境测试->正式上线。所以需要在各个环境做好运⾏所依赖的相关配置信息,假设在开发环境与测试环境下使⽤到不同的数据库,那么我们需要分别在两个⽂件⾥进⾏配置:
开发环境:
# 本地开发数据库设置
# USE FOLLOWING SQL TO CREATE THE DATABASE NAMED APP_CODE
# SQL: CREATE DATABASE `framework_py` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; # noqa: E501
DATABASES ={
'default':{
'ENGINE':'django.sql',
'NAME': APP_ID,
'USER':'root',
'PASSWORD':'xxxxxx',
'HOST':'127.0.0.1',
'PORT':'3306',
},
}
测试环境:
# 预发布环境数据库可以在这⾥配置
DATABASES.update(
{
'default':{
'ENGINE':'django.sql',
'NAME':'xxxx',# 数据库名
'USER':'root',# 数据库⽤户
'PASSWORD':'xxxxx',# 数据库密码
'HOST':'localhost',# 数据库主机
'PORT':'3306',# 数据库端⼝
},
}
)
-
⽂件
2.0版的开发框架⽀持Python2和Python3进⾏开发,使⽤哪个版本的Python,只需要在这⾥写⼊相应的Python版本即可,⽐如我的:
python-3.6.7
- ⽂件
这⾥需要填写你在开发过程中所⽤到的 python 包列表, 蓝鲸在部署应⽤的过程中会⾃动根据当前⽂件依次安装python包。⽐如这⾥我会⽤到paramiko \ webssh等包,只需把包的名称和版本追加到⽂件后即可:
# -*- coding: utf-8 -*-
# ⼯程预装模块
# 需要额外的python包,可直接在⽂件后⾯添加
# 请确保指定的包和版本号,可通过pip安装
# blueapps requirement
Django==1.11.2
PyMySQL==0.6.7
MarkupSafe==1.0
Mako==1.0.6
requests==2.18.1
celery==3.1.25
django-celery==3.2.1
python-json-logger==0.1.7
whitenoise==3.3.0
six==1.11.0
#v2 requirement
httplib2==0.9.1
uWSGI==2.0.13.1
python-jenkins==1.5.0
gevent==1.4.0
paramiko==2.7.0
webssh==1.5.0
搭建开发环境
我这⾥的开发环境基于windows,使⽤了Python3.6 + Django 1.11 + Mysql 5.5
出于精神洁癖,使⽤了virtualenvwrapper创建独⽴的开发环境
pip install virtualenv virtualenvwrapper
进⼊开发⽤的虚拟环境创建之后,安装所依赖的Python包即可。
⾄此,开发前该做的准备⼯作都已完成。
下⼀步,我们试着创建⼀个demo跑起来。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论