ansible-playbook批量部署MySQL

通过ansible-playbook,以二进制包方式批量部署mysql。

  • 将所有部署mysql主机分为dbserver组:
# vim /etc/ansible/hosts
[dbserver]
192.168.30.128
192.168.30.129
192.168.30.130
  • 创建管理目录:
#  mkdir -p mysql/roles/mysql_install/{files,handlers,meta,tasks,templates,vars}

# cd mysql/

说明:

files:存放需要同步到异地服务器的源码文件及配置文件; 
handlers:当资源发生变化时需要进行的操作,若没有此目录可以不建或为空; 
meta:存放说明信息、说明角色依赖等信息,可留空; 
tasks:mysql安装过程成需要进行的执行的任务; 
templates:用于执行mysql安装的模板文件,一般为脚本; 
vars:本次安装定义的变量
# tree .
.
├── mysql.yml
└── roles
    └── mysql_install
        ├── files
        │   └── mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz              #可提前下载好mysql包放到files下
        ├── handlers
        ├── meta
        ├── tasks
        │   ├── copy.yml
        │   ├── install.yml
        │   ├── main.yaml
        │   └── prepare.yml
        ├── templates
        │   ├── change_passwd.sh
        │   ├── my.cnf
        │   └── mysqld.service
        └── vars
            └── main.yml

8 directories, 10 files

  • 创建mysql入口文件,用来调用mysql_install:
# vim mysql.yml 

#用于批量安装MySQL
---
- hosts: dbserver
  remote_user: root
  gather_facts: True

  roles:
    - mysql_install
  • 创建变量:
# vim roles/mysql_install/vars/main.yml

#定义mysql安装中的变量
MYSQL_VER: 5.7.25
MYSQL_VER_MAIN: "{
   { MYSQL_VER.split('.')[0] }}.{
   { MYSQL_VER.split('.')[1] }}"

DOWNLOAD_URL: https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-{
   {
    MYSQL_VER_MAIN }}/mysql-{
   {
    MYSQL_VER }}-linux-glibc2.12-x86_64.tar.gz
MYSQL_USER: mysql
MYSQL_PORT: 3306
MYSQL_PASSWD: 123456789
SOURCE_DIR: /software
BASE_DIR: /usr/local/mysql
DATA_DIR: /data/mysql
  • 创建模板文件:

mysql配置文件

# vim roles/mysql_install/templates/my.cnf

[client]
port    = {
   {
    MYSQL_PORT }}
socket = {
   {
    BASE_DIR }}/tmp/mysql.sock

[mysql]
default-character-set=utf8

[mysqld]
default-storage-engine=INNODB
character_set_server=utf8
explicit_defaults_for_timestamp
basedir={
   {
    BASE_DIR }}
datadir={
   {
    DATA_DIR }}
socket={
   {
    BASE_DIR }}/tmp/mysql.sock
log_error = {
   {
    BASE_DIR }}/log/error.log

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

mysql服务文件

# vim roles/mysql_install/templates/mysqld.service

[Unit]
Description=MySQL Server
After=network.target
After=
  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值