01: ansible基础
1.1 SaltStack、Ansible、Puppet比较
1、SaltStack
1. saltStack由Python编写,为server-client模式的系统,自己本身支持多master。
2. 运行模式为master端下发指令,客户端接收指令执行。
3. saltstack依赖于zeromq消息队列,采用yaml格式编写配置文件,比较简单。
4. 支持api及自定义python模块,能轻松实现功能扩展。
2、Ansible
1. 类似与saltstack,基于python开发,关注的重点是精简和快速。
2. 不需要在节点安装代理软件,通过ssh执行所有功能,安装运行简单。
3. 其模块可以用任何语言开发,采用yaml格式编写配置文件。
4. 没有客户端,较难扩展。
3、Puppet
1. puppet由Ruby编写,为server-client模式的系统。
2. 运行时由客户端定时去获取自己的配置文件进而应用更改。
3. 也可以通过master的push命令即可触发变更。
4. 将命令,文件,服务等抽象成资源,概念比较统一,时间悠久,文档较多。
5. 就可用操作,模块,用户界面等等功能而言,是三者之中最全面的。
6. 安装部署难度一般,配置清单相对于其他工具较复杂。
4、比较
1.2 ansible简介
1、ansible是什么
1. Ansible是一个配置管理系统configuration management system,
2. 你只需要可以使用ssh访问你的服务器或设备就行。
2、Ansible能做什么
注:ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。
1)比如:同时在100台服务器上安装nfs服务,并在安装后启动服务。
2)比如:将某个文件一次性拷贝到100台服务器上。
3)比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。
普通方式流程:购买机器->2.配置环境->3.部署代码->4测试->5.加入集群
3、Ansible软件特点
1.ansible不需要单独安装客户端,SSH相当于ansible客户端。
2.ansible不需要启动任何服务,仅需安装对应工具即可。
3.ansible依赖大量的python模块来实现批量管理。
4.ansible配置文件/etc/ansible/ansible.cfg
5.有paramiko(Python开发出来基于SSH服务的远程通讯模块), pyYAML(playbook基于此模块实现的), jinja2(模板语言)三个关键模块
6. 可使用任何编程语言写模块,YAML格式,编排任务,支持丰富的数据结构
1.3 ansible基本架构
1、ansible架构说明
1. 可以大致分为三层结构: 用户、主控端、被控端
2. 用户要通过ansible(主控端)来控制其他机器(被控端)
2、ansible主要组成部分
1. ansible playbook : 任务剧本(任务集),编排定义ansible任务集的配置文件,由ansible顺序依次执行,通常是json格式的YML文件
2. inventory : ansible管理主机的清单/etc/ansible/hosts
3. modules : ansible执行命令的功能模块,多数为内置核心模块,也可以自定义
4. plugins : 模块功能的补充,如连接类型插件,循环插件,变量插件,锅炉插件等,该功能不常使用
5. API : 供第三方程序调用的应用程序编程接口
6. ansible : 组合inventor/API/modules/plugins,可以理解为是ansible命令工具,其为核心执行工具
3、ansible架构图
1)host inventory(主机清单)-配置文件
1. 在控制多台主机环境的时候,ansible如何知道控制那几台机器的?
2. 就用到了host inventory(主机清单)-文件 ,把需要控制的机器IP写入到主机清单中
2)playbook(剧本)
1. 如果做的一些是例行性的工作,大量重复可以使用playbook(剧本),playbook是通过各种命令和模块进行组合,然后进行任务操作
2. 如果是单一性的操作可以直接使用单一命令进行操作也是可以的
1111
作者:学无止境
出处:https://www.cnblogs.com/xiaonq
生活不只是眼前的苟且,还有诗和远方。