Ansible自动化运维的使用领域和架构

Ansible

一、自动化运维简介:

自动化运维:将周期性、重复性、规律性的工作都交给工具去做,具体来说有应用系统维护自动化,巡检自动化和故障处理自动化这三个方面;自动化运维依赖于具体的智能管理平台,最终达到提升运维效率的目的。

二、自动化应用领域

配置管理

确保被管理的主机尽可能快速、按照正确方式达到配置文件中描述的状态,如网站高峰时候需扩展新的Web服务器,这就需要一台由配置管理控制的机器能够快速就位,即通常所说的代码化基础架构(Infratructure as code),由于构建基础架构的所有代码都必须存储在源码控制系统中,因此代码化基础架构逐步开始按照软件开发生命周期(Software Development Lifecycle,SDLC)方式进行管理

常见辅助基础架构测试工具:Ansible、CFEngine、Chef、Puppet、Salt等(配置管理工具)
常见基础架构测试工具:Serverspec、Test kitchen等(测试基础配置代码正确性)服务

服务即时开通

用于在数据中心、虚拟化环境、云集算中快速开通新的主机
一般云计算提供商可提供对应API接口,自动化工具可通过API接口快速创建主机实例

应用部署

自动化部署应用,并尽可能零停机部署;一般应用部署采用滚动部署(又称滚动更新或者增量发布,版本B缓慢更新并替代版本A)、金丝雀部署(版本B向一部分用户发布,然后完全放开)或流水线式部署(持续×××付,自动化)常见流水线式部署工具:ThoughtWorks Go、Atlassian Bamboo、Jenkins等

流程编排

部署时保证基础结构众各组件协调一致,如对Web服务器部署新版本软件时,需确保该Web从负载均衡上移除(不然会造成访问异常)
常见流程编排工具:Ansible、Mcollective、Salt、Serf、Chef等

监控警告

当基础架构出现问题、故障时通知,并可多种方式管理
常见监控告警工具:Nagios、Ganglia、Zenoss、Zabbix、Graphite等

日志记录

集中收集跨系统和应用的日志数据,并能按照规则进行智能过滤、根本原因分析、告警等,常见日志记录工具:Logstash-Kibana、SumoLogic、Rsyslog等
注:Ansible可以完成前4个领域工作

三、Ansible架构及特点

Ansible实现方式:

Ansible基于Python语言实现,由Paramiko(提供了ssh及sftp进行远程登录服务器执行命令和上传下载文件的功能)和PyYAML两个关键模块构成,应用于各规模及领域企业,如Twitter、NASA、Evernote等。Ansible只依赖SSH,因此无需在远程机器上安装代理(即客户端)

Ansible架构模式:

Ansible由控制机和被管机组成;控制机安装Ansible工具软件、具体执行维护指令的服务器或工作站,是Ansible的核心;被管机为运行业务的服务器,由控制机通过SSH进行管理

Ansible管理方式

    Ansible是一个模型驱动的配置管理器(简单理解即Ansible只是一个框架,具体功能由模块实现),支持多节点发布、远程任务执行;默认使用SSH进行远程连接,无需在被管节点上安装附加软件,可使用各种编程软件扩展


如上图所示,Ansible管理系统由控制主机和一组被管节点组成,控制主机直接通过SSH控制被管节点,被管节点通过Ansible的资源清单(inventory,即主机定义)来进行分组管理。


上图为配置管理实例,Ansible用剧本(playbook)方式对3台运行Nginx服务的Ubuntu服务器进行配置管理,控制主机编写了一个名为webservers.yml的Ansible脚本(该脚本称为playbook,包含被管节点的hosts和按照顺序执行的任务列表(task))

例子中,hosts包含web1、web2、web3

任务列表包含:
? 安装Nginx(Install Nginx)
? 创建Nginx配置文件(/etc/nginx/nginx.conf)
? 基于安全证书SSH方式拷贝配置文件,重启Nginx服务
? 确保Nginx服务处于启动状态
这时只需要在Ansible控制主机执行如下截图即可

Ansible将会通过SSH连接并行地在web1、web2、web3安装、配置、运行Nginx服务

Ansible系统架构
Ansible集合众多优秀运维工具实现了批量系统配置、批量程序部署、批量运行命令等功能

Ansible基于模块工作,本身没有批量部署能力,真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架,用户通过Ansible编排引擎操作公有云/私有云或CMDB(配置管理数据库)中的主机

? 核心引擎:即Ansible

? 核心模块(core modules):Ansible自带的模块,Ansible将模块资源分发到远程节点使其执行特定任务或匹配一个特定的状态

? 自定义模块(custom modules):如核心模块不能满足某功能,可使用自定义模块

? 插件(plugins):模块功能的补充,通过插件可完成日志记录、邮件发送等功能

? 剧本(playbook):Ansible执行任务的配置文件,可将多个任务定义在一个剧本中,由Ansible自动执行,可同时对多台远程主机管理或运行任务

? playbook:Ansible配置、部署及编程语言,描述远程系统执行策略或一组步骤的过程

? 连接插件(connectior plugins):Ansible通过连接插件连接到各主机,实现与被管节点通信(Ansible默认使用SSH连接到各节点,但也支持其余方式,因此需有连接插件)

? 主机清单(host inventory):定义Ansible管理的主机,默认为Ansible中hosts配置文件中定义的被管节点,但也支持动态主机清单

 Ansible釆用paramiko协议库,通过SSH或者ZeroMQ连接主机,Ansible在控制主机将Ansible模块通过SSH协议(或者Kerberos、LDAP)推送到被管节点执行,执行完之后自动删除,可以使用SVN等来管理自定义模块及编排,从图1-4可以了解到,控制主机与被管节点之间支持local、SSH、ZeroMQ三种连接方式,默认使用基于SSH的连接,在规模较大的情况下使用ZeroMQ连接方式会明显改善执行速度

Ansible部署
Ansible的安装方式非常灵活,可满足各种环境部署的需求,一般可以直接用源码进行安装,也可用操作系统软件包管理工具进行安装

原文地址:http://blog.51cto.com/13043516/2119700

时间: 2024-10-12 08:32:24

Ansible自动化运维的使用领域和架构的相关文章

简单聊一聊Ansible自动化运维

一.Ansible概述 Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个.更为重要的是,它操作非常简单,即使小白也可以轻松上手,但它提供的功能又非常丰富,在运维领域,几乎可以做任何事. 1.Ansible特点 Ansible自2012年发布以来,很快在全球流行,其特点如下: Ansible基于Python开发,运维工程师对其二次

Ansible自动化运维(一)

一.ansible自动化运维 二.ansible安装 1.基本软件安装 (1)安装python-2.7.8 cd python-2.7.8 ./configure --prefix=/usr/local && make && make install #如果ansible找不到python头文件的话,将Pytho头文件复制到标准目录 cp -a /usr/local/include/python2.7/* /usr/local/include #修改/usr/bin/yum

Ansible自动化运维工具-上

[Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要安装客户端,ansible基于SSH远程管理,不需要为配置工作添加额外的支持: PS:很多认为Ansible工具执行效率慢,其原因是SSH服务慢,我们可以选择优化SSH连接速度以及Ansible加速模块 [Ansible自动化管理工具特点] #轻量级,更新时,需要在操作机上进行一次更新即可 #采用S

《Ansible自动化运维:技术与最佳实践》图书已上架,欢迎大家阅读

本书由资深运维程师联手打造,通过大量实例,详细讲解Ansible这个自动化运维工具的基础原理和使用技巧:从基础的架构解析.安装配置,到典型应用案例分析,作者分享了自己在工作中的实战经验,为各类运维操作.运维开发人员提供了翔实的指南.本书主要内容包括:Ansible架构及安装,Ansible 组件.组件扩展.API,playbook详解,最佳实践案例分析,用ansible-vault保护敏感数据,Ansible与云计算的结合,部署Zabbix组件.Haproxy + LAMP架构,以及Ansibl

Ansible自动化运维的安装及常用模块解释

(一)前言: Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个.更为重要的是,它操作简单,但提供的功能又非常丰富,在运维领域,几乎可以做任何事. Ansible自2012年发布以来,很快在全球流行,其特点如下: Ansible基于Python开发,运维工程师对其二次开发相对比较容易: Ansible丰富的内置模块,几乎可以满足一

Ansible自动化运维的安装及常用模块详解

Ansible作为今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个.更为重要的是,它操作简单,但提供的功能又非常丰富,在运维领域,几乎可以做任何事..Ansible自2012年发布以来,很快在全球流行,其特点如下: 1.Ansible基于Python开发,运维工程师对其二次开发相对比较容易2.Ansible丰富的内置模块,几乎可以满足一切要求3

Ansible自动化运维详解

Ansible作为今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块可以实现各种管理任务,其自带模块超过上千个.更为重要的是,它操作简单,但提供的功能又非常丰富,在运维领域,几乎可以做任何事..Ansible自2012年发布以来,很快在全球流行,其特点如下: 1.Ansible基于Python开发,运维工程师对其二次开发相对比较容易2.Ansible丰富的内置模块,几乎可以满足一切要求3

ansible自动化运维必备工具详解

第2章 ansible简单介绍: 2.1 ansible是什么? ansible是新出现的 自动化 运维工具 , 基于Python研发 . 糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. 仅需在管理工作站上安装 ansible 程序配置被管控主机的 IP 信息,被管控的主机无客户端. ansible 应用程序存在于 epel( 第三方社区 ) 源,依赖于很多 python 组件 python语言是运维人员必会的语言!ansible是一个基于Python开

Ansible自动化运维工具部署及使用

一.Ansible介绍 1.简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inven