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数据路径
随机推荐
- MongoDB 读写分离——SpringBoot读写分离
application.yml data: mongodb: uri: mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/fecg_d ...
- VS 2019 目标框架中看不到 Net Core 3.X
VS 2019 目标框架中没有 .NET Core 3.X..Net 5.0 https://dotnet.microsoft.com/download/dotnet-core/3.0 Visual ...
- 100天搞定机器学习|Day60 遇事不决,XGBoost
XGBoost 是一种集大成的机器学习算法,可用于回归,分类和排序等各种问题,在机器学习大赛及工业领域被广泛应用.成功案例包括:网页文本分类.顾客行为预测.情感挖掘.广告点击率预测.恶意软件分类.物品 ...
- 用户 IP,里面藏了多少秘密?
大家都知道,要邮寄一封信给正确的收件人,需要提供准确而精细的地址,这个地址需要从国家和城市精确到邮政编码,街道和门牌号码.只有这样,邮局的工作人员才能知道将信送到那里. Internet 上也是如此, ...
- grep 文本搜索工具
参考百度百科 1.简介 grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式 ...
- Codeforces Round #665 (Div. 2) A - D题题解
成功拼手速提前过了AC两题,估计因为这个原因排名挺高的,B题晚上做的时候没绕出来,wa4发... 1401A - Distance and Axis 如果 \(n\) 小 于 \(k\) ,则必须将\ ...
- Codeforces Round #690 (Div. 3) (简单题解记录)
Codeforces Round #690 (Div. 3) 1462A. Favorite Sequence 简单看懂题即可,左边输出一个然后右边输出一个. void solve() { int n ...
- java大纲图解
- iOS Class Guard github用法、工作原理和安装详解及使用经验总结
iOS Class Guard github用法.工作原理和安装详解及使用经验总结 iOS Class Guard是一个用于OC类.协议.属性和方法名混淆的命令行工具.它是class-dump的扩展 ...
- Kafka 社区KIP-405中文译文(分层存储)
原文链接:https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage 译者:Kafka KIP- ...