19

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

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzUzNjAxODg4MQ%3D%3D&%3Bmid=2247485401&%3Bidx=1&%3Bsn=050ffa3055779405e41fb2940c1678ce&%3Bchksm=fafded77cd8a64610cfb7eb37ca66a8459584aab48077d16dc8bf76d598ce4109f95fad1ca6d&%3Btoken=1617131563&%3Blang=zh_CN
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

引子

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

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

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

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

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

概述

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

  1. 操作系统预备自动化

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

  2. 配置自动化

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

  3. 监控自动化

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

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

    jenkins是其中的代表。

AJ3Q7zN.png!mobile

Ansible概念

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

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

Ansible原理

Azua22r.png!mobile

通过 《 两个流程链路问题的排查和总结 》这篇文章里用到的一个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协议)向各个主机分发命令,汇总结果。

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

FfIj6z3.png!mobile

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

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

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

运维规范的变现步骤:

Ifui6jr.png!mobile

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK