Python+Django+Ansible Playbook自动化运维项目实战

时间:2020-12-08 06:53:34
  • 1-1 自动化运维开发实战课程导学

  • 2-1 自动化工程总体设计

  • 2-2 章节介绍

  • 2-3 学习环境硬件准备

  • 2-4 Python等基础环境安装

  • 2-5 Mysql、Mongo、Redis安装

  • 2-6 让工程在ubuntu上run起来

  • 2-7 pycharm打开工程

  • 2-8 课程学习方法和建议

  • 3-1 DevOPS工程快速入门引导

  • 3-2 Ipython的基本操作

  • 3-3 python基础知识

  • 3-4 python的迭代器

  • 3-5 python匿名函数+正则表达式

  • 3-6 Python 模块的导入、装饰器 面向对象编程

  • 3-7 Django工程快速入门引导

  • 3-8 第一个DevOPS工程及Django的settings文件配置

  • 3-9 对象模型models

  • 3-10 建立工程模型

  • 3-11 模型迁移

  • 3-12 工程功能设计

  • 3-13 信息采集接口功能实现

  • 3-14 信息提供接口功能实现

  • 3-15 Django日志输出logging模块

  • 3-16 Django学习与邮件发送

  • 3-17 邮件发送功能代码实现

  • 3-18 IMOOCC工程中对于django框架的应用

  • 3-19 IMOOCC工程对于django的框架设计改动

  • 3-20 IMOOCC工程用到的表models定义和字段设计

  • 3-21 IMOOCC工程用到的外键关联

  • 3-22 工程初识和环境搭建--从githup上下载代码和安装模块

  • 4-1 服务端资产扫描、扫描发现

  • 4-2 IMOOCC前台资产管理前台界面功能

  • 4-3 IMOOCC资产管理服务探测的流程

  • 4-4 探测协议和模块

  • 4-5 nmap工具探测使用

  • 4-6 Python-nmap模块的使用

  • 4-7 Python中telnet模块判断ssh服务主机

  • 4-8 通过Python存活扫描的列表

  • 4-9 主机登录探测

  • 4-10 pexpect和paramiko模块

  • 4-11 场景脚步模拟ssh用户密码登录和会话控制

  • 4-12 paramiko模块ssh用户密码登录

  • 4-13 通过操作系统获取主机资产信息

  • 4-14 主机资产信息的重要性和探测对象

  • 4-15 主机资产(系统主机名、系统版本)获取方式

  • 4-16 主机资产(MAC地址信息获取)

  • 4-17 主机资产(机器型号、sn序列号)获取

  • 4-18 yaml工程的配置文件读取

  • 4-19 程序代码逻辑梳理

  • 4-20 敏感数据库的加密解密-AES

  • 4-21 探测资产信息获取执行掩饰

  • 4-22 逻辑图示探测资产信息

  • 5-1 章节内容介绍及规划

  • 5-2 网络设备snmp资产信息获取

  • 5-3 网络设备snmp客户端

  • 5-4 掩饰pysnmp模块调用执行

  • 5-5 工程对于网络设备扫描代码梳理

  • 5-6 工程对于网络设备扫描代码知识点总结

  • 5-7 服务器资产信息扫描归类

  • 5-8 服务器资产信息扫描归类的逻辑实现

  • 5-9 Docker容器扫描

  • 5-10 Docker服务安装及测试镜像启动

  • 5-11 Docker扫描关键信息获取.mov音频

  • 5-12 Docker登录扫描关键信息代码的逻辑

  • 5-13 Docker登录扫描关键信息代码执行掩饰

  • 5-14 kvm物理机资产探测扫描-kvm虚拟机环境安装

  • 5-15 kvm物理机资产探测扫描-通过kvm宿主机关联虚拟机的方式

  • 5-16 ESX物理机资产探测扫描-利用Vmware提供的sdk探测ESX

  • 5-17 (资产探测、扫描发现进阶)章节知识回顾

  • 6-1 Ansible自动化任务执行的意义

  • 6-2 Ansible的介绍和安装

  • 6-3 Ansible主要配置文件介绍

  • 6-4 Ansible.cfg的常用配置项介绍

  • 6-5 hosts主机资产清单配置方式

  • 6-6 实现ssh密码登录执行命令

  • 6-7 实现ssh密钥登录执行命令

  • 6-8 ad-hoc模式概念和命令行执行

  • 6-9 ad-hoc常用模块介绍

  • 6-10 ad-hoc常用模块场景演练

  • 6-11 ad-hoc系统信息获取、服务安装、服务管理

  • 6-12 ad-hoc常用模块场景演练-代码部署

  • 6-13 playbook的组成及其优劣

  • 6-14 playbook命令执行方式和执行选项

  • 6-15 playbook基本场景使用

  • 6-16 playbook剧本中的变量自定义方式

  • 6-17 playbook剧本中变量定义方式

  • 6-18 playbook基本语句之条件判断

  • 6-19 playbook基本语句之循环语句讲解演示

  • 6-20 playbook基本语句之条件结合循环语句的使用场景

  • 6-21 playbook异常处理

  • 6-22 Ansible自动化任务执行tag标签任务控制

  • 6-23 剧本中的include用户介绍

  • 6-24 官方所建议的roted剧本目录结构

  • 6-25 roles场景演练——剧本结构梳理

  • 6-26 roles场景演练执行

  • 6-27 场景演练注意问题及效果确认

  • 7-1 章节内容介绍

  • 7-2 Ansible模块中的核心类介绍

  • 7-3 InventoryManager调用

  • 7-4 InventoryManager+VariableManager常用方法使用

  • 7-5 ad-hoc任务执行

  • 7-6 playbook剧本的任务执行

  • 7-7 CallbackBase类方法改写

  • 7-8 playbook模式下的CallbackBase类方法改写

  • 7-9 Ansible模块核心类总结

  • 7-10 基于Ansible+Django的自动化任务接口设计

  • 7-11 utils层核心任务类的封装代码实现

  • 7-12 utils层核心代码执行演示及调试方法介绍

  • 7-13 view视图层基础场景演示

  • 7-14 关于POST方法和客户端浏览器提交方式

  • 7-15 json数据格式和内容及数据处理

  • 7-16 工程接口设计及URL路由

  • 7-17 工程view视图层代码逻辑实现及自动化接口执行演示

  • 7-18 自动化工程事件日志及状态记录

  • 7-19 pymongo执行基础的CURD操作

  • 7-20 关于事件日志的记录

  • 7-21 事件日志的记录代码部分讲解

  • 7-22 事件日志的记录代码执行演示

  • 7-23 任务执行锁及基本的redis操作

  • 7-24 工程中的任务执行锁代码梳理和执行演示

  • 8-1 课程内容总结

  • 8-2 尾声 

1-1 自动化运维开发实战课程导学

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

2-1 自动化工程总体设计

2.1.1 自动化扫描发现;

2.1.2 自动化任务执行;

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

2-2 章节介绍

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

2-3 学习环境硬件准备

2-4 Python等基础环境安装

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

技术手记:https://www.imooc.com/t/1352822#Article

Python+Django+Ansible Playbook自动化运维项目实战

2-5 Mysql、Mongo、Redis安装

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

  • apt-get install mysql-server -y
  • apt-get install redis-server -y
  • apt-get install mongodb -y

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

2-6 让工程在ubuntu上run起来

Python+Django+Ansible Playbook自动化运维项目实战

2-7 pycharm打开工程

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

工程的依赖包: 

Django==1.8.2
ansible==2.4.1.0
appnope==0.1.0
asn1crypto==0.23.0
backports.shutil-get-terminal-size==1.0.0
bcrypt==3.1.4
certifi==2017.7.27.1
cffi==1.11.2
chardet==3.0.4
cryptography==2.1.3
decorator==4.1.2
diff-match-patch==20121119
django-crispy-forms==1.7.0
django-crontab==0.7.1
django-formtools==2.1
django-import-export==0.5.1
enum34==1.1.6
et-xmlfile==1.0.1
future==0.16.0
httplib2==0.9.2
idna==2.6
ipaddress==1.0.18
ipython==5.5.0
ipython-genutils==0.2.0
jdcal==1.3
jieba==0.39
Jinja2==2.10
ldap3==2.4
MarkupSafe==1.0
MySQL-python==1.2.5
odfpy==1.3.5
openpyxl==2.4.9
paramiko==2.4.0
pathlib2==2.3.0
pexpect==4.2.1
pickleshare==0.7.4
ply==3.10
prompt-toolkit==1.0.15
ptyprocess==0.5.2
pyasn1==0.3.7
pycparser==2.18
pycrypto==2.6.1
pycryptodome==3.4.7
Pygments==2.2.0
pymongo==3.5.1
PyNaCl==1.2.0
pysmi==0.1.3
pysnmp==4.3.9
python-nmap==0.6.1
pytz==2017.3
pyvmomi==6.5.0.2017.5.post1
PyYAML==3.12
redis==2.10.6
requests==2.18.4
scandir==1.6
simplegeneric==0.8.1
simplejson==3.13.2
six==1.11.0
tablib==0.12.1
traitlets==4.3.2
unicodecsv==0.14.1
urllib3==1.22
wcwidth==0.1.7
Whoosh==2.7.4
xadmin==0.6.1
xlrd==1.1.0
xlwt==1.3.0 

2-8 课程学习方法和建议

Python+Django+Ansible Playbook自动化运维项目实战

3-1 DevOPS工程快速入门引导

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-2 Ipython的基本操作

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-3 python基础知识

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-4 python的迭代器

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-5 python匿名函数+正则表达式

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

 

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-6 Python 模块的导入、装饰器 面向对象编程

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-7 Django工程快速入门引导

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-8 第一个DevOPS工程及Django的settings文件配置

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-9 对象模型models

Python+Django+Ansible Playbook自动化运维项目实战

3-10 建立工程模型

Python+Django+Ansible Playbook自动化运维项目实战

3-11 模型迁移

  • python manage.py makemigrations
  • python manage.py migrate
  • 字符编码shebang设置_*_ coding:utf8 _*_

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-12 工程功能设计

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-13 信息采集接口功能实现

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-14 信息提供接口功能实现

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-15 Django日志输出logging模块

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-16 Django学习与邮件发送

Django的官方文档:https://docs.djangoproject.com/zh-hans/2.1/

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-17 邮件发送功能代码实现 mp4

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Django发送邮件:https://docs.djangoproject.com/zh-hans/2.1/topics/email/

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-18 IMOOCC工程中对于django框架的应用

Python+Django+Ansible Playbook自动化运维项目实战

3-19 IMOOCC工程对于django的框架设计改动

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-20 IMOOCC工程用到的表models定义和字段设计

Python+Django+Ansible Playbook自动化运维项目实战

scanhosts/models.py;

# -*- coding: utf-8 -*-
from django.db import models

# Create your models here.

# 扫描后资产设备基础信息初表
class HostLoginifo(models.Model):
    TYPE_CHIOCE = (
        ('0', 'kvm'),
        ('1', 'docker'),
        ('2', 'vmx'),
    )
    ip = models.CharField(max_length=64,null=False,verbose_name=u"主机IP信息")
    ssh_port = models.CharField(max_length=32,null=True,verbose_name=u"ssh登录的端口")
    ssh_user = models.CharField(max_length=32,null=True,verbose_name=u"ssh登录的用户")
    ssh_passwd = models.CharField(max_length=64,null=True,verbose_name=u"ssh登录的用户",default="")
    ssh_rsa = models.CharField(max_length=64,null=True,verbose_name=u"登录使用的私钥",default="")
    rsa_pass = models.CharField(max_length=64,null=True,verbose_name=u"私钥的秘药",default="")
    system_ver = models.CharField(max_length=256,null=True,verbose_name=u"操作系统版本",default="")
    hostname = models.CharField(max_length=256,null=True,verbose_name=u"操作系统主机名",default="")
    ssh_status = models.IntegerField(verbose_name=u"0-登录失败,1-登录成功",default=0)
    ssh_type = models.IntegerField(verbose_name=u"1-rsa登录,2-dsa登录,3-普通用户rsa登录,4-docker成功,5-docker无法登录",default=0)
    mac_address = models.CharField(max_length=512,verbose_name=u"mac地址列表",default="")
    sn = models.CharField(max_length=256,verbose_name=u"SN-主机的唯一标示",default="")
    mathine_type = models.CharField(max_length=256,verbose_name=u"机器的类型 1=物理服务器,2=虚拟资产,3=网络设备 0=其他类型(未知)",default="")
    sn_key = models.CharField(max_length=256,verbose_name=u"唯一设备ID",default="")
    host_type = models.CharField(max_length=256,verbose_name=u"虚拟机上宿主机的类型",default="",null=True)
    class Meta:
        verbose_name = u'初始化扫描信息表'
        verbose_name_plural = verbose_name
        db_table = "hostloginifo"

apps/detail/models.py;

# -*- coding:utf-8 -*-
from django.db import models
import django.utils.timezone as timezone


# 用户登录信息表(服务器、虚拟机)
class ConnectionInfo(models.Model):
    # 用户连接相关信息
    ssh_username = models.CharField(max_length=10, default='', verbose_name=u'ssh用户名', null=True)
    ssh_userpasswd = models.CharField(max_length=40, default='', verbose_name=u'ssh用户密码', null=True)
    ssh_hostip = models.CharField(max_length=40, default='', verbose_name=u'ssh登录的ip', null=True)
    ssh_host_port = models.CharField(max_length=10, default='', verbose_name=u'ssh登录的端口', null=True)
    ssh_rsa = models.CharField(max_length=64, default='', verbose_name=u'ssh私钥')
    rsa_pass = models.CharField(max_length=64, default='', verbose_name=u'私钥的密钥')
    # 0-登录失败,1-登录成功
    ssh_status = models.IntegerField(default=0, verbose_name=u'用户连接状态,0-登录失败,1-登录成功')
    # 1-rsa登录,2-dsa登录,3-普通用户_rsa登录,4-docker成功,5-docker无法登录
    ssh_type = models.IntegerField(default=0, verbose_name=u'用户连接类型, 1-rsa登录,2-dsa登录,'
                                                           u'3-ssh_rsa登录,4-docker成功,5-docker无法登录')
    # 唯一对象标示
    sn_key = models.CharField(max_length=256, verbose_name=u"唯一设备ID", default="")

    class Meta:
        verbose_name = u'用户登录信息表'
        verbose_name_plural = verbose_name
        db_table = "connectioninfo"


# 用户登录信息表(交换机、网络设备)
class NetConnectionInfo(models.Model):
    tel_username = models.CharField(max_length=10, default='', verbose_name=u'用户名', null=True)
    tel_userpasswd = models.CharField(max_length=40, default='', verbose_name=u'设备用户密码', null=True)
    tel_enpasswd = models.CharField(max_length=40, default='', verbose_name=u'设备超级用户密码', null=True)
    tel_host_port = models.CharField(max_length=10, default='', verbose_name=u'设备登录的端口', null=True)
    tel_hostip = models.CharField(max_length=40, default='', verbose_name=u'设备登录的ip', null=True)

    # 0-登录失败,1-登录成功
    tel_status = models.IntegerField(default=0, verbose_name=u'用户连接状态,0-登录失败,1-登录成功')
    tel_type = models.IntegerField(default=0, verbose_name=u'用户连接类型, 1-普通用户可登录,2-超级用户可登录')
    # 唯一对象标示
    sn_key = models.CharField(max_length=256, verbose_name=u"唯一设备ID", default="")

    dev_info = models.ForeignKey('NetWorkInfo')

    class Meta:
        verbose_name = u'网络设备用户登录信息'
        verbose_name_plural = verbose_name
        db_table = "netconnectioninfo"


# 机柜的信息
class CabinetInfo(models.Model):
    cab_name = models.CharField(max_length=10, verbose_name=u'机柜编号')
    # 1-10分别代表1~10层
    cab_lever = models.CharField(max_length=2, verbose_name=u'机器U数,1-10分别代表1~10层')

    class Meta:
        verbose_name = u'机柜信息表'
        verbose_name_plural = verbose_name
        db_table = "cabinetinfo"


# 物理服务器信息
class PhysicalServerInfo(models.Model):
    # server_name = models.CharField(max_length=15, verbose_name=u'服务器名')
    server_ip = models.CharField(max_length=40, verbose_name=u'服务器IP')
    # 机器的类型 dell or other?
    machine_brand = models.CharField(max_length=60, default='--', verbose_name=u'服务器品牌')
    # 机器的类型
    # machine_type = models.IntegerField(default=0, verbose_name=u'服务器,0-物理服务器,1-虚拟服务器,2-')
    system_ver = models.CharField(max_length=30, default='', verbose_name=u'操作系统版本')
    sys_hostname = models.CharField(max_length=15, verbose_name=u'操作系统主机名')
    mac = models.CharField(max_length=512, default='', verbose_name=u'MAC地址')
    sn = models.CharField(max_length=256, verbose_name=u'SN-主机的唯一标识', default='')
    vir_type = models.CharField(max_length=2, verbose_name=u'宿主机类型', default='')
    # 物理服务器关联的机柜
    ser_cabin = models.ForeignKey('CabinetInfo')
    # 用户登录系统信息
    conn_phy = models.ForeignKey('ConnectionInfo')

    class Meta:
        verbose_name = u'物理服务器信息表'
        verbose_name_plural = verbose_name
        db_table = "physicalserverinfo"


# 虚拟设备信息
class VirtualServerInfo(models.Model):
    # server_name = models.CharField(max_length=15, verbose_name=u'服务器名')
    server_ip = models.CharField(max_length=40, verbose_name=u'服务器IP')
    # 机器的类型 0=kvm,2=虚拟资产,3=网络设备 0=其他类型(未知)
    server_type = models.CharField(max_length=80, default='', verbose_name=u'服务器类型:kvm,Vmware,Docker,others')
    system_ver = models.CharField(max_length=30, default='', verbose_name=u'操作系统版本')
    sys_hostname = models.CharField(max_length=15, verbose_name=u'操作系统主机名')
    mac = models.CharField(max_length=512, default='', verbose_name=u'MAC地址')
    sn = models.CharField(max_length=256, verbose_name=u'SN-主机的唯一标识', default='')

    # 虚拟设备关联的物理服务器
    vir_phy = models.ForeignKey('PhysicalServerInfo')
    # 用户登录系统信息
    conn_vir = models.ForeignKey('ConnectionInfo')

    class Meta:
        verbose_name = u'虚拟设备表'
        verbose_name_plural = verbose_name
        db_table = "virtualserverinfo"


# 网络设备表
class NetWorkInfo(models.Model):
    host_ip = models.CharField(max_length=40, verbose_name=u'网络设备ip')
    host_name = models.CharField(max_length=10, verbose_name=u'网络设备名')
    sn = models.CharField(max_length=256, verbose_name=u"SN-设备的唯一标识", default="")

    # 网络设备所在的机柜
    net_cab = models.ForeignKey('CabinetInfo')

    class Meta:
        verbose_name = u'网络设备表'
        verbose_name_plural = verbose_name
        db_table = "networkinfo"


class OtherMachineInfo(models.Model):
    ip = models.CharField(max_length=40, verbose_name=u'设备ip')
    sn_key = models.CharField(max_length=256, verbose_name=u'设备的唯一标识')
    machine_name = models.CharField(max_length=20, verbose_name=u'设备名称')
    remark = models.TextField(default='', verbose_name=u'备注')
    reson_str = models.CharField(max_length=128, verbose_name=u"归纳原因", default='')
    # 关联的机柜
    oth_cab = models.ForeignKey('CabinetInfo')

    class Meta:
        verbose_name = u'其它设备表'
        verbose_name_plural = verbose_name
        db_table = 'othermachineinfo'


class StatisticsRecord(models.Model):
    datatime = models.DateTimeField(verbose_name=u"更新时间", default=timezone.now().strftime('%Y-%m-%d'))
    all_count = models.IntegerField(verbose_name=u"所有设备数量", default=0)
    pyh_count = models.IntegerField(verbose_name=u"物理设备数量", default=0)
    net_count = models.IntegerField(verbose_name=u"网络设备数量", default=0)
    other_count = models.IntegerField(verbose_name=u"其他设备数量", default=0)
    kvm_count = models.IntegerField(verbose_name=u"KVM设备数量", default=0)
    docker_count = models.IntegerField(verbose_name=u"Docker设备数量", default=0)
    vmx_count = models.IntegerField(verbose_name=u"VMX设备数量", default=0)

    class Meta:
        verbose_name = u'扫描后的汇总硬件统计信息'
        verbose_name_plural = verbose_name
        db_table = 'statisticsrecord'

3-21 IMOOCC工程用到的外键关联

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

3-22 工程初识和环境搭建--从githup上下载代码和安装模块

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

IMOOCC的工程代码地址:https://github.com/iopsgroup/imoocc

  • git clone https://github.com/iopsgroup/imoocc
  • git pull  xxx
  • git push xxx
  • pip install -r requirements.txt

工程模块的安装;

4-1 服务端资产扫描、扫描发现

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

4-2 IMOOCC前台资产管理前台界面功能

4-3 IMOOCC资产管理服务探测的流程

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

4-4 探测协议和模块

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

4-5 nmap工具探测使用

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

4-6 Python-nmap模块的使用

Python+Django+Ansible Playbook自动化运维项目实战

4-7 Python中telnet模块判断ssh服务主机

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战

4-8 通过Python存活扫描的列表

Python+Django+Ansible Playbook自动化运维项目实战

 

4-9 主机登录探测

4-10 pexpect和paramiko模块

4-11 场景脚步模拟ssh用户密码登录和会话控制

4-12 paramiko模块ssh用户密码登录

4-13 通过操作系统获取主机资产信息

4-14 主机资产信息的重要性和探测对象

4-15 主机资产(系统主机名、系统版本)获取方式

4-16 主机资产(MAC地址信息获取)

4-17 主机资产(机器型号、sn序列号)获取

4-18 yaml工程的配置文件读取

4-19 程序代码逻辑梳理

4-20 敏感数据库的加密解密-AES

4-21 探测资产信息获取执行掩饰

4-22 逻辑图示探测资产信息

5-1 章节内容介绍及规划

5-2 网络设备snmp资产信息获取

5-3 网络设备snmp客户端

5-4 掩饰pysnmp模块调用执行

5-5 工程对于网络设备扫描代码梳理

5-6 工程对于网络设备扫描代码知识点总结

5-7 服务器资产信息扫描归类

5-8 服务器资产信息扫描归类的逻辑实现

5-9 Docker容器扫描

5-10 Docker服务安装及测试镜像启动

5-11 Docker扫描关键信息获取.mov音频

5-12 Docker登录扫描关键信息代码的逻辑

5-13 Docker登录扫描关键信息代码执行掩饰

5-14 kvm物理机资产探测扫描-kvm虚拟机环境安装

5-15 kvm物理机资产探测扫描-通过kvm宿主机关联虚拟机的方式

5-16 ESX物理机资产探测扫描-利用Vmware提供的sdk探测ESX

5-17 (资产探测、扫描发现进阶)章节知识回顾

6-1 Ansible自动化任务执行的意义

6-2 Ansible的介绍和安装

6-3 Ansible主要配置文件介绍

6-4 Ansible.cfg的常用配置项介绍

6-5 hosts主机资产清单配置方式

6-6 实现ssh密码登录执行命令

6-7 实现ssh密钥登录执行命令

6-8 ad-hoc模式概念和命令行执行

6-9 ad-hoc常用模块介绍

6-10 ad-hoc常用模块场景演练

6-11 ad-hoc系统信息获取、服务安装、服务管理

6-12 ad-hoc常用模块场景演练-代码部署

6-13 playbook的组成及其优劣

6-14 playbook命令执行方式和执行选项

6-15 playbook基本场景使用

6-16 playbook剧本中的变量自定义方式

6-17 playbook剧本中变量定义方式

6-18 playbook基本语句之条件判断

6-19 playbook基本语句之循环语句讲解演示

6-20 playbook基本语句之条件结合循环语句的使用场景

6-21 playbook异常处理

6-22 Ansible自动化任务执行tag标签任务控制

6-23 剧本中的include用户介绍

6-24 官方所建议的roted剧本目录结构

6-25 roles场景演练——剧本结构梳理

6-26 roles场景演练执行

6-27 场景演练注意问题及效果确认

7-1 章节内容介绍

7-2 Ansible模块中的核心类介绍

7-3 InventoryManager调用

7-4 InventoryManager+VariableManager常用方法使用

7-5 ad-hoc任务执行

7-6 playbook剧本的任务执行

7-7 CallbackBase类方法改写

7-8 playbook模式下的CallbackBase类方法改写

7-9 Ansible模块核心类总结

7-10 基于Ansible+Django的自动化任务接口设计

7-11 utils层核心任务类的封装代码实现

7-12 utils层核心代码执行演示及调试方法介绍

7-13 view视图层基础场景演示

7-14 关于POST方法和客户端浏览器提交方式

7-15 json数据格式和内容及数据处理

7-16 工程接口设计及URL路由

7-17 工程view视图层代码逻辑实现及自动化接口执行演示

7-18 自动化工程事件日志及状态记录

7-19 pymongo执行基础的CURD操作

7-20 关于事件日志的记录

7-21 事件日志的记录代码部分讲解

7-22 事件日志的记录代码执行演示

7-23 任务执行锁及基本的redis操作

7-24 工程中的任务执行锁代码梳理和执行演示

8-1 课程内容总结

8-2 尾声