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文件,配置被管理机
注意:由于测试环境下,没有配置dns,所以应该在主机的/etc/hosts下添加相应条目(ip hostname)
四、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=/root/hb_conf/authkeys dest=/etc/ha.d/authkeys #操作 - name: authkeys mode 600 #任务名 file: path=/etc/ha.d/authkeys mode=600 #操作 notify: - restart heartbeat - name: ha.cf configure file copy: src=/root/hb_conf/ha.cf dest=/etc/ha.d/ha.cf notify: //notify依然是一个action,这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成后一次性地执行指定操作。在notify中列出的操作称为handler,也即notify中调用handler中定义的操作。 - restart heartbeat handlers: //handlers用于定义当关注的资源发生变化时采取一定的操作;实质上handler是task列表,这些task与前面的task并没有本质上的不同 - name: restart heartbeat service: name=heartbeat state=restarted
以上只是ansible的基本用法,实际生产环境中,有更多更高效的用法等待大家开发!