目录
ansible是运维必须掌握的工具,找运维工作几乎都要求会,在学习ansible之前先学会安装,这样边安装边学会效果更好。
我在入门篇的安装软件都是手工安装的,当你看完我所有入门篇的东西,发现很多其实是重复的,手工安装慢效率低下,又容易出错,为了提交效率一般我们推荐自动化部署工具,如ansible(python写的)、saltStack(python写的)、Puppet(ruby写的)等,它们区别是:
我们一般推荐使用python工具,因为火啊,而且我们做运维的,开发也是用python,更有助于我们对python的理解。
一、实验前准备
ansible是自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
通过VMware虚拟机实验熟悉使用ansible
| 主机名 |
IP地址(NAT) |
IP地址(内网) |
描述 |
| vm82 |
ens33:192.168.128.82 |
ens34:192.168.3.82 |
|
| vm821 |
ens33:192.168.128.21 |
ens34:192.168.3.21 |
|
| vm76 |
ens33:192.168.128.76 |
ens34:192.168.3.76 |
|
| 备注: |
|
||
PS:
centos8安装可以看我的《centos8最小化安装》,centos7安装可以看《centos7最小化安装》
centos7和centos8都按上面的教程,关闭了selinux、防火墙、安装第三方源epel源及remi源、安装了基础的软件。
二、ansible介绍
2.1 ansible简介
ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:
- 自动化部署APP;
- 自动化管理配置项;
- 自动化的持续交互;
- 自动化的(AWS)云服务管理;
所有的这几个目标从本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。通俗的说就是批量的在远程服务器上执行命令。当然,最主要的是它是基于 paramiko 开发的。这个paramiko是什么呢?它是一个纯Python实现的ssh协议库。因此fabric和ansible还有一个共同点就是不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。
ansible通过ssh实现配置管理、应用部署、任务执行等功能,因此,需要事先配置ansible端能基于密钥认证的方式联系各被管理节点。
ansible不像saltStack那样是没有agent端的,轻量级,虽然没有saltStack那样强大,但是因为简单方便入门相对简单,还是有不少企业在使用,还有现在python的流行也是不少运维学习ansible的原因
2.2 ansible工作机制
ansible基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
下面是ansible的架构图:连接其他主机默认使用ssh协议


由上面的图可以看到 Ansible 的组成由 以下部分组成:
- 核心:ansible
- 核心模块(Core Modules):这些都是ansible自带的模块
- 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
- 插件(Plugins):完成模块功能的补充
- 剧本(Playbooks):
- ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
- 连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
- 主机群(Host Inventory):定义ansible管理的主机
2.3 ansible应用前提:标准体系建设(重要)
2.3.1 标准先行
自动化的前提是“标准先行,标准先行,标准先行”,重要的事情说三遍

我们运维工作的开展常常不知从何下手,或者上来就冲着工具和自动化去了,却始终不得章法,工具做了一堆,效率却并没有提升。其实绝大多数情况下,问题和原因就是标准化这个基础工作没做扎实。
2.3.2 为什么要做标准化
标准化的过程实际上就是对运维对象的识别和建模过程。形成统一的对象模型后,各方在统一的认识下展开有效协作,然后针对不同的运维对象,再抽取出它们所对应的运维场景,接下来才是运维场景的自动化实现。
这有点像我们学的面向对象编程的思想,其实我们就是需要遵循这样一个思路,我们面对的就是一个个实体和逻辑运维对象。
在标准化的过程中,先识别出各个运维对象,然后我们日常做的所有运维工作,都应该是针对这些对象的运维。如果运维操作脱离了对象,那就没有任何意义。同样,没有理清楚对象,运维自然不得章法。
比如我们说扩容,那就要先确定这里到底是服务器的扩容,还是应用

本文详细介绍Ansible自动化运维工具的安装、配置与基本使用方法,包括Ansible的工作机制、主要命令解析及实战演练,适合运维新手快速上手。

最低0.47元/天 解锁文章
855





