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)
上一篇 2017-07-08 15:08
下一篇 2017-07-08 15:50

相关推荐

  • 学习宣言

    娶媳妇!娶媳妇!娶媳妇有木有!!! 请享受无法回避的痛苦!!!!!!!

    Linux干货 2016-12-27
  • Linux基础之部分命令使用实例一

    1、 Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 常用有:cp、mv、rm  cp [OPTION] SOURCE DEST //复制    option:      -i:交换式,用来提醒用户是否覆盖,当将源文件复制并粘贴到目的路径时,如果目的路径…

    Linux干货 2016-11-08
  • 磁盘分区相关知识

    磁盘分区相关知识 使用磁盘分区的过程设备识别→设备分区→创建文件系统→标记文件系统→在/etc/fstab文件中创建条目→挂载新的文件系统 分区不是必须的,但是分区是必要的:优化I/O性能实现磁盘空间配额限制提高修复速度隔离系统和程序安装多个OS采用不同文件系统 不重启激活新添加的磁盘:echo “- – -” > …

    Linux干货 2017-08-20
  • Linux发展史

    Linux发展史 Linux的简单介绍 Linux操作系统诞生于1991 年,是一套免费使用和自由传播的类Unix操作系统。Linux存在着许多不同的Linux发行版本。严格意义上的Linux系统应该是GUN/Linux(kernel+Application)而Linux本身只表示Linux系统内核,但实际上人们已经习惯了用Linux称呼GUN/Linux系…

    Linux干货 2016-10-13
  • Linux文件系统上的权限

    Linux文件系统上的权限 首先我们来看一下如何修改文件的属主和属组 修改文件的属主:chown chown [OPTION]… [OWNER][:[GROUP]]FILE… 用法 OWNER修改属主 OWNER:GROUP修改属主:属组 :GROUP修改属组 命令中的冒号可以用.替换 -R:递归 chowen [OPTION]&#8…

    Linux干货 2016-08-04
  • N23_第六周

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;:%s/^[[:blank:]]\+.*/\0#/g 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;:%s/^[[:space:]]\+/…

    Linux干货 2017-02-28