运维自动化利器——Ansible基本概念

in 运维编程 with 0 comment

Ansible 是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet,cfengine,chef,func,fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

Ansible 特点

模块化设计,调用特定的模块来完成特定任务,本身是核心组件,短小精悍:
基于Python语言实现,由 Paramiko, PyYAML 和 Jinja2(模板语言) 三个关键模块实现;
需要依靠大量的模块实现批量管理,支持自定义模块;
安全,基于 OpenSSH;
支持 playbook 编排任务;
幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况;
无需代理不依赖 PKI(无需ssl);
可使用任何编程语言写模块;
YAML 格式,编排任务,支持丰富的数据结构;
较强大的多层解决方案……


主要组成部分

ansible工作原理.png

Inventory:Ansible 管理主机清单,存放在 /etc/ansible/hosts
Modules:Ansible执行命令的功能模块,多个命令的组合,多数为内置的核心模块,也可自定义;

ansible-doc -l  <<< 列出模块列表
ansible-doc -s [Module]  <<< 查看模块用法

API: 供第三方程序调用的应用程序编程接口
Plugins:模块功能的补充,如连接类型的插件,循环插件,变量插件,过滤插件等,该功能不常用

相关文件

/etc/ansible/ansible.cfg    主配置文件,配置ansible工作特性
/etc/ansible/hosts          主机清单文件
/etc/ansible/roles          角色目录

程序指令

/usr/bin/ansible             主程序,临时命令执行工具
/usr/bin/ansible-doc         查看配置文档,模块功能查看工具
/usr/bin/ansible-playbook    定制自动化任务,编排剧本工具
/usr/bin/ansible-galaxy      下载/上传优秀代码或者Roles模块的官网平台
/usr/bin/ansible-vault       文件加密工具
/usr/bin/ansible-console     基于Console界面与用户交互的执行工具
Comments are closed.