ansible安装Mysql 5.7.30

本文介绍了如何使用Ansible Playbook实现源码的远程传输、MySQL在异地服务器的安装过程,详细讲解了配置变量、任务分解与执行流程。通过vars定义安装参数,tasks模块执行具体操作,如复制源码和脚本,以及调用安装模板。
摘要由CSDN通过智能技术生成

ansible-playbook配置思路:
1.通过vars中的main.yml配置变量,主要为源码存放目录及安装目录
2.通过tasks中的copy.yml将源码文件传输到异地服务器上源码存放目录
3.通过tasks中的install.yml调用模板mysql_install.sh,将mysql安装到变量中定义的安装目录
4.通过tasks中的main.yml调用copy模块和install模块
5.通过mysql.yml调用剧本(playbook):mysql_install

https://www.cndba.cn/hbhe0316/article/4996
https://www.cndba.cn/hbhe0316/article/4996 https://www.cndba.cn/hbhe0316/article/4996 https://www.cndba.cn/hbhe0316/article/4996
[root@test ansible]# cd /etc/ansible/
[root@test ansible]# mkdir -p roles/mysql_install/{files,handlers,meta,tasks,templates,vars}
[root@master ansible]# tree 
.
├── ansible.cfg
├── hosts
├── mysql.yml
└── roles
    └── mysql_install
        ├── files
        │   └── mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
        ├── handlers
        ├── meta
        ├── tasks
        │   ├── copy.yml
        │   ├── install.yml
        │   └── main.yml
        ├── templates
        │   └── mysql_install.sh
        └── vars
            └── main.yml

8 directories, 9 files

说明:
files:存放需要同步到异地服务器的源码文件及配置文件;
handlers:当资源发生变化时需要进行的操作,若没有此目录可以不建或为空;
meta:角色定义可留空;
tasks:mysql安装过程成需要进行的执行的任务;
templates:用于执行mysql安装的模板文件,一般为脚本;
vars:本次安装定义的变量

https://www.cndba.cn/hbhe0316/article/4996
https://www.cndba.cn/hbhe0316/article/4996
https://www.cndba.cn/hbhe0316/article/4996
https://www.cndba.cn/hbhe0316/article/4996 https://www.cndba.cn/hbhe0316/article/4996 https://www.cndba.cn/hbhe0316/article/4996
[root@master ansible]# cd /etc/ansible
[root@master ansible]# cat mysql.yml 
- hosts: dbservers
  remote_user: root
  gather_facts: False
  roles:
    - mysql_install
[root@master mysql_install]# cat tasks/copy.yml 
- name: copy mysql source code to client
  copy: src={{mysql_version}}.tar.gz dest=/root/{{mysql_version}}.tar.gz owner=root group=root
- name: copy mysql install script to client
  template: src=mysql_install.sh dest=/root/mysql_install.sh owner=root group=root mode=0755
[root@master mysql_install]# cat tasks/install.yml 
- name: install mysql
  shell: /bin/sh /root/mysql_install.sh
[root@master mysql_install]# cat tasks/main.yml 
- include: copy.yml
- include: install.yml
[root@master mysql_install]# cat templates/mysql_install.sh 
#!/bin/bash
#coding: utf-8
#filename: mysql_install.sh
#version: 1.0
#desc: mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz 安装脚本
#attention: 需要 root 用户执行

# 1、判断当前用户是否为root用户
if [ $(id -u) != "0" ];then
        echo "error: you must be root run this script"
        exit 1
fi

# 2、定义变量
WKDIR=$(pwd)
INSTALL_HOME="/opt/module"
MYSQL_HOME="$INSTALL_HOME/mysql5.7"
MYSQL_DATA="$MYSQL_HOME/data"
[ -d $INSTALL_HOME ] || mkdir -p $INSTALL_HOME

# 3、检验安装目录
if [ -d $MYSQL_HOME ];then
        echo "erro: your system have installed mysql"
        exit 1
fi

# 4、卸载系统自带数据库
rpm -qa|grep mysql > /dev/null 2>&1
if [ $? -eq 0 ];then
        rpm -qa|grep mysql|xargs yum -y remove
fi
rpm -qa|grep mariadb > /dev/null 2>&1
if [ $? -eq 0 ];then
        rpm -qa|grep mariadb|xargs yum -y remove
fi

# 5、开始安装
echo "start installing mysql"
# 解压
echo "start tar..."
cd /root
tar -xf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.30-linux-glibc2.12-x86_64 $MYSQL_HOME
echo "tar complete"
[ -d $MYSQL_DATA ] || mkdir -p $MYSQL_DATA

# 创建用户
id mysql > /dev/null 2>&1
if [ $? -ne 0 ];then
        useradd -s /sbin/nologin -M mysql
fi

# 创建配置文件及日志目录
mkdir -p $MYSQL_HOME/{etc,logs,tmp}

# 更改 mysql 目录所属用户和组
chown -R mysql:mysql $MYSQL_HOME
echo "initializing mysql"

# 初始化 mysql 数据库
$MYSQL_HOME/bin/mysqld --initialize --basedir=$MYSQL_HOME --datadir=$MYSQL_DATA --user=mysql

# 创建配置文件
cat >$MYSQL_HOME/etc/my.cnf<<EOF
[mysqld]
daemonize = on
user = mysql
port = 3306
basedir = /opt/module/mysql5.7
datadir = /opt/module/mysql5.7/data
socket = /tmp/mysql.sock
pid-file = /opt/module/mysql5.7/tmp/mysqld.pid
character-set-server = utf8
collation-server = utf8_unicode_ci
max_connections = 500
log-error = /opt/module/mysql5.7/logs/mysqld.log
EOF

# 注册服务
cat >/lib/systemd/system/mysqld.service<<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=forking
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/opt/module/mysql5.7/bin/mysqld --defaults-file=/opt/module/mysql5.7/etc/my.cnf
LimitNOFILE = 5000
Restart=on-failure
PrivateTmp=false
EOF

# 配置环境变量
cat > /etc/profile.d/mysql.sh<<EOF
export PATH=$PATH:/opt/module/mysql5.7/bin
EOF

# 使配置的环境变量生效
source /etc/profile.d/mysql.sh

# 启动服务
systemctl start mysqld
systemctl enable mysqld
[root@master mysql_install]# cat vars/main.yml 
mysql_version: mysql-5.7.30-linux-glibc2.12-x86_64
[root@master ansible]# ansible-playbook /etc/ansible/mysql.yml 

PLAY [dbservers] ***************************************************************************************************************************************************************************************************************************

TASK [mysql_install : copy mysql source code to client] ************************************************************************************************************************************************************************************
changed: [192.168.31.129]

TASK [mysql_install : copy mysql install script to client] *********************************************************************************************************************************************************************************
changed: [192.168.31.129]

TASK [mysql_install : install mysql] *******************************************************************************************************************************************************************************************************
changed: [192.168.31.129]

PLAY RECAP *********************************************************************************************************************************************************************************************************************************
192.168.31.129             : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

版权声明:本文为博主原创文章,未经博主允许不得转载。

ansible

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值