目录
8.Nmap的Python操作接口: python-nmap
一、项目介绍
本项目通过
KVM
虚拟化搭建
Linux
系统集群,使用
Ansible
实现
Linux
集群下的批量部署与自动化管理,实现Web
形式的自动化运维系统
,
集中批量控制服务器
,
最终实现能支撑
1000
台实例的环境提供管理和自动化任务, 提高运维工程师的工作质量和效率。 项目基于HTTP
实现自动化任务接受和响应接口设计,基于MySQL
用作的关系型数据存取, 基于
Redis
的任务锁机制和消息队列, 基于
MongoDB
的事件日志记录, 最终实现邮件通知功能、敏感数据加密功能、日志事件记录功能。
二、项目背景
1.互联网快速发展
- 网站用户规模、使用快速上升
- 要求庞大系统支撑能力
- 更加快速的运维效率应对突发流量
- 更加自动化的方式减少人工投入成本
- 更加可靠的技术手段,保障系统的稳定
2.云时代
- 腾讯云、阿里云、亚马逊云、青云等云厂商的市场份额不断增加
- 大部分技术架构设计不再以网络设计、IDC和系统硬件等方面作为重点
- 运维基础的、繁琐的工作逐步减少
- 小公司也不再需要一个运维工程师或者系统工程师
结论
:
在这样的时代背景下, 大型互联网公司为了应对市场的快速变化,就需要运维自动化。
3.项目准备
1.运维自动化难点和痛点
- 开发人员: 没有系统管理、网络管理等相关运维工作经验,项目设计往往是大打折扣的。
- 运维人员: 不具备开发能力、没有项目的开发经验或能力
- 做好一个优秀的运维开发人员DevOPS = 运维能力 + 开发能力
本次项目实战就是用最短的时间、手把手地完成运维开发系统的开发实战。
2.项目技术难点
- 基本技能
- DevOPS构建之路
- Python基础语法
- Django框架
- 自动化资产扫描发现
- 资产扫描的作用
- nmap的作用
- telnetlib端口扫描
- pexpect登录探测
- paramiko登录探测
- Docker容器扫描
- KVM虚拟机扫描
- snmp网络设备扫描
- SDK调用扫描ESXI资产信息
- Ansible自动化任务
- Ansible的安装与配置
- Python与Ansible的操作
- Ansible adhoc
- Ansible playbook
- 核心类调用
- API 接口的封装
- 方法的改写
- Redis消息存储
- Mongo事件日志
3.项目功能演示
- 资产自动化扫描
三.整体工程设计
1.资产的自动化扫描发现
用
Python
程序扫描发现企业内部的所有资产
(
服务器资产
)
,当资产出现变动时能自动及时的发现并完成资产变更(eg:
服务器
IP
变更、机器集体报废
)
。
2.Ansible的自动化任务执行
用
Ansible
的
ad-hoc
和
playbook
实现批量主机的自动化任务。
四、项目环境搭建
1.项目环境要求
- Python解释器: 3.x
- Django框架: 2.x
- IDE编辑器工具Pycharm: 不限制
- 自动化运维工具Ansible: 2.x
- 关系型数据库MySQL/Mariadb: 5.5.x
- 高性能的key-value非关系型数据库 Redis 软件下载: 5.0.5
- 分布式文件存储数据库 MongoDB 软件下载: 4.2.4
- Git工具与Github代码仓库: 不限制
2.项目目录的配置
- 创建Django项目devops
- 连接并配置远程服务器
[Tools] -> [Deployment]
- 配置本地目录和远程服务器目录的映射(Mapping)
- 上述操作完成, 本地文件修改, 远程服务器文件也同时修改.
五、远程服务器虚拟环境的配置
- 连接远程服务器命令行bash
- 创建虚拟环境并激活虚拟环境
cd /data/www/devops
virtualenv -p /usr/bin/python3 env
source env/bin/active
pip install Django==2.2
- 出现的报错及处理方式
# sqlite版本问题
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is
required (found 3.7.17).
解决方式: 不使用sqlite存储数据, 使用mysql
# devops/settings.py
# 将sqlite数据库存储配置注释
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }
- 远程服务器解释器和目录映射的配置
- 在远程服务器上测试Django项目是否可以成功运行
python manage.py runserver
六、MySQL数据库配置
1.远程用户登录配置
- 管理数据库服务
systemctl start mariadb
systemctl enable mariadb
- 用户授权
- 测试用户授权是否成功
2.Django数据库配置
- 修改配置文件的信息
- 生成数据库表
- 测试数据表是否创建?数据信息是否写入?
连接
mariadb
数据库
配置数据库信息
访问数据库表和数据内容
到这了为止,关于数据库的配置结束。
DevOPS
工程快速入门和引导
- 运维模块: 了解运维的工作、Linux系统的基本操作、数据库基本管理操作、网络知识等。
- 开发模块: 本项目的重点, 掌握Python基础知识、常见数据类型、Django框架的技术模块、DevOPS项目构建模块等。
七、第一个DevOPS工程
1.项目功能
记录
HTTP
访问的