[root@centos8-1 ]$mkdir -pv /data/ansible/roles/mysql/files/ ##创建目录
[root@centos8-1 roles]$vim /data/ansible/roles/mysql/files/my.cnf ##准备好my.cnf配置文件
[mysqld]
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
datadir=/data/mysql
innodb_file_per_table=1
log-bin
pid-file=/data/mysql/mysqld.pid
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
[root@centos8-1 roles]$vim /data/ansible/roles/mysql/files/secure_mysql.sh
#!/bin/bash
#
#********************************************************************
#Author: zhangtianze
#QQ: 1185673631
#Date: 2020-08-16
#FileName: /data/ansible/roles/mysql/files/secure_mysql.sh
#URL: http://www.zhangtianze.com
#Description: The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
/usr/local/mysql/bin/mysql_secure_installation <<EOF
y
tianze
tianze
y
y
y
y
EOF
[root@centos8-1 roles]$chmod +x /data/ansible/roles/mysql/files/secure_mysql.sh
[root@centos8-1 files]$pwd
/data/ansible/roles/mysql/files
[root@centos8-1 files]$ls ## 准备好mysql二进制安装包,可也从mysql官网download
my.cnf mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz secure_mysql.sh
[root@centos8-1 mysql]$pwd
/data/ansible/roles/mysql
[root@centos8-1 mysql]$mkdir tasks
[root@centos8-1 roles]$vim mysql/tasks/main.yml
- include: install.ym
- include: install.yml
- include: group.yml
- include: user.yml
- include: unarchive.yml
- include: link.yml
- include: data.yml
- include: config.yml
- include: service.yml
- include: path.yml
- include: secure.yml
[root@centos8-1 tasks]$vim install.yml
- name: install package
yum: name=libaio,perl-Data-Dumper,perl-Getopt-Long
[root@centos8-1 tasks]$vim group.yml
- name: create mysql group
group: name=mysql gid=306
[root@centos8-1 tasks]$vim user.yml
- name: create mysql user
user: name=mysql group=mysql shell=/sbin/nologin system=yes uid=306 create_home=no home=/data/mysql
[root@centos8-1 tasks]$vim unarchive.yml
- name: copy tar to remote host and file mode
unarchive: src=mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz dest=/usr/local/ owner=root group=root
[root@centos8-1 tasks]$vim link.yml
- name: mkdir /usr/local/mysql
file: src=/usr/local/mysql-5.6.48-linux-glibc2.12-x86_64 dest=/usr/local/mysql state=link
[root@centos8-1 tasks]$vim data.yml
- name: data dir
shell: chdir=/usr/local/mysql/ ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
[root@centos8-1 tasks]$vim config.yml
- name: config my.cnf
copy: src=my.cnf dest/etc/my.cnf
[root@centos8-1 tasks]$vim service.yml
- name: service script
shell: /bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld;chkconfig --add mysqld;chkconfig mysqld on;/etc/init.d/mysqld start
[root@centos8-1 tasks]$vim path.yml
- name: PATH variable
copy: content='PATH=/usr/local/mysql/bin:$PATH' dest=/etc/profile.d/mysql.sh
[root@centos8-1 tasks]$vim secure.yml
- name: secure script
script: secure_mysql.sh
[root@centos8-1 ansible]$tree roles/mysql/
roles/mysql/
├── files
│ ├── my.cnf
│ ├── mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz
│ └── secure_mysql.sh
└── tasks
├── config.yml
├── data.yml
├── group.yml
├── install.yml
├── link.yml
├── main.yml
├── path.yml
├── secure.yml
├── service.yml
├── unarchive.yml
└── user.yml
2 directories, 14 files
[root@centos8-1 ansible]$pwd
/data/ansible
[root@centos8-1 ansible]$vim mysql_roles.yml
- hosts: db
remote_user: root
roles:
- {role: mysql,tags: ["mysql","db"]}
- {role: nginx,tage: ["nginx","web"]}
[root@centos8-1 ansible]$ansible-playbook mysql_roles.yml