自动化运维之Ansible服务部署详述

由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护会使得工作效率低下。这时,部署自动化运维就可以尽可能安全、高效地完成这些工作。
一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的ABem程序来完成管理功能,如: Puppet、Func、 Zabbix等;另外一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,如: Ansible、 Fabric等。
-

下面介绍几款功能类似的自动化运维工具:

1. Puppet

Pup基于Rpy开发,支持Linx、UNDX、 Windows平台,可以针对用户、系统服务配置文件、软件包等进行管理,有很强的扩展性,但远程执行命令相对较弱。

2. SaltStack

CallStack基于 Python开发,允许管理员对多个操作系统创建统一的管理系统,比pet更轻量级

工具开发语言结构配置文件 格式运行任务
Ansible   Python     YAML   支持命令行  
SaltStack   Python   C/S   YAML   支持命令行  
Puppet   Ruby   C/S   Ruby语法格式   通过模块实现  

Ansible
Ansible基于 Python开发,集合了众多优秀运维工具的优点,实现了批量运行命令部署程序、配置系统等功能。默认通过SSH协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,从而使得自动化环境部署变得更加简单。可同时支持多台主机并行管理,使得管理主机更加便捷。

官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。 Ansible通过SSH协议实现远程节点和管理节点之间的通信。理论上说,只要管理员通过ssh登录到一台远程主机上能做的操作,Ansible都可以做到。

Ansible跟其他IT自动化技术的区别在于其关注点并非配置管理、应用部署或IT流程工作流,而是提供一个统一的界面来协调所有的IT自动化功能,因此Ansible的系统更加易用,部署更快。
Ansible可以让用户避免编写脚本或代码来管理应用,同时还能搭建工作流实现IT任务的自动化执行。IT自动化可以降低技术门槛及对传统IT的依赖,从而加快项目的交付速度。

自动化运维之Ansible服务部署详述

Ansible基本架构由六个部分组成:

Ansible core 核心引擎
Host inventory 主机清单:用来定义Ansible 所管理的主机,默认是在Ansible的host配置文件中定义被管理主机,同时也支持自定义动态主机清单和指定其他配置文件的位置。
Connection plugins连接插件:负责和被管理主机实现通信。除支持使用ssh连接被管理主机外, Ansible还支持其他的连接方式,所以需要有连接插件将各个主机用连接插件连接到 Ansible。
Playbooks(yaml, injaz2)剧本:用来集中定义 Ansible任务的配置文件,即将多个任务定义在一个剧本中由 Ansible自动执行,可以由控制主机针对多台被管理主机同时运行多个任务。
Core modules核心模块:是 Ansible自带的模块,使用这些模块将资源分发到被管理主机,使其执行特定任务或匹配特定的状态。
Custom modules自定义模块:用于完成模块功能的补充,可借助相关插件完成记录日志、发送邮件等功能。

ansible功能特性

应用代码自动化部署

系统管理配置自动化

支持持续交付自动化

支持云计算,大数据平台环境

轻量级,无序在客户端安装agent,更新时只需在控制机上进行更行即可

批量任务执行可以写成脚本,不用分发到远程就可以执行

支持非root用户管理操作,支持sudo

使用python编写,维护更简单

二、Ansible安装

Ansible 自动化运维环境由控制主机与被管理主机组成,由于Ansible是基于SSH协议进行通信的,所以控制主机安装Ansible软件后不需要重启或运行任何程序,被管理主机也不需要安装和运行任何代理程序。

实验安装环境: 角色主机名IP地址组名
控制主机   01   192.168.100.129      
被管理主机   02   192.168.100.128   webserver  
被管理主机   03   192.168.100.130   mysql  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7358c08f28879fcc8e988bed3fb6fc65.html