首页 > 代码库 > Linux菜鸟升级利器之ansible

Linux菜鸟升级利器之ansible

一、absible是什么?

       ansible是一款简单的、开源的自动化管理工具。它通过Openssh工作,没有服务器;并且被管理的客户端上面并不需要安装什么客户端软件或启动什么守护进程,没有客户端;扩展模块可以使用任何语言编写;命令自动传输到管理机执行,并返回结果;

二、安装ansible

安装ansible需要使用Fedora的EPEL源,所以要先配置好yum的epel源,在yum源文件中添加:

[base1]
name=epel
baseurl=http://dl.fedoraproject.org/pub/epel/6/x86_64/
gpgcheck=0

   ⑴使用yum安装

      直接安装(版本是1.5.3):

# yum -y install ansible

   ⑵编译安装

      如果需要想要使用更新的版的话,可以使用yum安装(依然需要yum的epel源):

# yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto
# tar xf ansible-1.5.4.tar.gz
# cd ansible-1.5.4
# python setup.py build
# python setup.py install
# mkdir /etc/ansible
# cp -r examples/* /etc/ansible

三、简单应用

       ansible的被管理机管理机需要通过ssh信任控制机,即将控制机的ssh证书发给被管理机,具体命令如下:

# ssh-keygen -t rsa -P ‘‘
# ssh-copy-id -i .ssh/id_rsa.pub root@hostname

⑴语法格式:

ansible <host-pattern> [-f forks] [-m module_name] [-a args]
//<host-pattern> :管理机的模式,需要在/etc/ansible/hosts中定义
//[ -m module_name ] 模块名称,默认是command(可省略)
//可以使用“ansible-doc -l”查看可以使用的模块

    ⑶简例

       1、编辑/etc/ansible/hosts文件,配置被管理机wKiom1NjulChO5_bAABxh-N5UmE372.jpg

       注意:由于测试环境下,没有配置dns,所以应该在主机的/etc/hosts下添加相应条目(ip hostname

       2、测试被管理机的连通性wKioL1NjvErxG1obAADZXTG_AFg757.jpg

       3、为被管理机安装httpdwKiom1NjvUOx7IdQAAH_GcZgNkk610.jpg

四、ansible playbook

       ansible可以使用playbook。playbook是由一个或多个“play”组成的列表,也可以说它就是一个task的集合。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让它们联同起来按事先编排的机制完成指定的任务计划。

使用格式:

ansible-playbook playbook_name.yaml

       playbook的编写要遵守YAML文件规范。对与YAML有兴趣的童鞋可以自行查找资料。我们通过一个例子,来说明playbook的具体应用格式:

heartbeat.yaml  ##playbook名,非脚本内容
- hosts: test
//指定被管理机组,如果有多个组,组间需要用冒号分隔
  remote_user: root
//指定在被管理机上面执行该任务的用户
  tasks:
//任务
      - name: ensure heartbeat latest version #任务名
        yum: name=heartbeat state=present  #指定模块、操作
      - name: authkeys configure file   #任务名
        copy: src=http://www.mamicode.com/root/hb_conf/authkeys dest=/etc/ha.d/authkeys  #操作>

   以上只是ansible的基本用法,实际生产环境中,有更多更高效的用法等待大家开发!