需求分析
管理的机器数量达到一定的量级,使用 excel 管理非常的不方便,而且在进行发布/监控/堡垒机等管理的时候也会很麻烦。
此时就需要 CMDB 进行资产管理,同时其他的发布/监控/堡垒机可以通过调用 CMDB 对应的 API 进行响应的操作,而不需要每次手工输入 IP 地址等操作。
- 需求1 资产管理
资产管理也就是代替 excel 的功能,根据 excel 的内容,可以初步梳理出需要保存的信息,例如
硬件类型 环境 部署的应用 来源 ip地址(内网、外网) 主机名 内存 CPU 硬盘 内核 操作系统 ecs_name 标识_name 上线状态 区域/城市
上述类型其实也就是我们数据库中需要保存的相应字段,通过 models.py
定义即可。
磁盘表示例1
2
3
4
5
6
7
8
9class Disk(models.Model):
'''磁盘'''
path = models.CharField(max_length=64, blank=True, null=True, verbose_name='挂载路径')
size = models.CharField(max_length=64, blank=True, null=True, verbose_name='磁盘大小/G')
remarks = models.CharField(max_length=64, blank=True, null=True, verbose_name='备注')
def __str__(self):
return self.zise
class Meta:
verbose_name_plural = '磁盘表'
- 需求2 其他系统交互
通常使用 jenkins 发布,使用 zabbix 监控, 使用 jumpserver 做堡垒机。
以 jenkins 发布为例
每次发布对应的主机 IP 地址不需要从 excel 获取,直接通过应用的类别,调用 CMDB 提供的 API 查询得到主机 ip 地址进行发布,其他类似,方便快捷。
逻辑梳理
需要实现数据录入、数据展示、数据更新。
- 数据录入和更新
资产管理系统实现基础的增删改查功能,少量数据可以通过页面录入。
更多的数据通过 client 工具,使用定时任务的方式更新,定时检查所有服务器信息,若有新增和变更则录入,若无则不变更。
变更需要保留日志,可追溯查看变更过程。
客户端工具可以使用 saltstack 或者 ansible 实现,对于公有云可以通过调用提供的 API 查询数据。
所有数据的变更都通过后台管理系统统一接口连接数据库进行数据更新,不开多个口子,保证数据准确和一致。 - 数据展示
所有增删改查都可以通过页面进行操作,所有信息都可以通过页面进行查询得到。
数据变更记录可以追溯查看。
更新数据可以选择通过手动在页面更新,也可以选择定时任务自动更新。