2.ansible-playbook实现mysql8.0的二进制部署
2.ansible-playbook实现mysql8.0的二进制部署
[root@ansible ~]#grep ^inventory /etc/ansible/ansible.cfg
inventory = /data/ansible/hosts
[root@ansible ~]#mkdir -p /data/ansible/files
[root@ansible ~]#cd /data/ansible
[root@ansible ansible]# tree
.
├── files
│ ├── my.cnf
│ └── mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
├── hosts
└── install_mysql8.0-v2.yml
1 directory, 5 files
[root@ansible ansible]#cat /data/ansible/hosts
[dbsrvs]
10.0.0.8
[root@ansible files]# cat my.cnf
[mysqld]
server-id=1
log-bin
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
[root@ansible ansible]#cat install_mysql8.0-v2.yml
---
# install mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
- hosts: dbsrvs
remote_user: root
gather_facts: no
vars:
mysql_version: 8.0.19
mysql_file: mysql-{{mysql_version}}-linux-glibc2.12-x86_64.tar.xz
mysql_root_password: 123456
tasks:
- name: install packages
yum:
name:
- libaio
- numactl-libs
state: latest
- name: create mysql group
group: name=mysql gid=306
- name: create mysql user
user: name=mysql uid=306 group=mysql shell=/sbin/nologin system=yes create_home=no home=/data/mysql
- name: copy tar to remote host and file mode
unarchive: src=/data/ansible/files/{{mysql_file}} dest=/usr/local/ owner=root group=root
- name: create linkfile /usr/local/mysql
file: src=/usr/local/mysql-{{ mysql_version }}-linux-glibc2.12-x86_64 dest=/usr/local/mysql state=link
- name: data dir
shell: /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
tags: data
- name: config my.cnf
copy: src=/data/ansible/files/my.cnf dest=/etc/my.cnf
- name: service script
shell: /bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
- name: PATH variable
copy: content='PATH=/usr/local/mysql/bin:$PATH' dest=/etc/profile.d/mysql.sh
- name: enable service
shell: chkconfig --add mysqld;/etc/init.d/mysqld start
tags: service
- name: change password
shell: /usr/local/mysql/bin/mysqladmin -uroot password{{mysql_root_password}}
语法检查
[root@ansible ansible]# ansible-playbook -v --syntax-check install_mysql8.0-v2.yml
Using /etc/ansible/ansible.cfg as config file
playbook: install_mysql8.0-v2.yml
执行
[root@ansible ansible]# ansible-playbook install_mysql5.7or8.0-v2.yml
PLAY [dbsrvs] *********************************************************************************************************************************************************
TASK [install packages] ***********************************************************************************************************************************************
ok: [10.0.0.8]
TASK [create mysql group] *********************************************************************************************************************************************
changed: [10.0.0.8]
TASK [create mysql user] **********************************************************************************************************************************************
changed: [10.0.0.8]
TASK [copy tar to remote host and file mode] **************************************************************************************************************************
changed: [10.0.0.8]
TASK [create linkfile /usr/local/mysql] *******************************************************************************************************************************
changed: [10.0.0.8]
TASK [data dir] *******************************************************************************************************************************************************
changed: [10.0.0.8]
TASK [config my.cnf] **************************************************************************************************************************************************
changed: [10.0.0.8]
TASK [service script] *************************************************************************************************************************************************
changed: [10.0.0.8]
TASK [PATH variable] **************************************************************************************************************************************************
changed: [10.0.0.8]
TASK [enable service] *************************************************************************************************************************************************
changed: [10.0.0.8]
TASK [change password] *************************************************************************************************************************************************
changed: [10.0.0.8]
PLAY RECAP ************************************************************************************************************************************************************
10.0.0.8 : ok=11 changed=10 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
查看远程主机
[root@CentOS8 local]# hostname -I
10.0.0.8
[root@CentOS8 local]# pwd
/usr/local
[root@CentOS8 local]# ls
bin etc games include lib lib64 libexec mysql mysql-8.0.19-linux-glibc2.12-x86_64 sbin share src
[root@CentOS8 local]# ss -ntpl | grep mysql
LISTEN 0 128 *:3306 *:* users:(("mysqld",pid=40711,fd=31))
LISTEN 0 70 *:33060 *:* users:(("mysqld",pid=40711,fd=34))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具