1.构建安装目录
|
1
|
mkdir -p /ansible/roles/mysql/{defaults,files,handlers,meta,tasks,templates,vars}
|
-
defaults 默认寻找路径
-
tasks 存放playbooks路径
-
files 存放文件和脚本,copy模块文件搜索路径
-
templates 模版存放路径
-
handlers notify调用部分playbook存放路径
-
vars roles内变量存放路径
2.文件目录结构
3.playbooks & Shell
/etc/ansible/roles/mysql/files/install_mysql.sh脚本内容为:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#!/bin/bash #DBDIR='/data/mysql/'
PASSWD='fanshine123'
[ -d $DBDIR ] || mkdir $DBDIR -p
id mysql &> /dev/null
if [ $? -ne 0 ];then
useradd mysql -s /sbin/nologin -M
fichown -R mysql.mysql $DBDIR
cd /tmp/
tar xf mysql-5.6.13.tar.gz
cd mysql-5.6.13
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=$DBDIR \-DMYSQL_UNIX_ADDR=$DBDIR/mysql.sock \
-DDEFAULT_CHARSET=utf8 \-DEXTRA_CHARSETS=all \-DENABLED_LOCAL_INFILE=1 \-DWITH_READLINE=1 \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_EMBEDDED_SERVER=1if [ $? != 0 ];then
echo "make error!"
exit 1
fimake && make install
if [ $? -ne 0 ];then
echo "install mysql is failed!" && /bin/false
fisleep 2
ln -s /usr/local/mysql/bin/* /usr/bin/
cp -f /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
cp -f /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=$DBDIR --user=mysql
if [ $? -ne 0 ];then
echo "install mysql is failed!" && /bin/false
fi/etc/init.d/mysqld start
if [ $? -ne 0 ];then
echo "install mysql is failed!" && /bin/false
fichkconfig --add mysqldchkconfig 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 user='';"
/usr/local/mysql/bin/mysql -e "flush privileges;"
if [ $? -eq 0 ];then
echo "ins_done"
fi |
/etc/ansible/roles/mysql/tasks/main.yml文件内容为:
|
1
2
3
4
5
6
|
- name: copy mysql to client copy: src=mysql-5.6.13.tar.gz dest=/tmp/mysql-5.6.13.tar.gz
- name: copy install_script to client copy: src=install_mysql.sh dest=/tmp/install_mysql.sh owner=root group=root mode=755
- name: install mysql
shell: /bin/bash /tmp/install_mysql.sh
|
/etc/ansible/mysql.yml文件内容为:
|
1
2
3
4
|
- hosts: webserver remote_user: root
roles:
- mysql
|
4.执行安装
|
1
2
|
[[email protected] ansible]# ansible-playbook mysql.yml --syntax-check --检查语法
[[email protected] ansible]# ansible-playbook mysql.yml --执行安装
|
本文转自 SoulMio 51CTO博客,原文链接:http://blog.51cto.com/bovin/1963212,如需转载请自行联系原作者