是什么
Ansible简单的说是一个配置管理系统(configuration management system)。你只需要可以使用ssh访问你的服务器或设备就行,它也不同于其他工具,因为它使用推送的方式,而不是像puppet等那样使用拉取安装agent的方式。
能做什么
ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。
比如:同时在100台服务器上安装nginx服务,并在安装后启动它们。
比如:将某个文件一次性拷贝到100台服务器。
比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。
特性
模块化:调用特定的模块,完成特定任务
有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块
支持自定义模块
基于Python语言实现
部署简单,基于python和SSH(默认已安装),agentless
安全,基于OpenSSH
支持playbook编排任务
幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
无需代理不依赖PKI(无需ssl)
可使用任何编程语言写模块
YAML格式,编排任务,支持丰富的数据结构
较强大的多层解决方案
架构
主要组成部分
1、playbooks
任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YAML文件。
2、Inventory
Ansible管理主机的清单/etc/ansible/hosts
3、modules
ansible执行命令的功能模块,多数为内置的核心模块,也可以自定义,ansible-doc -l可查看模块。
4、plugins
模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等
5、API
供第三方程序调用的应用程序编程接口
6、ansible
ansible命令工具,其为核心执行工具。