自动化运维工具ansible实战第四章一键部署msql主从,redis主从,mongodb主从

Posted Linux蛋蛋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化运维工具ansible实战第四章一键部署msql主从,redis主从,mongodb主从相关的知识,希望对你有一定的参考价值。

本次实战环境为ubuntu系统,线上测试了两三天,终于全部测试通过了
现在分享给需要的小伙伴

角色ip
ansible管理节点192.168.1.14
master节点192.168.1.30
slave节点192.168.1.31

ansble到每个节点配置免密登录
在这里插入图片描述
二级目录
在这里插入图片描述
分别执行安装,配置主从等功能

hosts主机清单配置如下,按功能分组
在这里插入图片描述
下面以其中一个部署具体说明
在这里插入图片描述
#六个任务模块都是如此配置

root@zhangfan:~/ansible# cat  01-mysql_install.yml 
---
- hosts: mysql
  gather_facts: no

  roles:
  - mysql_install

#查看初始化脚本
cat files/mysql-passwd.sh

#!/bin/bash
#初始化密码
systemctl restart mysqld.service
/usr/local/mysql/bin/mysql -e "update mysql.user  set  authentication_string=password('root')  where user='root' and host='localhost';" 
/usr/local/mysql/bin/mysql -e "flush privileges;"  
sed -i '/skip-grant-tables/d'  /etc/my.cnf

/usr/local/mysql/bin/mysql -uroot -proot --connect-expired-password  -e   "alter  user    user()  identified by 'root';"

root@zhangfan:~/ansible/roles/mysql_install# cat files/sources.list

#配置阿里源
deb http://mirrors.aliyun.com/ubuntu focal main restricted
deb http://mirrors.aliyun.com/ubuntu focal-updates main restricted
deb http://mirrors.aliyun.com/ubuntu focal universe
deb http://mirrors.aliyun.com/ubuntu focal-updates universe
deb http://mirrors.aliyun.com/ubuntu focal multiverse
deb http://mirrors.aliyun.com/ubuntu focal-updates multiverse
deb http://mirrors.aliyun.com/ubuntu focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu focal-security main restricted
deb http://mirrors.aliyun.com/ubuntu focal-security universe
deb http://mirrors.aliyun.com/ubuntu focal-security multiverse

主任务文件如下

---
- name: "01删除旧源"
  file: dest=/etc/apt/sources.list state=absent

- name: "02安装阿里源"
  copy: src=sources.list  dest=/etc/apt

- name: "copy mysql-passwd.sh"
  copy: src=mysql-passwd.sh dest=/tmp

- name: ceshi
  debug: msg={{ mysql_version }}

- name: "下载mysql源码包"
  get_url: 
    url: https://downloads.mysql.com/archives/get/p/23/file/{{ mysql_version }}-linux-glibc2.12-x86_64.tar.gz
    dest: /tmp/{{ mysql_version }}-linux-glibc2.12-x86_64.tar.gz
    force: yes
    validate_certs: no
- name: "03更新源"
  shell: apt  update   ||  apt  upgrade  &&
         tar -xf  /tmp/{{mysql_version}}-linux-glibc2.12-x86_64.tar.gz   -C /tmp  &&
         mv /tmp/{{ mysql_version }}-linux-glibc2.12-x86_64  {{ mysql_dir }} &&
         mkdir -p /usr/local/mysql/data  &&
         mkdir -p /usr/local/mysql/logs  

- name: "04安装mysql依赖包"
  apt: name={{ item }} state=present
  with_items:
    - cmake
    - bison
    - build-essential
    - libncurses5-dev
    - libssl-dev
    - pkg-config
    - libncurses5

- name: "05编译安装mysql"
  shell: cd  {{ mysql_dir }}  &&  
         groupadd mysql &&  useradd -r -g mysql -s /bin/false mysql &&
         nohup {{ mysql_dir }}/bin/mysqld --initialize --user=mysql --basedir={{ mysql_dir }} --datadir={{ mysq_dir_date }}

  
- name: "07-copy主配置文件"
  template: src=my.cnf.j2  dest=/etc/my.cnf  backup=yes
  #  notify:
  #    - restart mysqld

- name: "08-配置启动mysql服务"
  shell: cp {{ mysql_dir }}/support-files/mysql.server  /etc/init.d/mysqld        &&
         cp {{ mysql_dir }}/support-files/mysql.server  /usr/lib/systemd/system/  &&
         chmod +x /etc/init.d/mysqld && update-rc.d mysqld defaults &&
         echo  'PATH=/usr/local/mysql/bin:$PATH\\n' >> /etc/profile  &&
         export PATH=/usr/local/mysql/bin:$PATH 

- name: "09-启动mysql"
  systemd:
    name: mysqld
    enabled: yes
    state: restarted

- name: "10-创建mysql密码"
  shell: /bin/sh /tmp/mysql-passwd.sh

模板本文件
root@zhangfan:~/ansible/roles/mysql_install# cat templates/my.cnf.j2


[client]
port={{ mysql_port }}
default-character-set=utf8
socket=/tmp/mysql.sock

[mysql]
no-auto-rehash

[mysqld]
basedir={{ mysql_dir }}
port={{ mysql_port }}
datadir={{ mysq_dir_date }}
socket=/tmp/mysql.sock
max_connections=2000
default-storage-engine=INNODB
max_allowed_packet=16M
innodb_buffer_pool_size=128M

explicit_defaults_for_timestamp=true

skip-grant-tables

这里配置了免密登录 所以file下就不用

cat vars/main.yml 
---
#配置变量
mysql_version: mysql-5.7.33
mysql_dir: /usr/local/mysql
mysq_dir_date: /usr/local/mysql/data
mysql_port: 3306
mysql_user: root
mysql_passwd: root

开始部署

ansible-playbook -i hosts   01-mysql_install.yml

在这里插入图片描述
运行完成后无报错说明部署成功
然后开始部署msql主从,一样的原理

 ansible-playbook -i hosts   02-mysql_slave.yml

分享下mysql主从的主配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
mongodb和redis部署主从也是一样的原理
相应资源有需要可以找我拿去
部署方法如下

1.0目录结构如图所示

在这里插入图片描述

2.0修改配置

root@zhangfan:~/ansible# cat  hosts 
[mysql]
192.168.1.30
192.168.1.31
[mysql_master]
192.168.1.30
[mysql_slave]
192.168.1.31

在这里插入图片描述

3.0配置参数变量

cat group_vars/all

mysql_version: mysql-5.7.33
mysql_dir: /usr/local/mysql
mysq_dir_date: /usr/local/mysql/data
mysql_port: 3306
mysql_user: root
mysql_passwd: root

mysql_master_user: yunding
mysql_master_pass: 123456
mysql_master_ip: 192.168.1.30
mysql_slave_ip: 192.168.1.31

redis_port: 6379
redis_master: 192.168.1.30
redis_slave: 192.168.1.31
redis_pass: 123456

mongodb_ip: 192.168.1.30
mongodb_port: 27017

4.0开始部署

ansible-playbook -i hosts 01-mysql_install.yml
ansible-playbook -i hosts 02-mysql_slave.yml
ansible-playbook -i hosts 03-redis_install.yml
ansible-playbook -i hosts 04-redis_slave.yml
ansible-playbook -i hosts 05-mongodb_install.yml
ansible-playbook -i hosts 06-mongodb_slave.yml

以上是关于自动化运维工具ansible实战第四章一键部署msql主从,redis主从,mongodb主从的主要内容,如果未能解决你的问题,请参考以下文章

Ansible自动化运维实战在Jumpserver平台使用Ansible管理服务器

自动化运维工具Ansible实战简介和部署

自动化运维工具Ansible实战安装部署

自动化运维工具ansible实战第一章

自动化运维工具ansible实战第一章

自动化运维工具Ansible实战Playbooks剧本使用