自动化运维平台让运维简单

Posted DevOps

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化运维平台让运维简单相关的知识,希望对你有一定的参考价值。


简介

Adminset基于DevOps理念开发,以整合全部运维场景为己任。Adminset是一个真正的基于运维思维而开发的全自动化运维平台。

开发环境

centos 7.2(1511) django 1.9.8 python 2.7

功能介绍

功能1:

清爽的运维导航界面,让收藏夹彻底下岗。 

功能2:

你还在手工录入资产信息?快用Adminset全自动化的CMDB模块,agent定时自动上报主机硬件信息,省时省力。 

【自动化运维平台】让运维简单

功能3:

分布式异步任务调度中心,分布式的,异步的crontab,没错,让crontab去见鬼吧,真不知道这么多年是怎么熬过来的。任务周期随意定义,任务结果一目了然,任务还能设置过期时间。 

【自动化运维平台】让运维简单

功能4:

ansible WEB界面,自动从CMDB调用主机信息,再也不用手工维护ansible hosts文件啦,playbook role界面安装,还可以直接执行命令。 

【自动化运维平台】让运维简单

功能5:

自动发现的智能监控有木有? agent上报信息后自动关联监控,无需任何手工配置。SNMP什么鬼?

【自动化运维平台】让运维简单

功能6:

基于URL的权限管理,权限可以细化到每个页面。 

【自动化运维平台】让运维简单

使用说明

#主机名

    adminset依赖主机名,所以被控机器、客户机,都需要设置主机名,主机名唯一,并且可以

    被解析。

#install

    安装需要使用yum源请保证可用,目前不支持离线安装。


    服务器安装:

        git clone https://github.com/guohongze/adminset.git

        执行安装脚本

        adminset/install/server_install.sh

        安装过程需要输入管理员数据库等交互信息

    客户端安装

        说明:为保证注册IP是管理IP(后续会被ansible等调用),客户端的IP抓取目前使用主机名解析,否则报错。 如:主机名为cn-bj-web01 请在/etc/hosts中加入相应的解析 192.168.x.x cn-bj-web01,这样再执行adminset_agent.py 可以保证正常运行。 centos7不进行解析也可获取主机IP.

        step1:安装依赖

        yum install -y smartmontools dmidecode python-pip python-devel python

        step2:执行agent

        拷贝client/adminset_agent.py 到客户机上并执行:

        python adminset_agent.py

        后台运行请参考:

        nohup adminset_aent.py &

        agent默认每1800秒上传一次资产和硬件信息,可以在adminset_agent.py中自定义

    访问:

        http://your_server_ip

        使用自己在安装过程中创建的super admin用户名密码


#程序目录

    安装脚本会将文件安装在/var/opt/adminset

    main为程序代码

    config 配置

    pid pid文件

    logs 日志

    data 常用数据


#站点导航用法

    在站点管理中输入常用的运维工具系统后会自动出现在站点导航界面。


#cmdb用法

    client/adminset_agent.py 开户后会自动上报主机相关信息到CMDB

    获取主机信息

    http://your_server_ip/cmdb/get/host/?token=your_token&name=host_name

    获取组信息

    http://your_server_ip/cmdb/get/group/?token=your_token&name=group_name

    http://your_server_ip/cmdb/get/group/?token=your_token&name=all


# 定时任务用法

    首先新建interval 或crontab

    新建任务填写名字

    选择间隔或crontab

    在Keyword arguments(任务指令):处的写法是json格式:

        执行命令<br>

        {"host":"c1", name:"service tomcat restart"}

        执行脚本<br>

        {"host":"c1", name:"reboot.sh"}

    拉到最下边Task (registered)

    setup.tasks.command是直接向目标机器发送命令

    setup.tasks.scripts是在目标机器上执行一个你已经上传到服务器中的脚本,默认路径/var/opt/adminset/data/scripts

    注意:已经运行任务以后,再去修改任务不会立即生效,需要重启beat组件,在任务编排的后台管理中可以重启。

          这是由于celery的BUG导致,会在社区发布稳定版本以后修复。


#ansible用法

    配置免密钥登陆客机(ansible和shell管理客户机需要此配置)

    在服务器上执行

    ssh-keygen

    ssh-copy-id -i /root/.ssh/id_rsa.pub {客户机IP}

    输入客户机密码后认证成功可以ssh免密登入


    CMDB自动上报主机以后,在ansible页面执行 同步到ansible将主机信息写入ansible的hosts文件

    然后将playbook 或是role脚本上传到/var/opt/adminset/data/playbook 或/var/opt/adminset/data/roles


#shell用法

    CMDB自动上报主机以后,shell界面可以直接调用主机。

    然后将常用脚本上传到/var/opt/adminset/data/scripts 中shell脚本栏将会自动发现脚本。


#监控平台用法

    当adminset_agent.py自动上报信息到,监控会自动发线并配置,无需干预.

    当监控页面打开时,前端JS每10秒会异步抓取监控数据

    agent默认每60秒上传一次监控数据,可以在adminset_agent.py中自定义


#权限管理

    1、新建权限如:

    名字:资产管理

    URL:/cmdb/

    2、新建角色:

    名字:资产管理员

    可选择权限:资产管理

    3、新建用户

    在角色一栏选择:资产管理员



#组件启动管理

    service adminset {start|stop|restart} # gunicorn管理程序

    service nginx {start|stop|restart}    # web server

    service redis {start|stop|restart}    # 缓存和任务列表

    service mariadb {start|stop|restart}  # 数据库,账号资产等信息

    service celery {start|stop|restart}   # 异步任务主程序

    service beat {start|stop|restart}     # 任务调用

    service mongod {start|stop|restart}   # 监控数据库


#升级与更新

    强烈建设在升级或更新adminset之前先备份数据库,并在测试环境验证通过,因为adminset在快速的发展过程中,每版本功能与结构变化较大。

    1)小版本更新:

    如v0.3.6更新到v0.3.7只需下载相应版本的代码到本地然后执行:

    adminset/install/update.sh

    2)大版本更新:

    如v0.3.0更新到v0.4.0

    adminset/install/server_install.sh

    如果原在数据库本机上未设置密码则在do you want to install new mysql/mongodb时选择yes可覆盖安装。

    如果已设置密码或是独立服务器可以选择no,或者在安装完成后手动修改/var/opt/adminset/main/adminset.conf文件中的相应信息。

    3)二次开发

    rsync.sh脚本只做增量,rsync参数不带--delete选项,不会在生产环境删除代码中已删除的条目,不更新组件配置文件,不会生成新的ORM数据库条目。

    update.sh脚本带--delete选项,同步代码,重新发布各组件的配置文件,并重新生成ORM数据文件(makemigrations migrate)。


# 安全

    强烈建议不要将程序启动在有公网可以直接访问的设备上,如果需要请使用VPN。

    建议生产环境中使用https配置服务器<br>

    由于开发方使,我在django的settings中开启了DEBUG,在生产中需要关闭并指定自己的域名。 


下载地址

$ git clone https://github.com/guohongze/adminset





欢迎关注运维自研堂订阅号,运维自研堂是一个技术分享平台,主要是运维自动化开发:linux、python、django、saltstack、tornado、bootstrap、redis、golang、docker、etcd等经验分享。






牛人并不可怕,可怕的是牛人比我们还努力!



以上是关于自动化运维平台让运维简单的主要内容,如果未能解决你的问题,请参考以下文章

阿里云田涛涛:高效智能的云,CloudOps让运维更简单

开源自动化运维平台 BigOps 1.0.0 发布

别让运维太忙,一文详解 Ansible 的自动化运维

自动化运维界的苹果之ITGo自动化运维管理平台

「运维帮出品」开源自动化运维平台BigOps 1.0.0发布

老司机:如何让运维操作更轻松高效