蓝鲸基于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 模板
- 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
- requirements.txt # 依赖的 python 包列表
- settings.py # Django 工程 settings
- urls.py # Django 工程主路由 URL 配置
- wsgi.py # WSGI配置
- runtime.txt # 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,例如 http://paas.bking.com
BK_URL = 'http://paas.xxxx.com: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.db.backends.mysql',
'NAME': APP_ID,
'USER': 'root',
'PASSWORD': 'xxxxxx',
'HOST': '127.0.0.1',
'PORT': '3306',
},
}
测试环境:
扫描二维码关注公众号,回复: 9949721 查看本文章
# 预发布环境数据库可以在这里配置
DATABASES.update(
{
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'xxxx', # 数据库名
'USER': 'root', # 数据库用户
'PASSWORD': 'xxxxx', # 数据库密码
'HOST': 'localhost', # 数据库主机
'PORT': '3306', # 数据库端口
},
}
)
- runtime.txt文件
2.0版的开发框架支持Python2
和Python3
进行开发,使用哪个版本的Python,只需要在这里写入相应的Python版本即可,比如我的:
python-3.6.7
- requirements.txt文件
这里需要填写你在开发过程中所用到的 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跑起来。