自动化运维工具有很多,从实现的功能、维护的成本、使用的系统来选择,几种常用运维工具比较:
Puppet基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱
SaltStack基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量级,配置语法使用 YAML,使得配置脚本更简单
Ansible基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用YAML 及 Jinja2模板语言,更强的远程命令执行操作。
so. Ansible!
Ansible介绍与特点
ansible是一款自动化运维工具,基于Python开发,可以实现批量系统设置、批量程序部署、批量执行命令等功能。
特点如下:
Ansible完全基于Python开发,要求python的版本为2.6以上。
Ansible丰富的内置模块,近600个模块完全满足日常功能所需
Ansible默认通过SSH协议管理机器,因此,客户端无需任何配置,管理端配置好后即可使用。
Ansible的应用环境:
应用代码自动化部署
系统管理配置自动化
支持持续交付自动化
支持云计算,大数据平台环境
批量任务执行可以写成脚本,不用分发到远程就可以执行
支持非root用户管理操作,支持sudo
使用python编写,维护更简单
Ansible基本架构
Ansible的任务执行流程
任务执行流程:
按上往下顺序执行:
1) 读取配置:读取ansible的配置文件
2) 抓取被管理的所有机器或分组列表:从主机列表清单(对应hosts文件)
3) 使用host-pattern过滤机器列表:过滤哪些机器做什么操作
4) 根据参数设置执行模块和配置:从modules目录下动态读取或模块,根据模块功能执行对远端主机的操作
5) Runner执行并返回:具体分为两步:Connection环节-定义连接方式、Action阶段-给出机器列表,然后对变量/文件等资源获取
6) 输出,结束:把执行结果反馈会管理端
工作原理:
管理端对远端主机管理(执行命令或脚本),远端主机将执行结果反馈管理端
具体:
首先管理端需要安装ansible工具;
其次配置ansible配置文件(/etc/ansible/ ansible.cfg)和定义被控制的主机或分组列表(/etc/ansible/hosts)并对相关主机变量进行定义;
然后ansible执行模块,将管理端本地执行路径(~/.ansible/tmp)将操作执行(命令或脚本),通过local/ssh/paramiko方式传到远端主机用户目录下(~/.ansible/tmp)并执行;
最后将执行结果反馈至管理端
原文:https://www.cnblogs.com/liuxc83/p/12382075.html