ansible自動化部署MySQL5.7


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"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM