签到成功

知道了

CNDBA社区CNDBA社区

ansible安装Mysql 5.7.30

2021-10-02 08:52 958 0 原创 ansible
作者: hbhe0316

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

http://www.cndba.cn/hbhe0316/article/4828
http://www.cndba.cn/hbhe0316/article/4828
http://www.cndba.cn/hbhe0316/article/4828
http://www.cndba.cn/hbhe0316/article/4828
http://www.cndba.cn/hbhe0316/article/4828

[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:本次安装定义的变量http://www.cndba.cn/hbhe0316/article/4828http://www.cndba.cn/hbhe0316/article/4828http://www.cndba.cn/hbhe0316/article/4828http://www.cndba.cn/hbhe0316/article/4828http://www.cndba.cn/hbhe0316/article/4828

[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

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:1140334次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ