Ansible基本介绍

前言

2020年2月23号晚上,闲的蛋疼,想着复习整理一下ansible吧。。。

 

工具介绍

Ansible是一款自动化运维工具,旨在降低人为失误,提高业务的自动化及工作效率。常用作软件自动化部署、自动化配置、自动化管理、系统化任务、持续继承、平滑升级等等。创始人是Michael DeHaan。

 

资料查阅

官方地址:https://www.ansible.com/

官方文档:https://docs.ansible.com/

中文文档:http://www.ansible.com.cn/

代码仓库:https://github.com/ansible/ansible

版本蓝图:https://docs.ansible.com/ansible/latest/roadmap/index.html(不过2.0以前的版本都被淘汰了,最原始的版本是0.0.1版本,发布与2012年3月9日)

 

同类型工具

Chef、Fabric、Puppet、SaltStack

 

Ansible优点

  • Ansible是采用python进行开发的
  • Ansible包含丰富的内置模块,并且在持续不断的更新
  • Ansible采用去中心化的思想,即不需要客户端

 

Ansible的工作原理

Ansible工具通过调用各种内置的应用模块将指令推送指被管理端进行执行,并在执行完毕之后自动删除产生的临时文件。Ansible根据被管理端不同的系统有不同的依赖,Linux下依赖于ssh协议,Windows下依赖于PowerShell。Ansible需要将自身的秘钥上传至被管理端的秘钥验证文件中,或者通过被管理端的用户密码进行通信;官方推荐使用前面的方式进行操作,首先密码验证并不安全,其次秘钥验证更方便(后面这点仅个人观点哈,如有不同意见直接过滤掉吧)。

 

使用方式

  • CMDB:通过数据库与Ansible结合,通过CMDB直接下发指令调用Ansible工具集完成使用者想要达成的目的(这方式我没用过,还有待研究)
  • API:Ansible除了丰富的内置模块之外,同时官网也提供大量的API,可进行二次开发。(这个我也不会。。。)
  • Ad-hoc:命令集,类似于临时命令。其实官网也把这种方式称之为临时命令,类似于linux下面的伪终端运行命令。
  • Playbook:预先定义好的指令集,类似于linux下面的shell文件。文件内容以yaml、yml、ini格式定义。

 

工具集

工具集即Ansible工作流程中所涉及到的工具。

  • Ad-hoc:上面说过了,临时指令。
  • INVENTORY:主机与组的定义文件,定义内容有:主机名、IP地址、主机组、变量。
  • API:应用程序的编程接口
  • Modules:内置模块
  • Plugins:内置或自定义插件

PS:Playbook只是文件,里面的内容还是调用的上面的工具,来达到自身的目的,它并不是一个工具。

 

作用对象

  • Linux操作主机
  • Windows操作主机(Windows主机只能被作用,不能用于主控端管理)
  • 私有云,如:openstack、vmware
  • 公有云,如:azure
  • 容器技术,如:docker
  • 编排技术,如:k8s

上面只是列出了一部分,我粗粗的看了一下最新的ansible-doc(就是ansible内置的模块),有3387个,刚开始接触这个技术的时候还只有500个左右的样子,2年多涨成这个样子,真是夸张呀

 

Ansible通信发展史

  • Paremiko:最初实现Ansible通信的python库,发展速度远不及OpenSSH。只能在RHEL5/6版本中使用
  • OpenSSH:Ansible1.3版本开始使用的默认通信方式。采用ControlPersist功能,速度比Paremiko更快更可靠
  • 加速模式:对通信速度有极大的提升,比前两者都是呈几何式增长,好像对Ad-hoc不是很友好。

 

Ansible应用场景

  • 应用部署
  • 配置管理
  • 任务流编排

相关推荐