项目地址:https://gitee.com/sdsnzy/cmdb
项目过程:
- Django自动化资产扫描----(2)项目远程环境搭建
- Django自动化资产扫描(3)----存活探测(Nmap)、主机探测(Telnet)、ssh远程登陆(Paramiko)
- Django自动化资产扫描(4)----定时任务自动化检测数据(paramiko+celery)
远程服务器:关闭远程服务器防火墙和selinux
0. 项目简介
0.1 资产管理
- 资产管理是运维的基本工作;
- 资产管理是DevOPS系统的基础;
- 资产管理是自动化运维平台构建的基础。
0.2 资产管理技术
- 资产信息的手工录入: 手工操作工作量大,尤其是首次录入。
- 客户端主机主动上报: 需要给不同的设备编写对应的客户端程序, 开发工作量大。
- 服务器端主动发现探测(本项目主要实现)
基本要求:
- 内网Linux服务器主机类型(Centos4-6、Ubuntu12、14+)
- 系统内部开通ssh服务端口为Linux服务器
- Linux系统开放ssh的端口范围(22、20022、202)
- 安全规则(开放允许探测协议和登录的限制)
- 网络设备开通snmp服务,且community都已经统一
- 虚拟机不再运行容器等虚拟资产
- 网络设备(cisco系列等)
0.3 资产管理探测流程
- 存活探测:获取局域网内存活的IP列表
- 主机探测:获取系统版本(SN、版本、MAC地址)
- 主机关系探测:识别宿主主机和虚拟机的关系
- 网络设备的探测: 探测网络设备信息(SN、设备名等),使用snmp协议
- 其他设备的探测:
一、创建项目
1)创建项目:cmdb
2)创建app:scanhost
python manage.py startapp scanhost
3)添加app到主配置文件并修改相应设置:
cmdb/settings.py
INSTALLED_APPS = [
'scanhost',
]
LANGUAGE_CODE = 'zh-hans' # 修改语言
TIME_ZONE = 'Asia/Shanghai' # 修改时区
USE_TZ = False
4)生成数据库表:
python manage.py makemigrations # 生成数据库迁移脚本(每次修改了数据库必备操作)
python manage.py migrate # 将迁移脚本写入数据库并创建数据库表
5)创建超级用户:
python manage.py createsuperuser
6)运行测试:这里设置端口为9999
python manage.py runserver 9999
访问:localhost:9999/admin
二、git初始化
1)初始化git仓库管理:
git init
2)安装插件 .ignore,并生成python上传git项目需要忽略内容的文件 .gitignore
安装插件并忽略指定内容教程:https://blog.csdn.net/weixin_46069582/article/details/114595118
3)保存项目过程
git add * # 将本地增删改查的文件全部添加到暂存区
git commit -m "git 初始化" # 添加到本地仓库
git log # 查看提交日志
4)准备 README.md :
1.导入此项目需要的包(最后完成时导入)
pip freeze > requirements.txt
2.创建 README.md
5)上传到gitee仓库:
1.在gitee中新建仓库cmdb
2.关联仓库
git remote add origin https://gitee.com/sdsnzy/sys-info.git
3.首次上传
git push --set-upstream origin master -f
4.上传
git push
三、准备工作
3.1 配置开发及生产环境
1)在 cmdb 下创建包 settings(作为配置文件存放地),将原始基本配置文件settings.py 移动到此包下,并重命名为 base.py
2)创建开发环境配置:cmdb/settings/dev.py
from .base import *
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
3)创建生产环境配置:cmdb/settings/prod.py
from .base import *
# 开发环境一定要关闭调试模式
DEBUG = False
# 允许所有主机访问
ALLOWED_HOSTS = ['*']
4)修改 cmdb/settings/__init__.py,配置为开发环境(如果项目将来需要上线, 修改启动项目访问的配置文件为生产环境的配置文件即可,)
# 开发环境
import os
env = os.environ.get('PROJECT_ENV', 'dev')
if env == 'dev':
from .dev import *
elif env == 'prod':
from .prod import *
else:
from .dev import *
# 生产环境
import os
env = os.environ.get('PROJECT_ENV', 'prod')
if env == 'dev':
from .dev import *
elif env == 'prod':
from .prod import *
else:
from .dev import *
5)迁移数据库
python manage.py migrate
python manage.py createsuperuser
启动服务器:python manage.py runserver 9999