CMDB 11.06
-
为啥要搞自动化运维?
""" IT运维的分类: 硬件运维: IDC运维 : 搬机器 软件运维: 主要是对公司线上的业务进行管理,比如说:对mysql的备份管理, 对nginx, apache软件的管理以及配置 """# shell 脚本""" 传统运维的缺点: excel表格记录服务器的资产非常的麻烦,所以会导致服务器的记录越来越乱 自动化运维:DevOps CMDB:自动化运维的一个基石项目 """""" 全称:配置管理数据库 作用:收集服务器的各种信息 (包括收集服务器的内存,硬盘,CPU,IP, 主机名等信息) """
1.CMDB的四种实现方式
-
Agent 实现方式
https://i-beta.cnblogs.com/albums/edit/1583522
"""
# 执行流程
1. 在每台服务器上放python脚本, 取得服务器的信息, 通过requests模块发送给API
2. 服务器设置定时任务(crontab), 定时执行一次
3. API起一个Django, 接收到数据以后写入数据库
4. 将数据库的数据通过浏览器展示给用户
适用场景: 服务器很多的公司
优点: 速度快
缺点: 需要为每台服务器部署python脚本
"""
import subprocess
res = subprocess.getoutput('ipconfig')
print(res)
-
ssh实现方式(可以通过parmiko, frbric, ansible等方式链接ssh)

"""
执行流程
第一步: 由管理员录入资产(主机名,SN等信息),通过后台管理,录入数据库
第二步: 中控机从数据库获取主机列表
第三步: 中控机通过paramiko登录到各服务器,执行命令获取服务器的信息, 返回给中控机
第四步: 将其发送给API,再由API写入数据库
适用场景: 服务器不多的公司
优点: 不需要部署agent脚本
缺点: 需要ssh登录, 所以速度慢
"""
import 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='123')
-
saltstack

"""
执行流程:
第一步: 由管理员录入资产(主机名,SN等信息),通过后台管理,录入数据库
第二步: salt-master从数据库获取未采集资产信息的服务器
第三步: salt-master发送命令给salt-minion执行
第四步: salt-master拿到执行结果
第五步: 将结果发送给API
第六步: API将其写入数据库
解释:
salt-master可以理解为主人
salt-minion可以理解为奴隶
适用场景: 之前就在用saltstack的企业
优点: 速度快, 开发成本低
缺点: 依赖于第三方工具
"""
saltstack的安装与配置
-
安装与配置
""" master端: 1. 安装salt-master yum install salt-master 2. 修改配置文件:vim /etc/salt/master interface: 0.0.0.0 # 表示Master的IP 3. 启动 service salt-master start """ """ slave端: 1. 安装salt-minion yum install salt-minion 2. 修改配置文件 vim /etc/salt/minion master: 10.211.55.4 # master的地址 或 master: - 10.211.55.4 - 10.211.55.5 random_master: True id: c2.salt.com # 客户端在salt-master中显示的唯一ID 3. 启动 service salt-minion start """ -
授权
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 -
执行命令
在master服务器上对salve进行远程操作
salt 'c2.salt.com' cmd.run 'ifconfig'基于API的方式
import salt.client local = salt.client.LocalClient() result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
-
Puppet(ruby语言开发)
# 每隔30分钟,通过RPC消息队列将执行的结果返回给用户

浙公网安备 33010602011771号