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. Docker cp 将宿主机上的文件复制到容器中

    [root@localhost ~]# docker cp /opt/web/docker_cp.txt tomcat9093:/usr/local/apache-tomcat-9.0.31/ [ro ...

  2. Kubernetes(K8S) Pod 介绍

    Pod 是 k8s 系统中可以创建和管理的最小单元, 是资源对象模型中由用户创建或部署的最小资源对象模型, 也是在 k8s 上运行容器化应用的资源对象, 其他的资源对象都是用来支撑或者扩展 Pod 对 ...

  3. No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc

    No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc ...

  4. 【HZERO】定时任务

  5. 【Vue CLI】手把手教你撸插件

    本文首发于 vivo互联网技术 微信公众号链接:https://mp.weixin.qq.com/s/Rl8XLUX7isjXNUmbw0-wow作者:ZhuPing 现如今 Vue 作为主流的前端框 ...

  6. 3 分钟创建 Serverless Job 定时获取新闻热搜

    不用掏手机,不用登微博,借助 SAE 定时任务就可以实现每小时获取实时新闻热搜!SAE 场景体验火热开启中,参与还可领好礼! Job 作为一种运完即停的负载类型,在企业级开发中承载着丰富的使用场景.S ...

  7. 硬核调试实操 | 手把手带你实现 Serverless 断点调试

    导读:在应用开发过程中,或者开发完成后,若出现执行结果不符合我们的预期时,通常需要进行一定的调试工作.但是在 Serverless 架构下,调试工作往往会受到一些环境因素限制,如所开发的应用在本地是比 ...

  8. 简单讲透Mac环境下多版本python的环境变量设置,仅对小白生效

    windows下设置多版本的python管理相对容器,一切都是可视化的,但linux和mac下的python多版本对于小白来说,可能就没那么容易理解了. python多版本安装的问题 假如,首次安装了 ...

  9. Vue插件—vant当中van-list的使用

    https://www.cnblogs.com/xbxxf/p/12889843.html 注意:父级元素不能加overflow:auto: 1 getPendingWorkList() { 2 co ...

  10. json 解析:marshal 和 unmarshal

    Go 使用 encoding/json 包的 marshal 和 unmarshal 实现 json 数据的编解码.分别记录如下: 1. marshal 定义结构体: type OCP struct ...