自动化运维与python

  • 为什么要自动化运维?
  • 运维早期: 服务器体量小, 部署步骤少、操作简单、对运维人员要求较低(掌握基本的Linux命令即可)。运维人员都是通过手工执行命令管理硬件、软件资源。运维人员需要执行大量的重复性命令来完成日常的运维工作。
  • 互联网行业飞速发展: 服务器体量大、部署步骤多、操作繁琐、对运维人员要求提高(至少掌握一门编程语言)。自动化运维就是将这些原本大量重复性的日常工作自动化,让工具或者系统代替人工来进行具体的运维工作,解放生产力,提高效率,降低运维成本。
  • 自动化运维势在必行,原因有以下几点:
  1. 手工运维缺点多。手工操作易发生操作风险且效率低,运维人力成本变高,体量大(1000+)的服务器难以人工管理。
  2. 业务需求的频繁变更。业务需要快速响应市场的需求,需求变更频率也越来越快,只有Devops持续交付实践,才能满足频繁变更的业务需求。
  3. 自动化运维的技术已经成熟。云计算、大数据等需求刺激着自动化运维的需求,产生大量优秀的自动化运维开源工具(eg:Ansible、Docker等), 也助力着自动化运维的发展。

自动化运维与python

  • 成熟的自动化运维体系
  • 现在成熟的自动化运维平台都具备哪些要素呢?
    ● 支持混合云的配置管理数据库(CMDB)。
    CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相连,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。
    ● 完备的监控和应用性能分析系统。
    资源监控(如服务器、磁盘、网络)和性能监控(如中间件、数据库)都是较为基础的监控,开源工具有Zabbix、Nagios、OpenFalcon(国产)。
    ● 批量运维工具。
    开源的批量运维工具有Ansible、SaltStack、Puppet、Chef,其中Ansible和SaltStack纯由Python编写,代码质量和社区活跃程度都很高,推荐使用。
    ● 日志分析工具。如何快速地从成百上千台服务中采集日志并分析出问题所在呢?
    日志采集方面工具有Sentry +日志分析有ELK,两者都是开源的。
    ● 持续集成和版本控制工具。持续集成是一种软件实践,团队成员经常集成他们的工作,每次集成都通过自动化的构建来验证,从而尽早发现集成错误。持续集成的工具Jenkins+版本控制是软件Git。
    ● 漏洞扫描工具。借助商业的漏洞扫描工具扫描漏洞,保护服务器资源不受外界的攻击。
  • 为什么选择Python来做自动化运维?
    ● 大部分的开源运维工具都是由纯Python编写的,如Celery、ansible、Paramiko、airflow等,学习Python后可以更加顺畅地使用这些开源工具提供的API,可以阅读这些开源工具的源代码,甚至可以修改源代码以满足个性化的运维需求;
    ● Python与其他语言相比,更加优雅、明确和简单。