Ansible基本介绍
Posted guge-94
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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应用场景
- 应用部署
- 配置管理
- 任务流编排
以上是关于Ansible基本介绍的主要内容,如果未能解决你的问题,请参考以下文章
Ansible自动化运维工具Ansible常用模块的基本使用
Ansible基本介绍并在CentOS7上安装Ansible且实现免交互管理