利用ansible的playbook实现MySQL5.7的二进制部署

利用ansible的playbook实现MySQL5.7的二进制部署

环境准备:

源码包:mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

已实现ansible主控端基于key验证

主机清单配置
[root@ansible ansible]#pwd
/data/ansible
[root@ansible ansible]#cat hosts
[webservers]
10.0.0.17

1、创建mysql角色相关的目录

[root@ansible roles]#pwd
/data/ansible/roles
[root@ansible roles]#mkdir -pv mysql/{tasks,files,vars}
mkdir: created directory ‘mysql’
mkdir: created directory ‘mysql/tasks’
mkdir: created directory ‘mysql/files’
mkdir: created directory ‘mysql/vars’

2、创建mysql角色相关的文件

[root@ansible mysql]#pwd
/data/ansible/roles/mysql

[root@ansible mysql]#tree
.
├── files
│   ├── my.cnf
│   └── mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
├── tasks
│   ├── config.yml
│   ├── data.yml
│   ├── group.yml
│   ├── install.yml
│   ├── linkfile.yml
│   ├── main.yml
│   ├── path.yml
│   ├── script.yml
│   ├── secure.yml
│   ├── service.yml
│   ├── unarchive.yml
│   └── user.yml
└── vars
    └── main.yml

3 directories, 15 files

[root@ansible mysql]#ls files/
my.cnf  mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

[root@ansible mysql]#vim files/my.cnf
[mysqld]
explicit_defaults_for_timestamp=true
server-id=1
log-bin
datadir=/data/mysql
socket=/data/mysql/mysql.sock

[mysqld_safe]
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid

[client]
socket=/data/mysql/mysql.sock

[root@ansible mysql]#vim vars/main.yml
mysql_version: 5.7.36
mysql_file: mysql-{{mysql_version}}-linux-glibc2.12-x86_64.tar.xz
mysql_root_password: 123456

#main.yml 是task的入口文件
[root@ansible mysql]#vim tasks/main.yml
- include: install.yml
- include: group.yml
- include: user.yml
- include: unarchive.yml
- include: linkfile.yml
- include: data.yml
- include: config.yml
- include: script.yml
- include: path.yml
- include: service.yml
- include: secure.yml

[root@ansible mysql]#vim tasks/install.yml
- name: install packages
  yum:
    name:
      - libaio
      - numactl-libs

[root@ansible mysql]#vim tasks/group.yml
- name: create mysql group
  group: name=mysql gid=306

[root@ansible mysql]#vim tasks/user.yml
- name: create mysql user
  user: name=mysql uid=306 group=mysql shell=/sbin/nologin system=yes create_home=no home=/data/mysql

[root@ansible mysql]#vim tasks/unarchive.yml
- name: copy tar to remote host and file mode
  unarchive: src=/data/ansible/roles/mysql/files/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz dest=/usr/local/owner=root group=root copy=yes

[root@ansible mysql]#vim tasks/linkfile.yml
- name: create linkfile /usr/local/mysql
  file: src=/usr/local/mysql-5.7.36-linux-glibc2.12-x86_64 path=/usr/local/mysql state=link

[root@ansible mysql]#vim tasks/data.yml
- name: data dir
  shell: /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
  tags: data

[root@ansible mysql]#vim tasks/config.yml
- name: config my.cnf
  copy: src=/data/ansible/roles/mysql/files/my.cnf dest=/etc/my.cnf

[root@ansible mysql]#vim tasks/script.yml
- name: service script
  shell: /bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

[root@ansible mysql]#vim tasks/path.yml
- name: PATH variable
  copy: content='PATH=/usr/local/mysql/bin:$PATH' dest=/etc/profile.d/mysql.sh

[root@ansible mysql]#vim tasks/service.yml
- name: enable service
  shell: chkconfig --add mysqld;/etc/init.d/mysqld start
  tags: service

[root@ansible mysql]#vim tasks/secure.yml
- name: change password
  shell: /usr/local/mysql/bin/mysqladmin -uroot password {{mysql_root_password}}

3、在playbook中调用角色

[root@ansible ansible]#pwd
/data/ansible
[root@ansible ansible]#vim role_mysql.yml
---
- hosts: webservers
  remote_user: root
  gather_facts: no

  roles:
    - mysql

4、运行playbook

[root@ansible ansible]#ansible-playbook -C role_mysql.yml
[root@ansible ansible]#ansible-playbook role_mysql.yml
[root@ansible ansible]#ansible-playbook  role_mysql.yml
PLAY [webservers] ****************************************************************************************************

TASK [mysql : install packages] **************************************************************************************
ok: [10.0.0.17]

TASK [create mysql group] ********************************************************************************************
ok: [10.0.0.17]

TASK [create mysql user] *********************************************************************************************
ok: [10.0.0.17]

TASK [mysql : copy tar to remote host and file mode] *****************************************************************
changed: [10.0.0.17]

TASK [create linkfile /usr/local/mysql] ******************************************************************************
ok: [10.0.0.17]

TASK [mysql : data dir] **********************************************************************************************
changed: [10.0.0.17]

TASK [mysql : config my.cnf] *****************************************************************************************
changed: [10.0.0.17]

TASK [mysql : service script] ****************************************************************************************
changed: [10.0.0.17]

TASK [mysql : PATH variable] *****************************************************************************************
changed: [10.0.0.17]

TASK [mysql : enable service] ****************************************************************************************
changed: [10.0.0.17]

TASK [mysql : change password] ***************************************************************************************
changed: [10.0.0.17]

PLAY RECAP ***********************************************************************************************************
10.0.0.17                  : ok=11   changed=7    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[root@centos7 ~]#ss -ntl
State      Recv-Q Send-Q              Local Address:Port                             Peer Address:Port
LISTEN     0      128                             *:22                                          *:*
LISTEN     0      100                     127.0.0.1:25                                          *:*
LISTEN     0      80                           [::]:3306                                     [::]:*
LISTEN     0      128                          [::]:22                                       [::]:*
LISTEN     0      100                         [::1]:25                                       [::]:*

[root@centos7 ~]#mysql --version
mysql  Ver 14.14 Distrib 5.7.36, for linux-glibc2.12 (x86_64) using  EditLine wrapper

[root@centos7 ~]#mysql -uroot -p123456 -Dmysql
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直在努力学习的菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值