在某个下午,测试同事突然找过来说,之前测试服务器搭的几套oracle数据库忘记部署删除归档脚本了,要让小编都给部署一下。
数了数,有接近十套呢,一部部登陆上去,部署一个删归档脚本,然后再到crontab里面去,设置定时任务。简单是简单,但是在于假如需部署的机器有100套,那这种重复性劳动可就太花时间了。
正好,还真有这么一个自动化运维工具ansible
什么是ansible呢?
Ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建。
**了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力。
1.安装ansible
在一般的情况下,我们只需在 控制服务器安装 Ansible 即可。被控端需要安装与主控端同版本python2 (version 2.6 or later) 或者 Python 3 (version 3.5 or later),及ssh依赖包。我们这里使用yum来安装一下ansible:
2.编辑ansible的主机清单文件
这里的192.168.238.5[1:7]写法是一个可以偷懒的地方,万一有一组ip后缀是1到100,要真的写满100行,不仅不够优雅也显得麻烦不是。
下图为控制主机与被控主机简单示意图:
3.建立与被控制主机的互信关系
这样就可以实现免密码登录了。
4.使用ansible的ad-hoc命令行模式推送删归档脚本
我们这里直接将删归档内容作为文本写到目标环境下,并且使用{{sid}}的写法调用主机清单文件中的sid变量参数,再设置脚本的权限及用户:
执行完命令后,我们可以查看到目标环境的/tmp/del_arch.sh脚本内容如下:
5.使用ansible的cron模块来增加crontab定时任务
我们这里写法如下,设置在每天0点03分执行删归档脚本:
我们可以观察到目标库crontab:
6.我们可以使用ansible的剧本(playbook)来更优雅的执行任务
我们来执行这个yaml剧本,结果如下:
小结:
只要跑这么一个yaml文件,所有的主机就能按照剧本一步一步的往下执行,最终简单高效的实现我们的目标。
运维工作有太多的简单却又高度重复的工作。这些工作看似容易,但是一个人不停重复地做下去不仅让人耗时耗力还容易出错。适时恰当地使用一些自动化工具此时就能够明显地解放人力加快工作效率了。
参考文档:
http://ansible.com.cn/docs
美创运维中心数据库服务团队拥有Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师 ,著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。目前运维各类数据库合计2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。
来源:freebuf.com 2020-06-05 14:55:05 by: database
请登录后发表评论
注册