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数据路径
随机推荐
- ElasticSearch 实现分词全文检索 - filter查询
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
- PPT 求职应聘:如何利用时间轴去展示
顺序逻辑的梳理 线条 竖直排列 图形结合
- SpringBoot Kafka SSL接入点PLAIN机制收发消息
applycation.yml spring: # https://developer.aliyun.com/article/784990 kafka: bootstrap-servers: XXXX ...
- peewee 操作 sqlite 锁表问题分析
在使用python orm 框架 peewee 操作数据库时时常会抛出以一个异常,具体的报错就是 database is locked 初步了解是因为sqlite锁的颗粒度比较大,是库锁.当一个连接在 ...
- MB51增强
一.在MB51报表中新增列 包含文件RM07DOCS_GENERATED的itab结构中,新增字段 在RM07DOCS中的detail_list子例程中添加查询逻辑 在子例程build_fieldca ...
- Codeforce :466C. Number of Ways (数学)
https://codeforces.com/problemset/problem/466/C 解题说明:此题是一道数学题,若平分分成若干种情况,应当整体(sum)考虑,对sum/3进行分析.它是区分 ...
- 【每日一题】2.合并回文子串 (字符串处理 + 区间DP)
题目链接:Here 遇到这种数据范围较小的计数问题应该优先考虑dp,本题就是如此. 那么应该怎么样考虑转移呢? 首先最后C中的那个价值最大的子串一定是由字符串A的一个区间和字符串B的一个区间合并得到的 ...
- 【驱动】SPI驱动分析(三)-SPI关键数据类型
SPI数据类型 SPI控制器驱动结构体 struct spi_master抽象了控制器硬件,在SoC中的指的就是内部SPI控制器,当向SPI核心层注册一个SPI控制器时就需要提供这样的一个结构体变量. ...
- java进阶(9)--数组
一.基本概念: 1.数字为引用数据类型 2.数组实际上是一个容器,可以同时容纳多个元素 3.数组可存储基本数据类型,也可以存储引用数据类型的数据 4.数组一旦创建.长度不可变.且数组中元素类型必须统一 ...
- 机器学习-线性分类-支持向量机SVM-SMO算法代码实现-15
1. alpha2 的修剪 if y1 != y2 : α1 - α2 = k # 不用算k的具体大小 if k > 0: # 上图的左 下这条线 α2 的区间 (0, c-k) k < ...