运维自动化工具Ansible的简单介绍

一、简介

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表达能力强,扩展性好

    YAML的官方网站http://www.yaml.org

相关推荐