第一节:ansible快速入门

一、Ansible 概述

1.1、Ansible是什么

Ansible是一个批量管理远程主机的自动化工具,
用它可以实现如下功能,极大地提升了运维人员批量管理远程主机的效率
1、配置管理
2、应用程序部署
3、执行一次性批量任务
4、将任务编排起来形成一个playbook,可以多次使用,称之为多节点编排

与其他自动化运维工具对比

1.puppet 配置复杂,适用于大规模系统管理环境
2.ansible 轻量级、易用,ansible默认基于ssh协议,大规模环境基于ssh效率不足,需要搭配例如Ansible Tower一类的解决方案
3.saltstack 一般选择salt会使用C/S结构的模式,salt-master和salt-minion,并行的,大规模批量操作的情况下,会比Ansible速度快一些,底层使用的是zero-MQ消息队列

1.2、为何要使用如ansible这种工具

运维工程师角色

file

以前管理大规模远程主机:需要运维人员自己一台一台连接上机器进行操作,痛点举例
1、一台台连接非常的低效烦人,密码管理等十分繁琐
2、重复操作过多,无法统一管理,哪怕写成脚本,也要一台一台机器去执行
3、重复操作多了,不仅麻烦,还会导致出错率高
等等还有很多问题,总之就是缺少一套可靠的统一管理机制,能够让运维人员非常方便的批量管理多台远程主机

这就是ansible这类自动化运维工具存在的意义,具体特性看下一小节

1.3、Ansible的特点

1、Agentless:不需要再被管理节点上安装客户端,只要有sshd即可
2、幂等性:许多自带模块提供幂等判断机制,这意味着多次执行相同的任务是安全的
比如通过 cron 模块添加定时任务时,如果任务已经存在,那么不会重复添加
3、Serverless:在服务端不需要启动任何服务,只需要执行命令就行
3、Modules in any language:基于模块工作,可以使用任意语言开发ansible模块
4、YAML, not code:使用yaml语言定制playbook进行任务编排,管理复杂任务非常方便
5、SSH by default:默认使用ssh控制各节点
6、Strong multi-tier solution:可实现多级控制
7、Ansible 的开发语言是 Python、便于运维进行二次开发。

举3个例子,快速了解幂等性

1、算术运算时数值加0是幂等的,无论加多少次结果都不会改变,而数值加1是非幂等的,每次加1结果都会改变。
2、再比如执行systemctl stop xxx命令来停止服务,当发现要停止的目标服务已经处于停止状态,它什么也不会做,
所以多次停止的结果仍然是停止,不会改变结果,它是幂等的,
3、而systemctl restart xxx是非幂等的。Ansible的很多 模块在执行时都会先判断目标节点是否要执行任务,
所以,可以放心大胆地让Ansible去执行任务,重复执行某个任务绝大多数时候不会产生任何副作用

幂等性专业解释

幂等性是一个在计算机科学中广泛使用的概念,它的核心思想是:一个幂等操作的连续多次执行,结果和执行一次的结果相同。
换句话说,无论你执行一次还是多次,结果都不会变。

在IT领域中,这个概念特别重要,尤其在分布式系统和网络通信中,因为网络请求可能会出现超时、失效、或者重复请求的情况,
这个时候幂等性判断机制就能确保数据的一致性和操作的有效性。

在Ansible中,幂等性判断机制是其一个核心特性。它可以保证你的任务不论执行多少次,最后的结果都只会被应用一次。
比如,你使用Ansible去用户管理模块创建一个用户,无论你执行多少次该任务,Ansible都只会确保该用户存在,而不会重复创建。
因此,理解幂等性及其在实践中的应用,对于系统管理员来说是相当重要的。而Ansible的这个特性,也是它在自动化部署和配置管理中非常受欢迎的一个原因。

二、Ansible 构成

2.1、组成部分

1.连接插件connection plugins:用于连接主机/被管理端
2.核心模块core modules      :总控, 它负责调用具体的模块来做具体的事情
3.自定义模块custom modules  :根据自己的需求编写具体的模块
4.插件plugins               :完成模块功能的补充,例如Email、loggin
5.任务副本/剧本Play Books   :剧本playbookansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
6.主机清单Host inventor     :定义ansible需要操作的主机信息

强调:
1、ansible是模块化的 它所有的操作都依赖于模块
2、模块与插件的区别:
(1)模块会被上传到被控制主机上,在被控制主机上执行
(2)插件在控制主机上,被 Ansible 调度执行
3、尽量使用 Ansible 自带的模块,而不是 shell 脚本,因为 Ansible 的很多模块提供幂等判断机制

file

2.2、Ansible执行流程

Ansible 执行任务的流程,大致如下:

file

三、Ansible安装与介绍

联系管理员微信tutu19192010,注册账号

上一篇
下一篇
Copyright © 2022 Egon的技术星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术