一.为什么进行自动化运维:
1.运维早期
:
服务器体量小, 部署步骤少、操作简单、对运维人员要求较低
(
掌握基本的
Linux
命令即可
)
。运维人
员都是通过手工执行命令管理硬件、软件资源。运维人员需要执行大量的重复性命令来完成日常的运维工作。
2.互联网行业飞速发展:
服务器体量大、部署步骤多、操作繁琐、对运维人员要求提高
(
至少掌握一门编程语言
)
。
3.自动化运维的必要性:
(
1
)手工运维缺点多。
手工操作易发生操作风险且效率低,运维人力成本变高,体量大
(1000+)
的服务器难以人工管理。
(
2
)业务需求的频繁变更。
业务需要快速响应市场的需求,需求变更频率也越来越快,只有
Devops
持续交付实践
,才
能满足频繁变更的业务需求。
(
3
)自动化运维的技术已经成熟。
云计算、大数据等需求刺激着自动化运维的需求,产生大量优秀的自动化运维开源
工具
(eg:Ansible
、
Docker
等
)
, 也助力着自动化运维的发展。
二.成熟的自动化运维体系:
1.支持混合云的配置管理数据库(
CMDB
)。
CMDB
存储与管理企业
IT
架构中设备的各种配置信息,它与所有服务支持 和服务交付流程都紧密相连,支持这些流程的
运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。
2.
完备的监控和应用性能分析系统。
资源监控(如服务器、磁盘、网络)和性能监控(如中间件、数据库)都是较为基础 的监控,开源工具有Zabbix
、
Nagios
、
OpenFalcon
(国产)。
3.批量运维工具。
开源的批量运维工具有
Ansible
、
SaltStack
、
Puppet
、
Chef
,其中
Ansible
和
SaltStack
纯由
Python 编写,代码质量和社区
活跃程度都很高,推荐使用。
4.日志分析工具。
如何快速地从成百上千台服务中采集日志并分析出问题所在呢?日志采集方面工具有
Sentry +
日志分析有ELK
,两者都是
开源的。
5.
持续集成和版本控制工具
。
持续集成是一种软件实践,团队成员经常集成他们的工作,每次集成都通过自动化的构 建来验证,从而尽早发现集成错
误。持续集成的工具Jenkins+
版本控制是软件
Git
。
6.
漏洞扫描工具。
借助商业的漏洞扫描工具扫描漏洞,保护服务器资源不受外界的攻击。
三.选择python作为自动化运维工具的必要性:
1.大部分的开源运维工具都是由纯Python
编写的,如Celery
、
ansible
、
Paramiko
、
airflow
等,学习Python后可以更加顺畅
地使用这些开源工具提供的
API
,可以阅读这些开源工具的源代码,甚至可以修改源代码以满足个性化的运维需求。
2.Python与其他语言相比,更加优雅、明确和简单