基于蓝鲸(Django)的CMDB开发 - 准备工作

蓝鲸基于Django开发,是腾讯游戏运营部自主研发的一套具有多项探索式创新的,为业务量身打造的,定制化的一站式运维体系。在蓝鲸的后台,它提供了“开发框架”,集成了公共的后台模块,如登录、API 调用等。

需求

我的需求很简单,由于手中管着多个云厂商的账号,每个账号下有一箩筐的云主机和数据库实例。我希望在蓝鲸中实现一个功能类似CMDB的APP,通过API抓取所有云厂商账号下的实例,实现资产可视化管理,这样每次查实例的时候,就不用再来回频繁地切换账号,做到所有资产的一目了然。


0-开始之前

在开始之前,需要准备的有:

  • 1、下载蓝鲸开发框架。
  • 2、搭建开发环境。

关于蓝鲸开发框架

蓝鲸提供的后台“开发框架”,其实就是一套Django的框架,将蓝鲸中相关信息写在里面,你要做的是填入你的相关代码,然后部署到蓝鲸系统中,即可实现自定义功能的开发。

它的理念,无非是蓝鲸作为PAAS平台的存在,而个人开发的应用以SAAS的方式接入蓝鲸。

蓝鲸提供1.02.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_CODESECRET_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',
    },
}

测试环境:

# 预发布环境数据库可以在这里配置

DATABASES.update(
    {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'xxxx',  # 数据库名
            'USER': 'root',  # 数据库用户
            'PASSWORD': 'xxxxx',  # 数据库密码
            'HOST': 'localhost',  # 数据库主机
            'PORT': '3306',  # 数据库端口
        },
    }
)

- runtime.txt文件

2.0版的开发框架支持Python2Python3进行开发,使用哪个版本的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跑起来。

发布了24 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/saeba5566/article/details/104908176