简介
功能强大的自动化运维工具,集合了puppet、cfengine、chef、func、fabric等功能;
能实现多节点发布和远程任务执行等功能,可满足日常自动化运维需求;
特性
No agents:不需要在被管控主机上安装任意客户端;
No server:无服务器端,使用时直接运行命令即可;
Modules in any languages:基于模块工作,可使用任意语言开发模块
YAML,not code:使用yaml语言定制剧本playbook;
SSH by default:基于SSH工作;
Strong multi-tier solution:可实现多级指挥;
基本架构
<a href="http://s3.51cto.com/wyfs02/M00/24/99/wKiom1NUVw7QQE51AAOihDCa3N4276.jpg" target="_blank"></a>
安装方法
1
2
3
4
5
6
7
8
9
10
<code># rpm包安装,可在pkgs.org或rpmfind.net上找寻rpm包</code>
<code>yum --nogpgcheck localinstall ansible-1.5.4-1.el6.noarch.rpm</code>
<code># 或源码编译安装</code>
<code>yum -y </code><code>install</code> <code>python-jinja2 PyYAML python-paramiko python-babel python-crypto</code>
<code>tar</code> <code>xf ansible-1.5.4.</code><code>tar</code><code>.gz</code>
<code>cd</code> <code>ansible-1.5.4</code>
<code>python setup.py build</code>
<code>python setup.py </code><code>install</code>
<code>mkdir</code> <code>/etc/ansible</code>
<code>cp</code> <code>-r examples/* </code><code>/etc/ansible</code>
配置文件
/etc/ansible/ansible.cfg # 主配置文件,可不修改
/etc/ansible/hosts # 添加需操作的主机目录
查看各模块的使用方法
<code>ansible-doc [options] [modules]</code>
<code># 主要选项有:</code>
<code>-l或--list </code><code># 列出可用的模块</code>
<code>-s或--snippet </code><code>#显示指定模块的简略使用方法</code>
使用格式
<code>ansible <host-pattern> [-f forks] [-m module] [-a args]</code>
<code>host-pattern </code><code># 可以是all,或者配置文件中的主机组名</code>
<code>-f forks </code><code># 指定并行处理的进程数</code>
<code>-m module </code><code># 指定使用的模块,默认模块为command</code>
<code>-a args </code><code># 指定模块的参数</code>
使用案例
11
<code>ansible all -m </code><code>ping</code> <code># ping操作</code>
<code>ansible webservers -a ‘</code><code>date</code><code>’ (可省略-m </code><code>command</code><code>) </code><code># 执行date命令</code>
<code>ansible dbservers -m copy -a “src=</code><code>/root/ansible</code><code>.rpm dest=</code><code>/tmp/</code><code>” </code><code># 复制文件</code>
<code>ansible all -m </code><code>cron</code> <code>-a ‘name=”custom job” minute=*</code><code>/3</code> <code>day=* month=* weekday=* job=”</code><code>/usr/sbin/ntpdate</code> <code>172.16.0.1”’ </code><code># 配置crontab任务</code>
<code>ansible all -m group -a “gid=306 system=</code><code>yes</code> <code>name=mysql” </code><code># 增加组和用户</code>
<code>ansible corosync -m yum -a “name=pacemaker state=present” </code><code># 通过yum安装程序</code>
<code>ansible all -m service -a “state=started name=httpd enabled=</code><code>yes</code><code>” </code><code># 配置服务开启启动</code>
<code># 或利用playbook配置文件yaml批量执行任务:</code>
<code>编写playbook文件,如</code><code>test</code><code>.yaml</code>
<code>执行:ansible-playbook </code><code>test</code><code>.yaml</code>
<code>注:所谓playbook(俗称“剧本”),就是将批量任务以yaml格式写入文件中,通过ansible-playbook命令一起执行</code>
ansible实用配置案例
几点重要概念:
playbook的组成:playbook是由一个或多个“play”组成的列表,可以让它们联同起来按事先编排的机制执行;所谓task无非是调用ansible的一个module,而在模块参数中可以使用变量;模块执行是幂等的,这意味着多次执行是安全的,因为其结果均一致;
执行模型:task list中的各任务按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。在顺序运行某playbook时,如果中途发生错误,所有已执行任务都将回滚,因此,在修改playbook后重新执行一次即可;
task组成:每个task都应该有其name,用于playbook的执行结果输出,建议其内容尽可能清晰地描述任务执行步骤。如果未提供name,则action的结果将用于输出;
notify指定handler的执行机制:“notify”这个action可用于在每个play的最后被触发,在notify中列出的操作称为handler,仅在所有的变化发生完成后一次性地执行指定操作;
具体配置文件(corosync.yaml)
理解此文件有助于后期利用ansible自动化安装corosync
<a href="http://s3.51cto.com/wyfs02/M01/24/99/wKiom1NUWD3S_EiHAA15a46_8kc191.jpg" target="_blank"></a>
本文转自 xxrenzhe11 51CTO博客,原文链接:http://blog.51cto.com/xxrenzhe/1400023,如需转载请自行联系原作者