设为首页 收藏本站
查看: 1393|回复: 0

[经验分享] ansible实现自动化运维

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2014-4-22 21:45:20 | 显示全部楼层 |阅读模式
简介
  • 功能强大的自动化运维工具,集合了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:可实现多级指挥;


基本架构
wKiom1NUVw7QQE51AAOihDCa3N4276.jpg
安装方法


# rpm包安装,可在pkgs.org或rpmfind.net上找寻rpm包
yum --nogpgcheck localinstall ansible-1.5.4-1.el6.noarch.rpm
# 或源码编译安装
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
配置文件
/etc/ansible/ansible.cfg # 主配置文件,可不修改
/etc/ansible/hosts # 添加需操作的主机目录

查看各模块的使用方法


ansible-doc [options] [modules]
# 主要选项有:
-l或--list # 列出可用的模块
-s或--snippet #显示指定模块的简略使用方法

使用格式


ansible <host-pattern> [-f forks] [-m module] [-a args]
host-pattern # 可以是all,或者配置文件中的主机组名
-f forks # 指定并行处理的进程数
-m module # 指定使用的模块,默认模块为command
-a args # 指定模块的参数

使用案例


ansible all -m ping # ping操作
ansible webservers -a ‘date’ (可省略-m command) # 执行date命令
ansible dbservers -m copy -a “src=/root/ansible.rpm dest=/tmp/” # 复制文件
ansible all -m cron -a ‘name=”custom job” minute=*/3 day=* month=* weekday=* job=”/usr/sbin/ntpdate 172.16.0.1”’ # 配置crontab任务
ansible all -m group -a “gid=306 system=yes name=mysql” # 增加组和用户
ansible corosync -m yum -a “name=pacemaker state=present” # 通过yum安装程序
ansible all -m service -a “state=started name=httpd enabled=yes” # 配置服务开启启动
# 或利用playbook配置文件yaml批量执行任务:
编写playbook文件,如test.yaml
执行:ansible-playbook test.yaml
注:所谓playbook(俗称“剧本”),就是将批量任务以yaml格式写入文件中,通过ansible-playbook命令一起执行

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
wKiom1NUWD3S_EiHAA15a46_8kc191.jpg




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-18106-1-1.html 上篇帖子: CentOS6.5默认Python版本升级到python2.7.5 下篇帖子: Linux/UNIX系统数据文件和信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表