
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查看模块的使用方法,模块确保”某一行文本”存在于指定的文件中,或者确保从文件中删除指定的”文本”,还可以根据正则表达式,替换”某一行文本”。
下面是根据文本模板信息来更新硬件报告。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)