Ansible是一款极其简单的开源的自动化运维工具,基于Python开发,集合了众多运维工具(puppet, cfengine, chef, func, fabric)的优点。实现了批量系统配置,批量程序部署,批量运行命令等功能。同时Ansible是基于模块工作,其实现批量部署的是ansible所运行的模块。
Ansible其他重要的优势:
跨平台支持:Ansible在物理、虚拟、云和容器环境中为Linux、Windows、UNIX和网络设备提供无代理支持。
人类可读的自动化:Ansible playbook以YAML文本文件的形式编写,易于阅读,有助于确保每个人都理解他们将要做的事情。
对应用程序的完美描述:Ansible playbook可以进行任何更改,并且可以描述和记录应用程序环境的每个细节。
易于管理的版本控制:Ansible剧本和项目是纯文本。它们可以像源代码一样处理,并放在现有的版本控制系统中。
支持动态库存:Ansible管理的机器列表可以从外部资源动态更新,以便随时捕获所有受管服务器的正确的当前列表,无论基础设施或位置如何。
易于与其他系统集成的编排:HP SA、Puppet、Jenkins、Red Hat Satellite,以及存在于环境中的其他系统,都可以被利用并集成到Ansible工作流中。
Ansible工作机制及其特性
Ansible是一款自动化运维工具,基于Python开发,具有批量系统配置, 批量程序部署, 批量运行命令等功能。
其工作机制如下:
用户使用Ansible或Playbook,在服务器中断输入Ansible的Ad-Hoc命令集或Playbook;
Ansible遵循预先编排的规则将Playbooks逐条拆解为Play;
Play组织成Ansible可识别的任务(Task);
Task会调用任务所涉及的所有模块(Module)和插件(Plugin);
读取Inventroy中定义的主机列表;
通过SSH认证(默认)将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果。
其特性如下:
no agents:不需要在被管控主机上安装任何客户端,只需SSH、Python即可,建议Python版本为2.6.6以上;
no server:无服务器端, 使用时直接运行命令即可;
modules in any languages:基于模块工作, 丰富的内置模块,可使用任意语言开发模块;
yaml, not code:使用yaml语言定制剧本playbook,易于管理,API简单明了;
ssh by default:基于SSH工作,整个过程简单、方便、安全,建议使用公钥方式认证;
strong multi-tier solution:可实现多级指挥。