ansible 部署redis集群(三台主机6节点3主3备)

ansible 部署 redis集群

由于文件比较大直接放百度盘
链接:https://pan.baidu.com/s/1PadPEXDerpE2ocTQMtwzxQ
提取码:s8xt

运行方式

  ansible-playbook ./site.yml  -i ./hosts 
  运行之前需要修改2个地方
  1  hosts 修改对应的主机IP 以及密码
  2  group_vars/redis.yml 里面的 redis_cluster_ip 

目录结构

目录结构

文件详解

cat ./site.yml 
---
- hosts: redis
  gather_facts: yes
  roles:
    - redis
    首先看入口文件
    --  hosts主机为redis集群
    -- gather_factes: 是否手机远程主机的信息 这里肯定要收集因为后期会用到

进入roles/redis/tasks
查看main.yml

cat ./main.yml 
- include: ruby.yml
- include: install_redis.yml

发现先运行ruby.yml 然后运行 install_redis.yml

仅需查看ruby.yml

cat ./ruby.yml 
---

##第一步 先把文件拷贝到对应的目录下
- name: unarchive_ruby
  unarchive:
    src: rvm.tar.gz
    dest: /usr/local/
  when: master is defined
  tags:
    - unarchive_ruby
##第二部 删除老的ruby
- name: remove_old_ruby
  yum:
    name: ruby
    state: absent
  when: master is defined
  tags:
    - remove_old_ruby

#第三步 创建软连接
- name: link_ruby
  file:
    src: /usr/local/rvm/archives/rvm-1.29.8/rubies/ruby-2.4.6/bin/ruby
    dest: /usr/bin/ruby
    state: link
  when: master is defined
  tags:
    - link_ruby

#第四步 创建gem的软连接
- name: link_gem
  file:
    src: /usr/local/rvm/archives/rvm-1.29.8/rubies/ruby-2.4.6/bin/gem
    dest: /usr/bin/gem
    state: link
  when: master is defined
  tags:
    - link_gem
cat ./install_redis.yml 
---
#创建redis用户
- name: add_redis_user
  user:
    comment: "add redis user"
    name: redis
    create_home: no
    shell: /sbin/nologin
    state: present
  tags:
    - add_redis_user

#创建目录 变了在group_vars里面
- name: mkdir_redis_dir
  file:
    path: /data/redis-{{item.0.port}}/{{ item.1 }}
    state: directory
    owner: redis
    group: redis
    mode: 0755
  with_nested:
    - "{{ redis_list }}"
    - "{{ redis_dir }}"
  tags:
    - mkdir_redis_dir

# 拷贝二进制文件到对应的bin下面
- name: copy_redis_bin
  copy:
    src: "{{ item.1 }}"
    dest: /data/redis-{{ item.0.port }}/bin
    owner: redis
    group: redis
    mode: 0755
  with_nested:
    - "{{ redis_list }}"
    - "{{ redis_bin }}"
  tags:
    - copy_redis_bin

#拷贝配置文件
- name: copy_redis_conf
  template:
    src: redis.conf.j2
    dest: /data/redis-{{ item.port }}/conf/redis.conf
    owner: redis
    group: redis
  with_items:
    - "{{ redis_list }}"
  tags:
    - copy_redis_conf


# 加入系统启动项
- name: add_redis_systemd
  template:
    src: redis.service.j2
    dest: /etc/systemd/system/redis-{{ item.port }}.service
  with_items:
    - "{{ redis_list }}"
  tags:
    - add_redis_systemd


#启动redis
- name: start_redis_service
  systemd:
    name: redis-{{ item.port }}
    daemon_reload: yes
    enabled: yes
    state: restarted
  with_items:
    - "{{ redis_list }}"
  tags:
    - start_redis_service

#ruby安装redis
- name: gem_install_redis
  shell: gem install redis
  when: master is defined
  tags:
    - gem_install_redis

#拷贝添加集群脚本
- name: copy_script_file
  template:
    src: add_cluster.sh
    dest: /tmp
    owner: redis
    group: redis
    mode: '0755'
  when: master is defined
  tags:
    - copy_script_file


#安装expect命令
- name: install_expect
  yum: 
    name: expect
    state: latest
  when: master is defined
  tags: 
    - install_expect


# 初始化redis集群
- name: init_redis_cluster
  shell: /tmp/add_cluster.sh
  when: master is defined
  tags:
    - init_redis_cluster


# 如果安装失败。删除目录
#- name: remove|dir
#  file:
#    path: /data
#    state: absent
#  tags:
#    - remove_dir
#

查看需要的原文件

[root@mongodb1 files]# ll
total 158744
-rw-r--r-- 1 root root     57344 Jul 31  2019 redis-4.1.2.gem
-rw-r--r-- 1 root root   2451064 Jul 31  2019 redis-benchmark
-rw-r--r-- 1 root root   5774912 Jul 31  2019 redis-check-aof
-rw-r--r-- 1 root root   5774912 Jul 31  2019 redis-check-rdb
-rw-r--r-- 1 root root   2617152 Jul 31  2019 redis-cli
-rw-r--r-- 1 root root   5774912 Jul 31  2019 redis-sentinel
-rw-r--r-- 1 root root   5774912 Jul 31  2019 redis-server
-rw-r--r-- 1 root root     65991 Jul 31  2019 redis-trib.rb
-rw-r--r-- 1 root root 134250866 Aug  3 02:13 rvm.tar.gz

查看hosts文件。 里面的信息为需要安装redis的主机信息 master=true 要定义 后续需要用

cat  hosts 
[redis]
wyl01   ansible_ssh_host=192.168.190.130   ansible_ssh_pass=123456  master=true
wyl02   ansible_ssh_host=192.168.190.131   ansible_ssh_pass=123456 
wyl03   ansible_ssh_host=192.168.190.132   ansible_ssh_pass=123456

[redis:vars]
mport=7000
sport=7001

查看变量情况

cat  redis_inner3_cluster/group_vars/redis.yml 
---
##需要注意这个用法,其实- name 这里只是注释而且 当然也可以被调用,主要是用下面的port
redis_list:
  - name: redis_master_info
    port: 7000
  - name: redis_slave_info
    port: 7001
  
redis_dir:
  - bin
  - conf
  - pid
  - data
  - log


redis_bin:
  - redis-benchmark
  - redis-check-aof
  - redis-check-rdb
  - redis-trib.rb
  - redis-cli
  - redis-sentinel
  - redis-server

redis_cluster_ip:
 - 192.168.79.128
 - 192.168.79.129
 - 192.168.79.130
原文地址:https://www.cnblogs.com/ZFBG/p/13429733.html