ansible自动化部署mysql教程(小白向)linux

简介:

Ansible 是一款运维自动化工具,主要功能是帮助运维实现 IP 工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率、常用于软件部署自动化、配置自动化、观念里自动化、系统化系统任务、持续集成、零宕机平滑升级等,其提供了丰富的内置模块、开放的 API 接口、同时遵循 GPL 协议,因此企业可以基于 Ansible 开发自己的运维自动化系统,进一步提高系统的易用性,降低对运维人员的要求,满足自身行业或业务系统特有的业务管理需求。

准备工作 | 两台服务器 |192.168.6.64(主) | 192.168.6.80(备)|

关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

解释服务器ip

vim /etc/hosts #假如以下内容,IP地址跟主机名字一一对应
192.168.6.64 ansible-server #主
192.168.6.80 ansible-web1 #从

在主服务器上安装mysql,ansible

cd /etc/yum.repos.d/

vim mysql.repo
------------------------------------------------------------------------------------
[mysql]    #这里使用的是mysql5.7版本的yum源
name=mysql
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
enabled=1
gpgcheck=0
 
yum list | grep mysql     #检查是否有mysql5.7的yum源
 
yum -y install mysql-communiti-server
 
yum -y install ansible

免密登录:

ssh-keygen #生成密钥
ssh-copy-id 192.168.6.80 #免密登录

安装ansible

yum install -y ansible #下载ansible
ansible --version  #查看版本号

在主服务器上配置mysql和ansible

# 设置mysql的master账户,将 `skip-grant-tables` 这一配置选项追加到 MySQL 的配置文件 `/etc/my.cnf` 中
echo "skip-grant-tables" >> /etc/my.cnf
 
# 登陆进去mysql后执行
mysql> update mysql.user set authentication_string=password('G.E.M.') where user='root';
 
vim /etc/my.cnf
#skip-grant-tables  #注释掉这一行
 
mysql -uroot -p'G.E.M.'
mysql> set password='G.E.M.'   #再重设一遍密码,可以跟之前的一样
mysql> grant replication slave,super,reload on *.* to "slave"@"%" identified by "G.E.M."# 设置ansible的主机组(定义 Ansible 管理的主机和主机组)
vim /etc/ansible/hosts
[server]
ansible-server

[clients]
ansible-web1

[c1]
ansible-web1

编写ansible脚本

---
- hosts: clients
  tasks:
  - name: exchange mysql.repo          # 修改从服务器的mysql源
    copy: 
      src: /etc/yum.repos.d/mysql.repo 
      dest: /etc/yum.repos.d/mysql.repo
      owner: root 
      group: root 
      mode: 0644

  - name: install mysql                # 安装从服务器的mysql
    yum: 
      name: mysql-community-server 
      state: latest
    notify: start_and_enable

  - name: synchronize time             # 同步时间
    shell: ntpdate ntp.aliyun.com

  - name: skip-grant-tables and restart   # 跳过密码登陆mysql并重启
    shell: |
      echo "skip-grant-tables" >> /etc/my.cnf
      systemctl restart mysqld

  handlers:
  - name: start_and_enable             # 启动mysql并设置自启动
    service: 
      name: mysqld 
      state: started 
      enabled: yes

- hosts: clients
  become: yes
  vars:
    src: /etc/my.cnf
    dest: /etc/my.cnf

  tasks:
  - name: modify password for mysql root # 修改mysql的登陆密码
    shell: mysql -e 'update mysql.user set authentication_string=password("G.E.M.") where user="root"'

  - name: copy my.cnf                   # 复制修改过的配置文件
    copy: 
      src: "{{ src }}" 
      dest: "{{ dest }}"

  - name: modify my.cnf                 # 修改从服务器的ID,可以是任意
    shell: |
      sed -i 's/^server-id=.*//' {{ src }}
      echo server-id="$RANDOM" >> {{ src }}
  
  - name: restart mysqld                # 重启mysql
    service: 
      name: mysqld 
      state: restarted

  - name: reset password                # 重设密码
    shell: mysqladmin -uroot -p'G.E.M.' password 'G.E.M.'

  - name: set slave                     # 配置从服务器的slave账户
    shell: |
      /usr/bin/mysql -uroot -p'G.E.M.' -e 'CHANGE MASTER TO MASTER_HOST="192.168.6.64", MASTER_USER="slave", MASTER_PASSWORD="G.E.M.", MASTER_AUTO_POSITION=1'
      mysql -uroot -p'G.E.M.' -e 'START SLAVE; SHOW SLAVE STATUS\G'

检查

最后显示显示IO和SQL 为YES即成功

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值