Ansible入门简介

版权声明:本文为博主原创文章,未经博主允许不得转载。Bob Hou: http://blog.csdn.net/minxihou https://blog.csdn.net/minxihou/article/details/53422492

Ansible简介

Ansible基于Python语言实现,由paramiko和PyYAML两个关键模块构建。Ansible的编排引擎可以出色地完成配置管理,流程控制,资源部署等多方面工作。ansible主要承担的工作有以下几种:

  1. 配置管理
  2. 服务即时开通
  3. 应用部署
  4. 流程编排
  5. 监控告警
  6. 日志记录

    Ansible公司负责Ansible开源软件的维护,管理。一般软件的更新时间为2个月。到现在写这篇博客为止,Ansible的版本已经更新到了2.3.

Ansible架构模式

Ansible维护模式通常由控制机和被管理机组成。因为Ansible的特性不像其他运维工具那样需要在被监控的目标上安装agent,所以我们的侧重点只需要放在安装了Ansible的服务器上(当然用于实验环境的话可以是一台笔记本,台式机或者仅仅只需要一台虚拟机即可)。Ansible可以通过SSH进行远程链接到对端主机上,然后执行你想要执行的playbook或者指令。所有的远程主机都可以在inventory中被定义。

以下是Ansible的基本架构:
这里写图片描述

  1. 核心引擎:即图中所看到的ansible
  2. 核心模块(core module):在模块库(module library)中分为两块,一个是核心模块另外一个就是自定义模块(custom modules)。核心模块中都是ansible自带的模块,Ansible模块资源分发到远程节点使其执行特定任务或匹配一个特定的状态。这些核心核心模块都遵循这batteries included哲学。其实这里这个还是很有意思的,batterires included:Python has a large standard library, commonly cited as one of Python’s greatest strengths,providing tools suited to many tasks. 这就意味着Python有这巨大的库支持你完成你想完成的任务工作。
  3. 自定义模块(custom modules):如果在Ansible中满足不了你所需求的模块,那么Ansible也能提供添加自定义化的模块。
  4. 插件(plugin):这里我的理解就是完成较小型的任务。辅助协助模块来完成某个功能。
  5. 剧本(playbook):定义需要给远程主机执行的一系列任务。例如安装一个nginx服务,那么我们可以把这拆分为几个任务放到一个playbook中。例如:第一步需要下载nginx的安装包。第二步我可能考虑需要做的就是将我事先写好的nginx.conf的配置文件下发的目标服务器上。第三步,我们需要把服务启动起来。第四步,我们可能需要检查端口是否正常开启。那么这些步骤可以通过playbook来进行整合,然后通过inventory来下发到想要执行剧本的主机上。并且playbook也支持交互式执行playbook里面的步骤,而且如果有那一个步骤执行返回了一个错误报告,那么我们可以仅仅只单独执行这个步骤。你可以把playbook理解成为一个组策略,控制管理这个OU下所有的主机行为。
  6. 连接插件(connectior plugins):Ansible默认是基于SSH连接到目标机器上执行操作的。但是同样的Ansible支持不同的连接方法,要是这样的话就需要连接插件来帮助我们完成连接了。
  7. 主机清单(host inventory):为Ansible定义了管理主机的策略。一般小型环境下我们只需要在host文件中写入主机的IP地址即可,但是到了中大型环境我们有可能需要使用静态inventory或者动态主机清单来生成我们所需要执行的目标主机。

任务执行模式

Ansible针对Ansible服务器对执行操作服务器的操作方式,分为两种执行模式:
1.ad-hoc:这个模式支持执行单个模块,支持批量执行单条命令。
2.playbook:这个可以理解成为面向对象的编程,就像上面举例那样可以把多个你想要执行的任务放到一个playbook当中,当然多个任务在事物逻辑上最好是有上下联系的。通过这多个任务可以完成一个总体的目标,这就是playbook。

下图是参看书籍画的Ansible执行过程:
这里写图片描述

Ansible功能特性

  1. 应用代码自动化部署
  2. 系统管理配置自动化
  3. 支持持续交付自动化
  4. 支持云计算,大数据平台环境
  5. 轻量级,无序在客户端安装agent,更新时只需在控制机上进行更行即可
  6. 批量任务执行可以写成脚本,不用分发到远程就可以执行
  7. 支持非root用户管理操作,支持sudo
  8. 使用python编写,维护更简单
阅读更多

没有更多推荐了,返回首页