CMDB和运维自动化
IT运维,指的是对已经搭建好的网络,软件,硬件进行维护.运维领域也是有细分的,有硬件运维和软件运维
- 硬件运维主要包括对基础设施的运维,比如机房的设备,主机的硬盘,内存这些物理设备的维护
- 软件运维主要包括系统运维和应用运维,系统运维主要包括对OS,数据库,中间件的监控和维护,这些系统介于设备和应用之间,应用运维主要是对线上业务系统的运维
我们现在讨论的主要是软件运维的自动化,包括系统运维和应用运维的自动化
自动化运维平台的特性
运维自动化最重要的就是标准化一切
os的选择统一化,同一个项目使用同样的OS系统部署器所需要的各类软件
软件安装标准化,例如JAVA虚拟机,php,nginx,mysql等各类应用需要的软件版本,安装目录,数据存放目录,日志存放目录等
应用包目录同意标准化,即应用命名标准化
启动脚本统一目录和名字,需要变化的部分通过参数传递
配置文件标准化,需要变化的部分通过参数传递
日志输出,日志目录,日志名字标准化
应用生成的数据实现统一的目录存放
主机/虚拟机命名标准化.虚拟机管理使用标准化模板
使用docker比较容易实现软件运行环境的标准化
资产管理系统(CMDB)
CMDB是所有运维工具的数据基础
CMDB包含的功能
用户管理,记录测试,开发,运维人员的用户表
业务线管理,需要记录业务的详情
项目管理,指定此项目用属于哪条业务线,以及项目详情
应用管理,指定此应用的开发人员,属于哪个项目,和代码地址,部署目录,部署集群,依赖的应用,软件等信息
主机管理,包括云主机,物理机,主机属于哪个集群,运行着哪些软件,主机管理员,连接哪些网络设备,云主机的资源池,存储等相关信息
主机变更管理,主机的一些信息变更,例如管理员,所属集群等信息更改,连接的网络变更等
网络设备管理,主要记录网络设备的详细信息,及网络设备连接的上级设备
IP管理,IP属于哪个主机,哪个网段, 是否被占用等
CMDB实现的四种方式
1 Agent实现方式
可以将服务器上面的Agent程序作定时任务,定时的将资产信息提交到API录入数据库
流程图在这
本质
其本质就是在每一台服务器上执行subprocess.getoutput(),将每台服务器的执行结果返回到主机API上,主机API接收到这些数据库后保存到数据库中,最终通过web方式显示给用户
优点:速度快
缺点:需要在每一台服务器上部署Agent程序
2 ssh实现方式(基于paramiko模块)
中控机通过paramiko模块,登录到各个服务器上,执行命令获取各个服务器上面的信息
优点:无Agent
缺点:速度慢
在服务器较少的情况下课应用次方法
mport paramiko # 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='c1.salt.com', port=22, username='root', password='') # 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read() # 关闭连接
ssh.close()
3 saltstack方式
中控机发送命令给服务器执行,服务器将结果放入另一个队列中,中控机将服务信息发送到API进而录入数据库
优点:速度快,开发成本低
缺点:依赖第三方工具
salstack的安装和配置
1.安装和配置
2.授权
1
2
3
4
5
6
|
"""
salt-key -L # 查看已授权和未授权的slave
salt-key -a salve_id # 接受指定id的salve
salt-key -r salve_id # 拒绝指定id的salve
salt-key -d salve_id # 删除指定id的salve
"""
|
3.执行命令
在master服务器上对salve进行远程操作
1
|
salt 'c2.salt.com' cmd.run 'ifconfig'
|
基于API的方式
1
2
3
|
import salt.client
local = salt.client.LocalClient()
result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
|
参考安装:
http://www.cnblogs.com/tim1blog/p/9987313.html
https://www.jianshu.com/p/84de3e012753
- Puppet(ruby语言开发)(了解)
每隔30分钟,通过RPC消息队列将执行的结果返回给用户
CMDB和运维自动化的更多相关文章
- 魅族CMDB运维自动化实践
一.简介 原创:梁鹏 本文是根据魅族系统架构师梁鹏10月20日在msup携手魅族.Flyme.百度云主办的第十三期魅族技术开放日< 魅族CMDB运维自动化实践>演讲中的分享内容整理而成. ...
- DevOps的故事(如何整合开发和运维?)
在一个与我们平行的世界中,有一个软件开发公司.这个公司所做的产品用户量近期增长的十分迅猛,但是令CTO头疼的是公司的两大部门:开发部和运维部近期也是“掐”得厉害.为解决这个问题,CTO决定倒入现在十分 ...
- dba和运维专家们说有丰富的大型分布式系统架构设计经验纯属扯淡
如果,一开始就从事dba和运维的专家们说他们有丰富的大型分布式系统架构设计经验,那纯属扯淡.除非,他们从是从开发专家或者架构师转型而来,那么他们才有资格说自己有丰富的大型分布式系统架构设计经验. 运维 ...
- Ligg.WinOa-000: Windows运维自动化编程实战--前言
本开源项目Ligg.WinOa是一个基于Ligg.EasyWinApp的Windows运维自动化应用.通过Ligg.EasyWinForm生成2个功能界面:管理员工具箱和用户工具箱:通过Lig ...
- 开源运维自动化平台-opendevops
开源运维自动化平台-opendevops 简介 官网 | Github| 在线体验 CODO是一款为用户提供企业多混合云.自动化运维.完全开源的云管理平台. CODO前端基于Vue iview开发. ...
- centos7系统管理和运维实战
centos7系统管理和运维实战 centos7安装配置 yum install -y net-tools >/etc/hostname echo "sqlserver01" ...
- CentOS 下运维自动化 Shell 脚本之 expect
CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与pri ...
- 运维自动化之SALTSTACK简单入门
运维自动化之SaltStack简单入门 饱食终日而无所事事,是颓也,废也.但看昨日,费九牛二虎之力除一BUG便流连于新番之中,不知东方之既黑,实乃颓颓然而荒废矣.故今日来缀一文以忏昨日之悔. Salt ...
- Ansible 运维自动化 ( 配置管理工具 )
背景 出差背景,要搞项目的自动化部署.因为只直接对接生产分发,机器又非常多,这样以往使用的bat只能作为应急方案了,还是得考虑使用专业化的工具来做这个事情! 当下有许多的运维自动化工具( 配置管理 ) ...
随机推荐
- sorl基本原理
索引原理 场景:小时候我们都使用过新华字典,妈妈叫你翻开第38页,找到“坑爹”所在的位置,此时你会怎么查呢?毫无疑问,你的眼睛会从38页的第一个字开始从头至尾地扫描,直到找到“坑爹”二字为止.这种搜索 ...
- 初学者手册-IDEA中的Git
1.Git的更新.提交.还原 IDEA中Git的更新.提交.还原方法 2.设置Git的提交方式为http 3.
- 7503E-M-irf2配置以及bfd配置
IRF2配置 irf domain 10 irf mac-address persistent always irf auto-update enable irf auto-merge enable ...
- Timestamp类型浅析
Oracle针对不同的数据需求,提供了多种类.多层次的数据类型体系.我们在实际应用中,最好可以依据业务数据的实际形态和前端应用的语言.框架特性来确定字段类型的选择. Date类型是我们经常使用的时间类 ...
- Linux 之 inotify+rsync 备份文件系统
一.需求 1.线上有不同的机房,并且每个机房所对公网开放端口不一样. 2.A机房中的a机器是台文件服务器,需要备份到B机房中的b机器,以及C机房中的c机器. 3.并且保持实时同步.只要a上面的文件有改 ...
- django-bower
https://django-bower.readthedocs.io/en/latest/usage.html
- Android APP压力测试实战
环境准备: Android SDK Python 压测实战步骤 1.在手机开发者工具中,将USB调试选上 2.确认手机,电脑成功连接(通过adb devices) 3.安装测试app(adb in ...
- [Z] 将samba共享文件夹映射到linux的目录下
Linux系统下访问远程共享资源 使用mount加载共享目录: -把WinXP机器192.168.16.249上的共享目录test001映射到本地目录/wdl/下. -把Linux机器192.168. ...
- 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法
是时候开始写个前端了,Flask中默认的模板语言是Jinja2 现在我们来一步一步的学习一下 Jinja2 捎带手把 render_template 中留下的疑问解决一下 首先我们要在后端定义几个字符 ...
- leetcode671
class Solution { public: vector<int> V; void postTree(TreeNode* node) { if (node != NULL) { V. ...