ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:让我们自动化部署APP;自动化管理配置项;自动化的持续交付;自动化的(AWS)云服务管理。
所有的这几个目标本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。就像我之前有介绍过的Fabric,以及我们基于Fabric开发的自动化应用部署的工具: Essay 。都是做了这么个事——批量的在远程服务器上执行命令 。
那么fabric和ansible有什么差别呢?简单来说fabric像是一个工具箱,提供了很多好用的工具,用来在Remote执行命令,而Ansible则是提供了一套简单的流程,你要按照它的流程来做,就能轻松完成任务。这就像是库和框架的关系一样。
当然,它们之间也是有共同点的——都是基于 paramiko 开发的。这个paramiko是什么呢?它是一个纯Python实现的ssh协议库。因此fabric和ansible还有一个共同点就是不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。
二、安装及初步使用
2.1、编译安装,本处使用yum安装
[root@localhost ~]# yum install -y ansible
说明:如果想要yum安装的话,请配置epel源
2.2、准备配置文件
修改/etc/ansible/hosts文件
[webservers]
172.16.130.2
172.16.130.3
可以用主机名也可以用ip地址
可以定于多个
2.2、简单应用
ansible通过ssh实现配置管理、应用部署、任务执行等功能,因此,需要事先配置ansible端能基于密钥认证的方式联系各被管理节点。
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
例如:要查看两台机器的时间
[root@localhost ansible]# ansible all -a "date"
192.168.1.201 | success | rc=0 >>
Fri Mar 28 16:02:25 CST 2014
192.168.1.200 | success | rc=0 >>
Sat Apr 19 20:55:25 CST 2014
-m module:默认为command
ansible-doc 查看ansible的模块
-l 列出所有的ansible模块
-s 列出该模块的相关指令
2.3、YAM
YAML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822等。Clark Evans在2001年在首次发表了这种语言,另外Ingy Net与Oren Ben-Kiki也是这语言的共同设计者。
YAML Ain't Markup Language,即YAML不是XML。不过,在开发的这种语言时,YAML的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。其特性:
YAML的可读性好
YAML和脚本语言的交互性好
YAML使用实现语言的数据类型
YAML有一个一致的信息模型
YAML易于实现
YAML可以基于流来处理
YAML表达能力强,扩展性好