欢迎来到爱学习爱分享,在这里,你会找到许多有趣的技术 : )

运维自动化工具 Ansible 原理及意义

开发者头条 339℃

引子

坦白讲,如果一个公司写业务逻辑的工程师在用ansible,很可能说明这个公司的基础设施不够完备。这个工具一般是集成在devops工具中,对小白用户不可见的。

但是一般来说一个快速发展的公司,一段时间内的发展和基础设施关系不大,和业务关系大。比如一个业务发展很好的公司,开始是没有什么自动化运维、人工智能,全靠手工操作。业务发展起来了,一个人操作几千个变更,就看你疼不疼。疼的受不了就不得不去做自动化了。

所以公司在用ansible这样的工具,未必是件坏事。反而说明公司要做的事情很多,这种加速devops的事情还排不上。

而对于工程师来说,用太过智能的工具未必是件好事。比如有人习惯用navicat客户端工具做DDL(建表、删表,改表结构这些)、DML(数据增删改)操作。面试的时候sql写不出来。所以很多大公司很喜欢招聘初创公司背景的人,技术反而更全面,对底层技术了解更深。


而这种人在小公司技术夯实了,去大公司之后能从【怎么做】这个思维里跳出来,将重点关注【做什么】。将大公司的布局、战略和解决问题方式学到,整个职业发展都将是不错的。

概述

运维自动化的应用场景主要有:

  1. 操作系统预备自动化

    这个对于业务开发工程师来讲一般是透明的。因为我们拿到的物理机也好、虚拟机也好、容器也好都是已经预装了操作系统和基础软件的。

  2. 配置自动化

    ansible是其中的代表,帮助我们在大量服务器的场景下,快速实现软件部署,软件配置等。降低人工参与度。

  3. 监控自动化

    这个对于业务开发工程师来说很熟悉,像系统与应用监控、日志监控这些。企业对这个一般会投入比例较大,因为上到老板,下到开发、运维、运营都关心这些数据。

  4. 代码持续集成与持续发布自动化

    jenkins是其中的代表。

Ansible概念

ansible是基于ssh协议的开箱即用运维自动化产品,是一个无主无从架构。

怎么来理解这句话呢?简单理解就是不需要启动任何服务就可以用,只要安装了ansible,就可以跟ssh命令那样的使用,脚本和配置的更改立即生效,因为不是服务所以也没有主从和重启的概念。

Ansible原理

通过 《两个流程链路问题的排查和总结》这篇文章里用到的一个ansible命令来看一下各个模块

ansible -i  hosts XX -m shell -a “curl http://XXXX:8080/健康检查接口 –connect-timeout 5”

-i Host Inventory是主机清单, 这个选项指定在哪个文件的哪个host或者host分组范围内执行。兼有白名单的作用,增加了安全性。

-m modules 指定模块,除了这里用的shell还有copy、cron 等命令

-a 指定命令的参数。对于shell命令来说整个脚本内容就是参数。

这条命令会通过connections plugins(主要基于ssh协议)向各个主机分发命令,汇总结果。

一个成功的工具产品要经过生存、生长、生态三个阶段。

ansible也不例外,playbooks和plugins模块让用户可以与开发者共建,对产品不断完善和丰富,活跃了社区。

Ansible类配置自动化工具的意义

在网上可以很容易搜索到的使用方法向来不是我写的文档的重点。我们来看一下配置自动化工具的意义。

运维规范的变现步骤:

回到引子部分,我说过如果一个公司写业务逻辑的工程师在用ansible,很可以说明这个公司的基础设施不够完备。因为根据变现步骤,顶多经历了把需求文档化,整理成脚本做工具化。后面还需要做系统化、自动化和智能化来降级人工成本。所以配置自动化是一个基础,请当语文数学来对待。

转载请注明:爱学习爱分享 » 运维自动化工具 Ansible 原理及意义

喜欢 (0)or分享 (0)