ansible使用,搭建mongo的replica-set小结
ansible
前言
用到了就总结下吧
常用到的指令
查看ip是否可用
ansible all -m ping
执行
ansible-playbook xxxx.yml
执行,查看日志输出
ansible-playbook xxxx.yml -vvv
查看这个 playbook 的执行会影响到哪些 hosts
ansible-playbook playbook.yml --list-hosts
ansible了解
Ansible
是使用Python
开发的自动化运维工具,如果这么说比较抽象的话,那么可以说Ansible
可以让服务器管理人员使用文本来管理服务器,编写一段配置文件,在不同的机器上执行。
Ansible
的使用需要在目标服务器上添加自己电脑的公钥,设置免密登录。
设置服务器免密登录
添加本机的pub,公钥到目标服务器~/.ssh/authorized_keys
中,然后设置权限chmod 600 /root/.ssh/authorized_keys
变量名的使用
在使用变量之前最好先知道什么是合法的变量名. 变量名可以为字母,数字以及下划线.变量始终应该以字母开头. “foo_port”是个合法的变量名.”foo5”也是. “foo-port”, “foo port”, “foo.port” 和 “12”则不是合法的变量名.
playbooks了解
Playbooks
可用于声明配置,更强大的地方在于,在 playbooks
中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.并且可以同步或异步的发起任务.
在运行 playbook
时(从上到下执行),如果一个 host
执行 task
失败,这个 host
将会从整个 playbook
的 rotation
中移除. 如果发生执行失败的情况,请修正 playbook
中的错误,然后重新执行即可.
modules
具有”幂等”性.重复多次执行playbook
是安全的。
比如对于创建文件夹,如果不存在就创建,存在了就不创建了。
Handlers
在发生改变时执行的操作
Handlers 也是一些 task 的列表,通过名字来引用,它们和一般的 task 并没有什么区别.Handlers 是由通知者进行 notify, 如果没有被 notify,handlers 不会执行.不管有多少个通知者进行了 notify,等到 play 中的所有 task 执行完成之后,handlers 也只会被执行一次.
handlers:
- name: restart memcached
service: name=memcached state=restarted
- name: restart apache
service: name=apache state=restarted
Handlers 最佳的应用场景是用来重启服务,或者触发系统重启操作.除此以外很少用到了.
task
对于playbook,我们一般使用 include 语句引用 task 文件的方法,将playbook进行拆分。
register使用
register
的作用一般用于获取命令输出和判断执行是否成功。
register
可以存储指定命令的输出结果到一个自定义的变量中,我们可以通过访问这个自定义的变量来获取命令的输出,然后判断是否执行成功。
- name: Check than logfile exists
stat: path={{ DATA_PATH }}/mongos/log/mongo.log
register: logfile_start
when: MONGO_SYSYTEMLOG_DESTIANTION == "file"
- name: Create log if missing
file:
state: touch
dest: "{{ DATA_PATH }}/mongos/log/mongo.log"
owner: mongod
group: mongod
mode: 0644
when: ( MONGO_SYSYTEMLOG_DESTIANTION == "file"
and logfile_start is defined
and not logfile_start.stat.exists )
通过判断logfile_start
来判断目标目录是否存在。
set_fact使用
set_fact
用来做变量的赋值。
- name: 注册replicaset_host变量
set_fact:
replicaset_host: []
- name: 循环处理host
set_fact:
replicaset_host: "{{replicaset_host}} + [ '{{ item }}:{{ MONGO_NET_PORT }}' ]"
with_items: "{{ groups['mongo'] }}"
比如上面注册了一个replicaset_host
数组,下面通过with_items
循环对replicaset_host
进行了赋值操作,之后后面的task就可以直接使用这个变量了。
- name: 初始化副本集
mongodb_replicaset:
login_host: localhost
login_port: "{{ MONGO_NET_PORT }}"
login_user: "{{ MONGO_ROOT_USERNAME }}"
login_password: "{{ MONGO_ROOT_PASSWORD }}"
replica_set: mongos
members: "{{ replicaset_host }}"
ansible构建mongo的replicaset
构建的思路:
1、通过rpm安装mongo的包,然后安装依赖的程序
2、配置mongo.service
3、配置mongo.conf
,初始化的mongo是没有账号密码的,所以先初始化一个无需验证的mongo.conf
。配置好之后,重启服务。
4、设置登录的账号密码,之后修改mongo.conf
为需要认证的。重启服务。
5、初始化副本集,设置开机启动。
项目结构:
.
├── deploy-mongo.yml
└── roles
└── mongo
├── defaults // 一些配置信息
│ └── main.yml
├── files // mongo的安装包
│ └── rpms
│ ├── mongodb-org-unstable-mongos-4.1.8-1.el7.x86_64.rpm
│ ├── mongodb-org-unstable-server-4.1.8-1.el7.x86_64.rpm
│ ├── mongodb-org-unstable-shell-4.1.8-1.el7.x86_64.rpm
│ └── mongodb-org-unstable-tools-4.1.8-1.el7.x86_64.rpm
├── handlers // notify重启服务的task
│ └── main.yml
├── tasks
│ ├── auth_initialization.yml
│ ├── authorization.yml
│ ├── configure.yml
│ ├── init_replicaset.yml
│ ├── install_task.yml
│ └── main.yml
└── templates
├── mongodb.service.j2
└── mongod.conf.j2
项目的地址[https://github.com/boilingfrog/ansible-mongo-replicaset-role]
ansible使用,搭建mongo的replica-set小结的更多相关文章
- 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)
原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自 ...
- MongoDB:搭建三节点 Replica Set 环境
今天学习了搭建 MongDB 复制环境,实验环境是在虚拟机上同一系统,并搭建三节点 Replica Set,根据文档上的描述,mongodb 复制配置简单,并且能够自动 failover,这些高级特性 ...
- 【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(三)
关于windows平台搭建Mongo数据库复制集这个话题,我已经在前面写了两篇博客 第一篇: 怎样在windows平台搭建Mongo数据库复制集 第二篇: 数据同步和故障自适应測试 在本篇里面,咱们重 ...
- ansible+playbook 搭建lnmp环境
用三台机器 做ansible+playbook 搭建lnmp环境 IP分配 ansible 主机192.168.202.132 lnmp第一台主机 192.168.202.131 lnmp第一台主机 ...
- Mongodb集群搭建之 Sharding+ Replica Sets集群架构(2)
参考http://blog.51cto.com/kaliarch/2047358 一.概述 1.1 背景 为解决mongodb在replica set每个从节点上面的数据库均是对数据库的全量拷贝,从节 ...
- Mongodb集群搭建之 Sharding+ Replica Sets集群架构
1.本例使用1台Linux主机,通过Docker 启动三个容器 IP地址如下: docker run -d -v `pwd`/data/master:/mongodb -p 27017:27017 d ...
- 用ansible剧本搭建lnmp
首先在主服务器上搭建ansible直接用云yum装就可以, yum -y install ansible 如果copy报错一下的语句 "msg": "Aborting, ...
- Mongo的Replica Sets (复制集)的配置全过程和心得体会
http://blog.csdn.net/bloggongchang/article/details/7272403 一.MongoDB Replica Sets(副本集)简单的说就是有自动故障恢复功 ...
- Ansible自动化搭建及工具集和常见模块、命令详情(重点)
一.ansible介绍 1.ansible简介 官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具. Ansible跟其他IT自动化技术的区别 ...
- 从零搭建mongo分片集群的简洁方法
一.目录 1.mongo路径,config数据路径,shard数据路径
随机推荐
- PPT 图片框架排版万能能公式
图片作用 提升设计感 辅助表达 传递情感 如何选择一张高大上的图片? 星空.地球.城市.海洋.线条.粒子.山脉.壁纸(系统.手机厂商千挑万选的) https://cn.bing.com/images ...
- Xml Entity 实体互转(JAXB)
感觉比 xStream 操作起来复杂些 Xml Entity 实体互转(XStream).但学习成本低些,不需要引用第三方依赖包 需要注意的是 实体中如果加了 getXX 需要在上面加上 @XmlTr ...
- cookie与session简介 django操作cookie django操作session
目录 cookie与session简介 早期cookies 随机字符串解决cookies安全问题 禁止浏览器保存cookies django操作cookie set_cookie set_signed ...
- Ali266首次商用落地,助力优酷码率最高节省40%
阿里云自研编码器Ali266于2022年1月在优酷正式上线,这是已知的业界首个H.266/VVC标准的编码器商用落地项目.经过两个月的实际运行数据显示,开启Ali266后,同等画面清晰度的情况下比原H ...
- ACM | 动态规划-数塔问题变种题型
前言 数塔问题,又称数字三角形.数字金字塔问题.数塔问题是多维动态规划问题中一类常见且重要的题型,其变种众多,难度遍布从低到高,掌握该类型题目的算法思维,对于攻克许多多维动态规划的问题有很大帮助. 当 ...
- 文心一言 VS 讯飞星火 VS chatgpt (181)-- 算法导论13.4 4题
四.用go语言,在 RB-DELETE-FIXUP 代码的哪些行中,可能会检查或修改哨兵 T.nil ? 文心一言: RB-DELETE-FIXUP 是红黑树中的一个操作,用于在删除一个节点后进行必要 ...
- TapTap 算法平台的 Serverless 探索之路
分享人:陈欣昊,TapTap/IEM/AI平台负责人 摘要:本文主要介绍心动网络算法平台在Serverless上的实践. <TapTap算法平台的 Serverless 探索之路> Ser ...
- 8 Englishi 词根
测一测 physical obesity skinny sliny stout skeleton external appearance recede unprecededented feinge e ...
- 【Qt】开源一键代码开光神器,一行代码给你的项目施加祝福,减少Bug
年底啦,没什么项目,想摸鱼划水没见到什么好玩的东西,看到有人分享这个,直接做个库来玩下,之后说不定会嵌到公司的项目里面去.... 效果如下,佛光普照! 输入也只需要一行命令 magic_spells: ...
- Deployment 和 StatefulSets 概述
这篇概述是看文章提到的一段话 xxx is not targeted to be horizontally scalable 引发的,遂整理记录在这里. 起因是有两个应用,一个是无状态的,可以 hor ...