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

相关推荐

  • vim常用小结

    移动光标类命令h :光标左移一个字符l :光标右移一个字符space:光标右移一个字符Backspace:光标左移一个字符k或Ctrl+p:光标上移一行j或Ctrl+n :光标下移一行Enter :光标下移一行w或W :光标右移一个字至字首b或B :光标左移一个字至字首e或E :光标右移一个字至字尾) :光标移至句尾( :光标移至句首}:光标移至段落最后一个…

    Linux干货 2017-04-11
  • Nginx常用配置详解

    Nginx常用配置详解(一) 本文依照nginx官方站点文档介绍常用的nginx各种常用配置,未经过校对,如有错误还望海涵。 Nginx配置通用语法 Nginx最基本的配置语法 配置项名 配置项值1 [配置项值2 ….]; 配置项名位于行首,配置项值与配置项名之间用空格隔开,多个配置项值之间也用空格隔开,每行配置结尾必须加上分号。 #配置项名 配置项值1…

    Linux干货 2017-06-20
  • Centos7下安装httpd源码包

    今天小编来跟大家做个练习,就是如何在Centos7下安装httpd源码包. 一:下载httpd最新版本的源码包 [root@localhost ~]# rpm -qa |grep httpd //查询系统上是否已安装httpd包 httpd-tools-2.4.6-45.el7.centos.4.x86_64 httpd-2.4.6-45.el7.cento…

    2017-08-19
  • N23_第五周

    1.显示/boot/grub/grub.conf中以至少一个空白字符开头的行 egrep “^[[:space:]]{1,}” /boot/grub/grub.conf 2.显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行 egrep “^#[[:space:]]{1,}.*[^[:space…

    Linux干货 2017-02-27
  • N26-第二周作业-邢岩(2)

     马哥门徒-N26-邢岩   我们接着说今天的分享,接着,我们来看看bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容好了。    1.bash的基础特性之:命令的执行状态结果      bash通过状态返回值来输出此结果:       成功:0 …

    Linux干货 2017-02-10