您的位置:首页 > 数据库 > MySQL

3.4 实例 playbook安装mysql

2015-07-21 23:19 591 查看
1.创建mysql的playbook结构

1
2
3
4
5
6
7
8
9
10
11
[root@ansible roles]# pwd
/etc/ansible/roles
[root@ansible roles]# mkdir -p mysql_install/{files,handlers,meta,tasks,templates,vars}
[root@ansible roles]# tree mysql_install/
mysql_install/
├── files
├── handlers
├── meta
├── tasks
├── templates
└── vars
2.创建需要用到的vars

1
2
[root@ansible roles]# cat /etc/ansible/roles/mysql_install/vars/main.yml
mysql_version: mysql-5.5.37
3.创建远程安装脚本

[root@ansible roles]# cat /etc/ansible/roles/mysql_install/templates/mysql_install.sh
#!/bin/bash

DATADIR='/data/mysql/data'
VERSION='{{mysql_version}}'
export LANG=zh_CN.UTF-8

#Source function library.
. /etc/init.d/functions

#camke install mysql5.5.X
install_mysql(){
#read -p "please input a password for root: " PASSWD
PASSWD='ly36843'
if [ ! -d $DATADIR ];then
mkdir -p $DATADIR
fi
yum install cmake make gcc-c++ bison-devel ncurses-devel -y
id mysql &>/dev/null
if [ $? -ne 0 ];then
useradd mysql -s /sbin/nologin -M
fi
#useradd mysql -s /sbin/nologin -M
#change datadir owner to mysql
chown -R mysql.mysql $DATADIR
cd
#wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.38.tar.gz tar xf $VERSION.tar.gz
cd $VERSION
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/$VERSION \
-DMYSQL_DATADIR=$DATADIR \
-DMYSQL_UNIX_ADDR=$DATADIR/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
make && make install
if [ $? -ne 0 ];then
action "install mysql is failed!"  /bin/false
exit $?
fi
sleep 2
#link
ln -s /usr/local/$VERSION/ /usr/local/mysql
ln -s /usr/local/mysql/bin/* /usr/bin/
#copy config and start file
/bin/cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
#init mysql
/usr/local/mysql/scripts/mysql_install_db  --basedir=/usr/local/mysql --datadir=$DATADIR --user=mysql
if [ $? -ne 0 ];then
action "install mysql is failed!"  /bin/false
exit $?
fi
#check mysql
/etc/init.d/mysqld start
if [ $? -ne 0 ];then
action "mysql start is failed!"  /bin/false
exit $?
fi
chkconfig --add mysqld
chkconfig mysqld on
/usr/local/mysql/bin/mysql -e "update mysql.user set password=password('$PASSWD') where host='localhost' and user='root';"
/usr/local/mysql/bin/mysql -e "update mysql.user set password=password('$PASSWD') where host='127.0.0.1' and user='root';"
/usr/local/mysql/bin/mysql -e "delete from mysql.user where password='';"
/usr/local/mysql/bin/mysql -e "flush privileges;"
#/usr/local/mysql/bin/mysql -e "select version();" >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "+---------------------------+"
echo "+------mysql安装完成--------+"
echo "+---------------------------+"
fi
#/etc/init.d/mysqld stop
}

install_mysql


4.创建任务
复制文件

1
2
3
4
5
[root@ansible roles]# cat /etc/ansible/roles/mysql_install/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

解压安装

1
2
3
[root@ansible roles]# cat /etc/ansible/roles/mysql_install/tasks/install.yml
- name: install mysql
shell: /bin/sh /root/mysql_install.sh
创建包含文件

1
2
3
[root@ansible roles]# cat /etc/ansible/roles/mysql_install/tasks/main.yml
- include: copy.yml
- include: install.yml
最后的playbook结构是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@ansible roles]# tree /etc/ansible/roles/mysql_install/
/etc/ansible/roles/mysql_install/
├── files
│ └── mysql-5.5.37.tar.gz
├── handlers
├── meta
├── tasks
│ ├── copy.yml
│ ├── install.yml
│ └── main.yml
├── templates
│ └── mysql_install.sh
└── vars
└── main.yml
5.创建mysql的playbook配置文件

1
2
3
4
5
6
[root@ansible ~]# cat /etc/ansible/mysql_server_install.yml
- hosts: mysql
remote_user: root
gather_facts: False
roles:
- mysql_install
来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: