Ansible初识

Ansible概念

ansible是自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。说白了,Ansible就是在一台或台服务器上执行一系列命令而已。主要包括

(1)、连接插件connectionplugins:负责和被监控端实现通信

(2)、hostinventory:指定操作的主机,是一个配置文件里面定义监控的主机

(3)、各种模块核心模块、command模块、自定义模块

(4)、借助于插件完成记录日志邮件等功能

(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

Ansible可以实现很多工具的功能,如下图:

Ansible初识

Ansible和其它自动化工具比较

Ansible无需在被控主机部署任何代理程序,默认直接通过ssh通道进行远程命令执行和下发配置。具有功能强大、系统管理灵活等特点。两者都提供丰富的模板和API,对云计算、大数据都有很好的支持。

同类自动化工具GitHub关注程度(2016-07-10)

同类自动化工具

watch(关注)

star(点赞)

fork(复制)

Contributors(贡献者)

Ansible

1387

17716

5356

1428

Puppet

463

4044

1678

425

Chef

383

4333

1806

464

Fabric

379

7334

1235

116

Ansible架构

Ansible初识

Ansible:Ansible核心程序。

HostLnventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。

Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。

CoreModules:核心模块,来完成管理任务。先调用此中的模块,再指定HostLnventory中的主机来完成管理任务。

CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。

ConnectionPlugins:连接插件,做通信使用。

Ansible 工作机制

    Ansible 在管理节点将 Ansible 模块通过 SSH 协议(或者 Kerberos、LDAP)推送到被管理端执 行,执行完之后自动删除,可以使用 SVN 等来管理自定义模块及编排

Ansible初识

1、管理端支持local 、ssh、zeromq 三种方式连接被管理端,默认使用基于ssh的连接---这部分对应基本架构图中的连接模块

2、可以按应用类型等方式进行Host Inventory(主机群)分类,管理节点通过各类模块实现相应的操作---单个模块,单条命令的批量执行,我们可以称之为ad-hoc

3、管理节点可以通过playbooks 实现多个task的集合实现一类功能,如web服务的安装部署、数据库服务器的批量备份等。playbooks我们可以简单的理解为,系统通过组合多条ad-hoc操作的配置文件 

Ansible初识

ansible的任务执行流程

(1)读取配置

(2)抓取全量机器&分组列表

      可从多个静态文件、文件夹、脚本中读取机器,分组及其变关联量信息。

(3)使用host-pattern过滤机器列表

(4)根据参数确定执行模块和配置

       从modules目录动态读取,用户可以自行开发模块。

(5)Runner执行返回

       Connection环节定义连接方式 => Action阶段机器列表(Lookup plugin Action变量/文件等资源的获取)

       Callback plugin各阶段的钩子调用

(6)输出结束

       Filter plugin过滤算子

       Callback plugin各阶段的钩子调用

Ansible特性:

(1)、Agentless(去中心化)

(2)、noserver:无服务器端,使用时直接运行命令即可

(3)、模块化:调用特定模块,完成特定任务,支持自定义模块

(4)、yaml,notcode:使用yaml语言定制剧本playbook

(5)、sshbydefault:基于SSH工作

(6)、strongmulti-tiersolution:可实现多级指挥

(7)、冥等性

优点:

(1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

(2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;

(3)、使用python编写,维护更简单,ruby语法过于复杂;

(4)、支持sudo。

Ansible工作机制

Ansible初识

Ansble目录结构图:

Ansible初识

Ansible主要组成部分:

ANSIBLEPLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件

INVENTORY:Ansible管理主机的清单

MODULES:Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义

PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用。

API:供第三方程序调用的应用程序编程接口

ANSIBLE:该部分图中表示的不明显,组合INVENTORY、API、MODULES、PLUGINS的绿框大家可以理解为是Ansible命令工具,其为核心执行工具

Ansible组件调用关系:

Ansible初识

自动化发布:

测试环境

Dev测试环境

测试环境

灰度环境

发布环境

生产环境

灰度发布

指在黑与白之间,能够平滑过渡的一种发布方式ABtest就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响

自动化发布:

发布机/Master/管理机/堡垒机

统一入口、规范管理

利用手机APP动态口令等验证机制

托管服务器密码,实现自动改密

事中控制,防止违规

操作精细化审计,追溯整个运维过程

目录摆放规范简述:

/srv/

/data/srv/

/web/

/app/

命名规范简述

一级:项目名

二级:打包时间

三级:版本号

主版本号.子版本号[.修正版本号[.编译版本号]]

四级:版本特性

示例webapp-201704041220-V1.0.10.0-Beta

webapp-201705051220-V1.1.12.0-Stable

Ansible初识

参考文档:

http://www.ansible.com.cn/

http://docs.ansible.com/

https://www.ansible.com/

https://github.com/ansible/ansible

原创文章,作者:Linux.rookie,如若转载,请注明出处:http://www.178linux.com/79474

(0)
Linux.rookieLinux.rookie
上一篇 2017-07-08
下一篇 2017-07-08

相关推荐

  • N25期第二周作业

    1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 ls 列出文件和目录命令 -a:显示所有档案及目录 -A:显示除隐藏文件”.”和”..”以外的所有文件 -C:多列显示结果,默认选项 -l:单列显示结果,以长格式显示目录下的内容列表 -F:在每个输出项后追加文件的类型标识符 &#822…

    Linux干货 2016-12-11
  • Linux命令格式及基础命令使用

    Linux命令格式command [选项] [参数]其中 选项 以 – 开始,多个选项可用一个-连起来,如ls -l -a 与ls -la相同。根据命令的不同,参数分为可选的或必须的。ifconfig格式:ifconfig [网络设备] [参数]命令功能:命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。示例 :i…

    Linux干货 2018-03-03
  • 自制一个简易linux

    虚拟机添加一块新的硬盘(大小自定义) 在磁盘上创建一个基本分区作为/boot分区(大小200M足够) 再创建一个基本分区作为基本根分区(这里我指定给了5G大小) 然后给分区创建文件系统(注;swap分区要使用mkswap命令) ]# mkdir /mnt/boot 创建挂载点(因为grub只识别/boot目录,所以要创建boot目录) ]# mount /d…

    Linux干货 2016-09-21
  • rsyslog, mysql, loganalyzer联合实现

    一. rsyslog简介 rsyslog是一个自由软件, 是GPL的lincesed增强的syslogd. 它提供了Mysql和完全可配置的输出格式的支持. 1. 日志信息格式:      <优先级>时间戳 主机名 模块名/级别/信息摘要:内容      <priority>…

    Linux干货 2016-10-24
  • MAN 手册各章节功能介绍及快捷键键位整理

    MAN 手册各章节功能介绍及快捷键键位整理   Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。  1、Linux 的man手册共有以下几个章节:         1章节:用户命令     …

    Linux干货 2016-10-19
  • Kickstart+PXE自动部署

    Kickstart+PXE自动部署 无人值守安装简介 无人值守安装(Unattended Setup)指软件安装时无需任何用户干预,直接按默认或通过应答文件设置安装,这对于无特殊需求的用户或企业大批量部署安装操作系统及软件时非常方便。无人值守安装也称为静默安装,在安装过程中可以静默安装好预先设计集成的一些常用软件,安装结束以后软件就已经可以使用,很多软件都支…

    Linux干货 2016-09-17