ansible基础与特点(-重要的组成部分)

一. SaltStack、Ansible、Puppet比较

1、SaltStack

  • saltStack由Python编写,为server-client模式的系统,自己本身支持多master。
  • 运行模式为master端下发指令,客户端接收指令执行。
  • saltstack依赖于zeromq消息队列,采用yaml格式编写配置文件,比较简单。
  • 支持api及自定义python模块,能轻松实现功能扩展。

2、Ansible

  • 类似与saltstack,基于python开发,关注的重点是精简和快速。
  • 不需要在节点安装代理软件,通过ssh执行所有功能,安装运行简单。
  • 其模块可以用任何语言开发,采用yaml格式编写配置文件。
  • 没有客户端,较难扩展。

3、Puppet

  • puppet由Ruby编写,为server-client模式的系统。
  • 运行时由客户端定时去获取自己的配置文件进而应用更改。
  • 也可以通过master的push命令即可触发变更。
  • 将命令,文件,服务等抽象成资源,概念比较统一,时间悠久,文档较多。
  • 就可用操作,模块,用户界面等等功能而言,是三者之中最全面的。
  • 安装部署难度一般,配置清单相对于其他工具较复杂。

4、比较

ansible基础与特点(-重要的组成部分)

二. ansible简介

1、ansible是什么

  • Ansible是一个配置管理系统configuration management system,
  • 你只需要可以使用ssh访问你的服务器或设备就行。

2、Ansible能做什么

  • 注:ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。
  • 1)比如:同时在100台服务器上安装nfs服务,并在安装后启动服务。
  • 2)比如:将某个文件一次性拷贝到100台服务器上。
  • 3)比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。
  • 普通方式流程:购买机器->2.配置环境->3.部署代码->4测试->5.加入集群

3、Ansible软件特点

  • ansible不需要单独安装客户端,SSH相当于ansible客户端。
  • ansible不需要启动任何服务,仅需安装对应工具即可。
  • ansible依赖大量的python模块来实现批量管理。
  • ansible配置文件/etc/ansible/ansible.cfg
  • 有paramiko(Python开发出来基于SSH服务的远程通讯模块), pyYAML(playbook基于此模块实现的),
  • jinja2(模板语言)三个关键模块
  • 可使用任何编程语言写模块,YAML格式,编排任务,支持丰富的数据结构

三. ansible基本架构

1、ansible架构说明

  • 可以大致分为三层结构: 用户、主控端、被控端
  • 用户要通过ansible(主控端)来控制其他机器(被控端)

2、ansible主要组成部分

  • ansible playbook : 任务剧本(任务集),编排定义ansible任务集的配置文件,由ansible顺序依次执行,通常是json格式的YML文件
  • inventory : ansible管理主机的清单/etc/ansible/hosts
  • modules : ansible执行命令的功能模块,多数为内置核心模块,也可以自定义
  • plugins : 模块功能的补充,如连接类型插件,循环插件,变量插件,锅炉插件等,该功能不常使用
  • API : 供第三方程序调用的应用程序编程接口
  • ansible : 组合inventor/API/modules/plugins,可以理解为是ansible命令工具,其为核心执行工具

3、ansible架构图

1)host inventory(主机清单)-配置文件

  • 在控制多台主机环境的时候,ansible如何知道控制那几台机器的?
  • 就用到了host inventory(主机清单)-文件 ,把需要控制的机器IP写入到主机清单中

2)playbook(剧本)

  • 如果做的一些是例行性的工作,大量重复可以使用playbook(剧本),playbook是通过各种命令和模块进行组合,然后进行任务操作
  • 如果是单一性的操作可以直接使用单一命令进行操作也是可以的
    ansible基础与特点(-重要的组成部分)