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简介
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是通过各种命令和模块进行组合,然后进行任务操作
- 如果是单一性的操作可以直接使用单一命令进行操作也是可以的