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

相关推荐

  • linux作业管理

    作业管理 kill kill命令:     向进程发送控制信号,以实现对进程管理     显示当前系统可用信号:kill -l     常用信号:man 7 signal    &…

    Linux干货 2016-09-09
  • Linux网络管理基础

    Linux网络管理基础 动态路由 Bonding Network Teaming 静态路由实验 Linux的网络管理,了解基本的网络知识是基础,除此,要掌握好ifconig命令、ip命令、nmcli命令(CentOS 7),以及涉及到网络的配置文件。 配置动态路由: 通过守护进程获取动态路由,安装quagga包,支持RIP、OSPF、BGP,通过命令vtys…

    Linux干货 2016-09-09
  • bind-9.9.5编译安装

    bind-9.9.5编译安装 §·bind-9.9.5编译安装大概步骤 步骤一 :下载源码包bind-9.9.5 ; 步骤二 :按需求选择模块或功能 ./configure ;  # ./configure  –prefix=/usr/local/bind9  –sysconfdir=…

    Linux干货 2016-10-09
  • 【招聘需求】高级运维工程师/上海虹口区/待遇20k左右

    上海虹口区/待遇20k左右 有意向者发简历至@管家邮箱 邮件名是:[求职]Net-姓名-花名-工作年限 岗位职责:1、降低技术壁垒,建设运维工具、运维平台,实现运维自动化,包括 运维自动化、配置管理中心等。2、具备前瞻性,带领运维技术团队完成业务支撑,负责定位、分析、跟踪和相协调处理重大事故,使之对业务影响降至最低。3、技术支持、培训、知识库建设。4、运维接…

    Linux干货 2015-03-12
  • 脚本初学者

    期待已久的脚本终于在这一周学到了,对于脚本,我感觉就是有两点,第一:考验一个人的思维能力,如果能把你想要的结果用脚本正确的表示出来。第二:以前学的基础命令,怎么组合起来使用。达到以上两点,再难写的脚本都可以写出来的。 一、编写,执行一个脚本        脚本的格式  &nbsp…

    2017-08-05
  • 集中练习6-bash脚本

    集中练习6-bash脚本

    Linux干货 2017-12-05