Python项目实战之基于Ansible的云平台自动化运维系统

本文介绍了在云时代背景下,如何利用Python和Ansible构建自动化运维系统。项目涉及资产自动化扫描、Ansible任务执行、Django项目开发、数据库配置、SSH登录模块paramiko的使用,旨在解决运维自动化难点,提升效率。
摘要由CSDN通过智能技术生成

目录

一、项目介绍

二、项目背景

1.互联网快速发展

2.云时代

3.项目准备

1.运维自动化难点和痛点

2.项目技术难点

3.项目功能演示

三.整体工程设计

1.资产的自动化扫描发现

2.Ansible的自动化任务执行

四、项目环境搭建

1.项目环境要求

2.项目目录的配置

五、远程服务器虚拟环境的配置

六、MySQL数据库配置

1.远程用户登录配置

2.Django数据库配置

 七、第一个DevOPS工程

1.项目功能

2.项目开发步骤

3.项目开发(一) 信息采集接口的实现

4.项目开发(二) 信息获取接口的实现

5.Django项目日志管理

6.Django项目邮件告警管理

7.知识点拓展: Ipython

 8.常用快捷操作

八、第二个DevOPS工程

1.Django工程多配置文件

2.Django工程应用与模块加载

3.数据库模型设计

4.资产管理的技术实现

5.资产管理探测流程

6.主机存活探测协议

7.主机存活探测模块和工具

8.Nmap的Python操作接口: python-nmap

9.SSH端口存活扫描

 九、Python的SSH登录模块paramiko


一、项目介绍

本项目通过 KVM 虚拟化搭建 Linux 系统集群,使用 Ansible 实现 Linux 集群下的批量部署与自动化管理,实现Web 形式的自动化运维系统 , 集中批量控制服务器 , 最终实现能支撑 1000 台实例的环境提供管理和自动化任务, 提高运维工程师的工作质量和效率。 项目基于HTTP 实现自动化任务接受和响应接口设计,基于MySQL 用作的关系型数据存取, 基于 Redis 的任务锁机制和消息队列, 基于 MongoDB 的事件日志记录, 最终实现邮件通知功能、敏感数据加密功能、日志事件记录功能。

二、项目背景

1.互联网快速发展

  • 网站用户规模、使用快速上升
  • 要求庞大系统支撑能力
  • 更加快速的运维效率应对突发流量
  • 更加自动化的方式减少人工投入成本
  • 更加可靠的技术手段,保障系统的稳定

2.云时代

  • 腾讯云、阿里云、亚马逊云、青云等云厂商的市场份额不断增加
  • 大部分技术架构设计不再以网络设计、IDC和系统硬件等方面作为重点
  • 运维基础的、繁琐的工作逐步减少
  • 小公司也不再需要一个运维工程师或者系统工程师
结论 : 在这样的时代背景下, 大型互联网公司为了应对市场的快速变化,就需要运维自动化。

3.项目准备

 

 

1.运维自动化难点和痛点

  • 开发人员: 没有系统管理、网络管理等相关运维工作经验,项目设计往往是大打折扣的。
  • 运维人员: 不具备开发能力、没有项目的开发经验或能力
  • 做好一个优秀的运维开发人员DevOPS = 运维能力 + 开发能力
本次项目实战就是用最短的时间、手把手地完成运维开发系统的开发实战。

2.项目技术难点

  • 基本技能
  1. DevOPS构建之路
  2. Python基础语法
  3. Django框架
  • 自动化资产扫描发现
  1. 资产扫描的作用
  2. nmap的作用
  3. telnetlib端口扫描
  4. pexpect登录探测
  5. paramiko登录探测
  6. Docker容器扫描
  7. KVM虚拟机扫描
  8. snmp网络设备扫描
  9. SDK调用扫描ESXI资产信息
  • Ansible自动化任务
  1. Ansible的安装与配置
  2. PythonAnsible的操作
  3. Ansible adhoc
  4. Ansible playbook
  5. 核心类调用
  6. API 接口的封装
  7. 方法的改写
  8. Redis消息存储
  9. 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 访问的
  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值