Ansible部署MySQL5.7.24
一、分发密钥
# 1.生成私钥
[root@node1 ~]# ssh-keygen
# 2.向主机分发私钥
[root@node1 ~]# ssh-copy-id root@192.168.1.111 #主
[root@node1 ~]# ssh-copy-id root@192.168.1.112 #从
# 3.添加主机组,/etc/ansible/hosts最后添加
[mysql]
192.168.1.111
192.168.1.112
[mysql_slave]
192.168.1.112
# 4.验证是否能免密通信
[root@node1 ~]# ansible mysql -m ping
二、编写role
2.1、进入ansible目录,创建文件
[root@node1 ~]# cd /etc/ansible/roles
[root@node1 roles]# mkdir mysql
[root@node1 roles]# cd mysql/
[root@node1 mysql]# mkdir {files,tasks,templates,vars}
[root@node1 mysql]# ll
total 0
drwxr-xr-x 2 root root 6 Nov 25 22:42 files
drwxr-xr-x 2 root root 6 Nov 25 22:42 tasks
drwxr-xr-x 2 root root 6 Nov 25 22:42 templates
drwxr-xr-x 2 root root 6 Nov 25 22:42 vars
2.2、上传所需文件到对应的文件夹
# 1、MySQL5.7.24安装包放到files文件夹下
# 2、准备好my.cnf.j2放到templates问价夹下
# 3、准备好mysqld.service.j2放到templates问价夹下
2.3、编写tasks
---
- name: 创建MySQL用户组
group: name={{ mysql_group }}
- name: 创建MySQL用户
user:
name={{ mysql_user }}
shell=/sbin/nologin
group={{ mysql_group }}
- name: 创建mysql部署相关路径
file: path={{ item.path }} state={{ item.type }} owner={{ item.owner }} group={{ item.group }} mode={{ item.mode }}
with_items:
- {path: '{{ mysql_dir }}',type: 'directory',owner: '{{ mysql_user }}',group: '{{ mysql_group }}',mode: '755'}
- {path: '{{ mysql_data_dir }}',type: 'directory',owner: '{{ mysql_user }}',group: '{{ mysql_group }}',mode: '755'}
- {path: '{{ mysql_data_dirx }}',type: 'directory',owner: '{{ mysql_user }}',group: '{{ mysql_group }}',mode: '755'}
- {path: '{{ mysql_binlog_dir }}',type: 'directory',owner: '{{ mysql_user }}',group: '{{ mysql_group }}',mode: '755'}
- name: 拷贝配置文件
template: src=my.cnf.j2 dest=/etc/my.cnf
register: confChange
- name: debug,练习使用
debug: var=confChange
- name: 部署MySQL数据库
unarchive: src={{ mysql_pkg }} dest={{ mysql_dir }} mode=755
- name: rename
shell: cd /app/ && mv mysql-5.7.24-linux-glibc2.12-x86_64/ mysql/
- name: 添加环境变量
blockinfile:
dest: /etc/profile
create: yes
backup: yes
block: export PATH={{ mysql_dir }}/mysql/bin:$PATH
- name: 初始化数据
shell: /app/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir={{ mysql_dir }}/mysql --datadir={{ mysql_data_dirx }}
- name: copy 启动脚本
template: src=mysqld.service.j2 dest=/etc/systemd/system/mysqld.service
- name: 启动MySQL
shell: systemctl daemon-reload && systemctl start mysqld && systemctl enable mysqld
- name: 校验端口
wait_for: port=3306 state=started delay=5 timeout=60
2.4、变量的main文件
# MySQL相关变量
mysql_user: "mysql"
mysql_group: "{{ mysql_user }}"
mysql_dir: "/app"
mysql_data_dir: "/data"
mysql_data_dirx: "{{ mysql_data_dir }}/mysql"
mysql_binlog_dir: "{{ mysql_data_dir }}/binlog"
# 定义版本号及获取路径
mysql_pkg: "mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz"
mysql_pkx: "mysql"