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"