如何使用Ansible Playbooks来自动化多个远程服务器上的复杂任务

如何使用Ansible Playbooks来自动化多个远程服务器上的复杂任务,第1张

如何使用Ansible自动化部署Docker镜像,具体场景如下所示:
1)假如有10个等等已build好的docker镜像(其中有一个镜像是某服务的server,其余都是某服务的agent),统一存放在A机器的镜像仓库里;
2)现在的需求是,需要使用Ansible来自动化的部署某服务为server的docker镜像到B机器上;而服务为agent的docker镜像分别(是分别哦)部署到C、D、E、F、G等机器上;
3)最后,部署好这些docker镜像之后,需要自动run起来;
谢谢,各位大大们。你们有什么好的办法么,如果有示例就更好了。
PS:docker和ansible都刚接触不久,但业务需要这样做。

Mongodb 部署信息 :

os: centos77 x64 配置好NTP,防火墙默认不做任何限制

mongos部署两个点,config3个点,和3个分片集群(每个分片一主一副一仲裁)

注意:因为判断逻辑的问题,不要在任何节点同时运行两种服务的主点

ansible的hosts文件配置:
环境变量全部都在这里设置,需要都写入到ansible的hosts文件

变量中

server_1_ip 都设置为主点

server_2_ip 都设置为副点

server_3_ip 都设置为仲裁节点(config server没有仲裁节点,但是也要写,不然mongos的配置文件模板会报错)

这些IP的配置后面在初始化时会用到

ansible文件夹结构 :

首先是模板文件:
mongodconfmongosj2 mongos的配置文件模板

mongodconfnormalj2 shard server和config server的配置文件模板

mongodservicej2 service文件模板

mongokey 直接手动生成 ,用户MongoDB集群之间的加密连接,记得权限改为600

passwdj2 用于配置MongoDB的root用户名密码

执行:

按提示输入服务器密码

包含了系统优化相关设置,注意中间会重启一次让一些系统优化项生效

注意:因为判断逻辑的问题,不要在任何节点同时运行两种服务的主点

执行 :

如果执行有问题建议多检查变量配置

全部完成后可以验证一下集群环境:

登陆分片集群 :

分片的状态显示正常

登陆mongos

可以看到mongos的状态也正常,分片也全部都添加进去 全部安装至此完成

一键删除MongoDB安装及相关数据,方便重装

一键启动整个MongoDB集群

一键停止所有MongoDB集群

以上就是ansible在MongoDB的一键部署脚本,而且附带了对服务器的优化相关配置

    最近一直在练习ansible。以前觉得ansible繁琐,yml文件不熟悉,很难编写。但是在不断的练习中,笔者逐渐发觉Ansible这个框架真是省心省力。在多次实践中,各个模块其实可以直接ansible-doc查看模块的example,直接复制修改后就可以直接拿来使用。重难点其实还是playbook的逻辑控制上。

    在以前笔者觉得自己编写脚本(ssh后面直接跟命令)来完成服务器群的控制更加方便、简洁。但是熟悉ansible后发现,对于逻辑控制复杂的任务,ansible框架更加方便,特别是在错误判断上,真正的完成批量任务。

    在众多的实践练习中,笔者觉得生成主机hosts文件与cron任务比较常用,先分享如下。

    主机hosts文件一般包含IP地址和主机名,有时可以添加FQDN完全限定域名。

    jinja2模板中使用循环来获取使用主机的三个信息:address、fqdn、hostname。针对模板中的参数信息,可以使用setup模块先生成一个主机的使用信息到文件中,然后less打开生成的文本文件,搜索条目即可得到需要的参数信息。模板内容如下:

    下面的playbook使用template模板来生成主机文件,并将文件放置于dev组的主机 /etc/myhosts中。如果需要所有主机都需要生成,那么删除最后的when即可。

    配置 cron任务就简单了,ansible-doc cron查看模块的使用方法。

    下面是配置一个每两分钟的定时任务来发送logger日志 。配置完成后可以使用ansible test -a 'crontab -l -u bob' 来验证 ,或者查看日志记录 ansible test -a 'grep EX200 /var/log/messages' 。

    ansible-doc lineinfile查看模块的使用方法,模块确保”某一行文本”存在于指定的文件中,或者确保从文件中删除指定的”文本”,还可以根据正则表达式,替换”某一行文本”。

    下面是根据文本模板信息来更新硬件报告。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10855094.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-11
下一篇2023-05-11

发表评论

登录后才能评论

评论列表(0条)

    保存