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 将会从整个 playbookrotation 中移除. 如果发生执行失败的情况,请修正 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小结的更多相关文章

  1. 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)

    原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica  Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自 ...

  2. MongoDB:搭建三节点 Replica Set 环境

    今天学习了搭建 MongDB 复制环境,实验环境是在虚拟机上同一系统,并搭建三节点 Replica Set,根据文档上的描述,mongodb 复制配置简单,并且能够自动 failover,这些高级特性 ...

  3. 【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(三)

    关于windows平台搭建Mongo数据库复制集这个话题,我已经在前面写了两篇博客 第一篇: 怎样在windows平台搭建Mongo数据库复制集 第二篇: 数据同步和故障自适应測试 在本篇里面,咱们重 ...

  4. ansible+playbook 搭建lnmp环境

    用三台机器 做ansible+playbook 搭建lnmp环境 IP分配 ansible 主机192.168.202.132 lnmp第一台主机 192.168.202.131 lnmp第一台主机 ...

  5. Mongodb集群搭建之 Sharding+ Replica Sets集群架构(2)

    参考http://blog.51cto.com/kaliarch/2047358 一.概述 1.1 背景 为解决mongodb在replica set每个从节点上面的数据库均是对数据库的全量拷贝,从节 ...

  6. Mongodb集群搭建之 Sharding+ Replica Sets集群架构

    1.本例使用1台Linux主机,通过Docker 启动三个容器 IP地址如下: docker run -d -v `pwd`/data/master:/mongodb -p 27017:27017 d ...

  7. 用ansible剧本搭建lnmp

    首先在主服务器上搭建ansible直接用云yum装就可以, yum -y install ansible 如果copy报错一下的语句 "msg": "Aborting, ...

  8. Mongo的Replica Sets (复制集)的配置全过程和心得体会

    http://blog.csdn.net/bloggongchang/article/details/7272403 一.MongoDB Replica Sets(副本集)简单的说就是有自动故障恢复功 ...

  9. Ansible自动化搭建及工具集和常见模块、命令详情(重点)

    一.ansible介绍 1.ansible简介 官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具. Ansible跟其他IT自动化技术的区别 ...

  10. 从零搭建mongo分片集群的简洁方法

    一.目录 1.mongo路径,config数据路径,shard数据路径

随机推荐

  1. SpringBoot 记录 access.log 日志

    如何将不同业务模块产生的日志 分多文件记录 Tomcat 中有个日志 loca_access.log 可以记录每个接口的请求耗时,用于做性能等分析比较有用,SpringBoot里,默认不记录这个日志, ...

  2. 【Java爬虫】如何通过 API 递归分页爬取网页数据

    前言 在最近的互联网项目开发中,需要获取用户的访问ip信息进行统计的需求,用户的访问方式可能会从微信内置浏览器.Windows浏览器等方式对产品进行访问. 当然,获取这些关于ip的信息是合法的.但是, ...

  3. Linux 下运行.NET 6 7 8 程序遇到的两个问题

    一. /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的解决办法 1. 下载 libstdc++.so.6.0.21 文件 注意区分 ...

  4. javascript yield

    代码: function delay(time) { return new Promise(function (resolve, reject) { setTimeout(() => { res ...

  5. 关于 Jupyter 导出 PDF/Latex 格式报错的简单解决方法

    利用 Jupyter 提供的 Print Preview 功能,然后鼠标右键点击打印,就能导出PDF了,而且不会出问题,中文,图片都可以

  6. JSP 学习笔记 | 三、EL 表达式简述

    前文:JSP 学习笔记 | 二.JSP 脚本 & 案例实现 & 缺点分析 前文:JSP 学习笔记 | 一.JSP 原理理解 概述 EL(全称Expression Language )表 ...

  7. vue 状态管理 一、状态管理概念和基本结构

    系列导航 vue 状态管理 一.状态管理概念和基本结构 vue 状态管理 二.状态管理的基本使用 vue 状态管理 三.Mutations和Getters用法 vue 状态管理 四.Action用法 ...

  8. 腾讯视频客户端 MP4 下载

    腾讯视频直接使用客户端下载视频,得到的是 QLV 文件,这种加密视频文件只能通过腾讯视频客户端播放.最新版的腾讯客户端下载的 QLV 文件,使用各种转码软件都不能正常转码.从服务器下载的 TS 文件一 ...

  9. 基于python开发的口罩供需平台

    基于python开发的口罩供需平台 预览地址:https://i.mypython.me 开发语言:python/django 意见反馈:net936艾特163.com

  10. SD Host控制器的系统集成

    控制器集成需求 SD Host可以从外部读取数据存储到SRAM和eFlash或者可以从内部读取数据输出到外部存储 AHB Bus slave接口用于配置 master接口作为主设备,DMA可以控制总线 ...