python+django+ansible运维自动化项目

时间:2024-02-15 14:52:30

1.  环境准备

    操作系统centos6.5

    python版本2.7

    django1.8.2

    ansible2.4.1

    mysql

    redis

    mongodb

2.  升级默认的python版本2.6.6到2.7,安装Django1.8.2

    yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel  这一步不能忘记

查看python的版本
#python -V
Python 2.6.6

1.下载Python-2.7.6
#wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz

根据官方资源,可以下载最新版本

2.解压
#tar  vxf Python-2.7.6.tgz

3.更改工作目录
#cd Python-2.7.6

yum install gcc -y 4.安装 ./configure --prefix=/usr/local make && make install 5.查看版本信息 #/usr/local/bin/python2.7 -V 6.建立软连接,使系统默认的 python指向 python2.7 #mv /usr/bin/python /usr/bin/python2.6.6 #ln -s /usr/local/bin/python2.7 /usr/bin/python 7.重新检验Python 版本 #python -V 2.7.6 echo 8.解决系统 Python 软链接指向 Python2.7 版本后,因为yum是不兼容 Python 2.7的,所以yum不能正常工作,我们需要指定 yum 的Python版本 #vim /usr/bin/yum 将文件头部的 #!/usr/bin/python 改成 #!/usr/bin/python2.6.6

安装setuptools
https://pypi.python.org/pypi/setuptools
wget https://files.pythonhosted.org/packages/e9/93/e53fb79dbf5f4a1407feed7a19ea6d0e83765b354754e003cce7aa12b976/setuptools-28.8.0.zip
unzip setuptools-28.8.0.zip
cd setuptools-28.8.0
python ./setup.py install
错误:RuntimeError: Compression requires the (missing) zlib module
解决方法:
重新编译安装python2.7。
cd ..
然后安装pip,先下载然后解压。
 tar -zxvf pip-9.0.1.tar.gz
 
进入pip文件夹,python setup.py install
 

3.  下载项目imooc-master

    https://github.com/iopsgroup/imoocc

    git clone https://github.com/iopsgroup/imoocc.git

    wget https://github.com/iopsgroup/imoocc/archive/master.zip

    执行命令,安装模块。

      pip install -r ./requirements.txt

    报错1:

      ipaddress

    解决方法:

      修改requirements.txt文件,把ipaddress删除掉。

    报错2:

      致命错误:python.h:没有那个文件或目录

    解决方法:

      yum install python-devel -y

    报错3:

You are using pip version 9.0.1, however version 18.1 is available.
You should consider upgrading via the \'pip install --upgrade pip\' command.

    解决方法:

      pip install --upgrade pip

    报错4:

      Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-cqDmz4/MySQL-python/

    解决方法:

      https://www.cnblogs.com/dupengcheng/p/8626512.html

      yum install mysql-devel -y

4.  安装数据库

    1.  安装mysql

        https://www.cnblogs.com/renjidong/p/7047396.html

    2.  安装mongodb

        

    3.  安装redis

        https://www.cnblogs.com/zgaspnet/p/7905407.html

     

5.  将工程run起来

    1.  配置(mysql连接,数据库表结构生成)

        /root/imoocc-master/admin/settings/settings.py

                            修改这个文件的内容:

DATABASES = {
    \'default\': {
        \'ENGINE\': \'django.db.backends.mysql\',
        \'NAME\': \'imoocc\',
        \'USER\': \'imoocc\',
        \'PASSWORD\': \'imoocccom\',
        \'HOST\': \'127.0.0.1\',
        \'PORT\': \'\',
        \'OPTIONS\': {},
        \'init_command\': \'SET storage_engine=INNODB,\'
                        \'SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED, autocommit=1, names "utf8";\',
    }
}

    2.  修改数据库默认的字符集

[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

    3.  登录mysql,创建数据库,创建用户,设置密码。

        create database imoocc;

        grant all on imoocc.* to imoocc@"localhost" identified by \'zhen.com\';              

    4.  在mysql数据库中生成数据

        进入/root/imoocc-master

        python ./manage.py makemigrations

        python ./manage.py migrate

    5.  使用这个用户测试一下,是否登录mysql,是否有数据。

    6.  运行工程

        python ./manage.py runserver 0.0.0.0:8000

    7.  通过浏览器访问http://192.168.1.108:8000

    注意:pycharm修改python版本

       pycharm显示行数

       pycharm跳转到其他模块

6.  工程的目录结构

    1.  apps:  前端代码

    2.  conf:  配置文件

    3.  extra_apps:  第三方模块

    4.  logs:  日志

    5.  scanhosts:  自动化扫描主机

    6.  scripts:  

    7.  static:  静态文件

    8.  taskdo:  自动化执行

7.  DevOPS工程快速入门

    1.  python入门引导

        1.  Ipython

            一个基于Python的交互式解释器

            自动补全,历史记录,获取对象信息

            进入python的目录下,执行下面的命令

            ./pip  install ipython

            ./ipython

            ctrl+r,查找历史命令,查找出的是最近一条信息

            ?  aa  查出定义是数据类型

            ??     aa       查出的内容更多

        2.  python基础知识

            1.  数值

                a=11

            2.  字符串

                a="yangjianbo"

            3.  列表

                a=[1,2,3,4]

            4.  元组

                a=(1,2,3,4)

            5.  集合

            6.  字典

                a={"name":"yangjianbo","age":18}

                a["name"]  查看name的值

                a["age"]  查看age的值

                a.keys()  查看所有键

                a.values()  查看所有值

            7.  布尔

                true

                false

            8.  变量赋值

                赋值符号  =

                变量名必须大小写数字英文,不能以数字开头

            9.  条件语句

                if 条件1:

                  执行语句

                else:

                  执行语句

 

                if 条件1:

                  执行语句

                elif 条件2:

                  执行语句

                else:

                  执行语句

            10.  for循环

                for i in range(0,10):

                  print i               

    2.  python进阶引导

        1.  python的迭代器

            1.  迭代对象

            2.  迭代器

                可以被next()函数调用,这是2.7的使用方法,3.6使用的__next__()调用

            3.  生成器

                本质上还是一个迭代器

                用关键字yield来返回值

    3.  Django入门引导

        1.  在linux安装Django。

            pip install Django==1.8.2

            安装完成后,会在/usr/local/bin目录下,出现一个命令:django-admin

        2.  新建项目容器

            django-admin startproject mydevops

            执行完以后会出现mydevops目录,里面有manage.py和mydevops两个文件和目录。

            manage.py作用:django工程管理文件

            mydevops子目录:

              __init__.py

              settings.py

              urls.py

              wsgi.py

        3.  新建一个应用app

            python ./manage.py startapp scanhosts

            执行完成后,会在项目下创建一个目录scanhosts

            scanhosts目录:

              __init__.py

              admin.py

              migrations  数据库初始化操作

              models.py  数据库模型

              tests.py

              views.py  视图文件,作为web后台

        4.  构建第一个DevOPS工程

            1.  setting文件配置

                1.  第一个注意BASE_DIR

                2.  第二个注意INSTALLED_APPS  

INSTALLED_APPS = (
    \'django_crontab\',
    \'django.contrib.admin\',
    \'django.contrib.auth\',
    \'django.contrib.contenttypes\',
    \'django.contrib.sessions\',
    \'django.contrib.messages\',
    \'django.contrib.staticfiles\',
    \'detail\',
    \'users\',
    \'operations\',
    \'scanhosts\',
    \'taskdo\',
    # \'extra_apps.xadmin\',
    \'crispy_forms\',
)

                3.  Django默认用的sqlite,修改为mysql。

DATABASES = {
    \'default\': {
        \'ENGINE\': \'django.db.backends.mysql\',
        \'NAME\': \'imoocc\',
        \'USER\': \'imoocc\',
        \'PASSWORD\': \'zhen.com\',
        \'HOST\': \'127.0.0.1\',
        \'PORT\': \'\',
        \'OPTIONS\': {},
        \'init_command\': \'SET storage_engine=INNODB,\'
                        \'SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED, autocommit=1, names "utf8";\',
    }
}

            2.  models模型建模

                1.  在你的app目录下的models.py文件中,定义表和字段。

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"

                2.  在数据库上创建库,用户并授权,修改settings.py文件的数据库连接信息。

                3.  model模型

                    1.  CharField  字符串字段

                    2.  IntegerField  整数型字段

                    3.  DateTimeField  时间日期字段

                    4.  ForeignKey  定义多对一关系

                4.  数据迁移

                  

                    注意:model.py文件的使用utf-8的编码,否则会有报错SyntaxError Non-ASCII

                5.  在工程中执行命令:

                    python ./manage.py makemigrations

                    python ./manage.py migrate

                6.  确认数据是否迁移成功

                    1.  登录到数据库中

                    2.  

            3.  项目设计

            4.  项目开发  

            

          

          

    4.  DevOPS构建之路