ansible批量部署mysql


1.1 將mysql軟件包同步到客戶端服務器,做安裝前期准備

Ps:mysql安裝包線拖到ansible服務端的/ansible/roles/mysql/files目錄下

vim /ansible/roles/mysql/tasks/main.yml

- name: copy mysql_tar_gz to client
  copy: src=mysql-5.6.35.tar.gz dest=/tmp/mysql-5.6.35.tar.gz
- name: copy install_script to client
  copy: src=mysql_install.sh dest=/tmp/mysql_install.sh owner=root group=root mode=755
- name: install mysql
  shell: /bin/bash /tmp/mysql_install.sh

1.2 創建mysql 安裝腳本

/ansible/roles/mysql/files/mysql_install.sh

#!/bin/bash

####定義mysql數據庫路徑,和mysql登錄密碼
DBDIR='/application/mysql/data'
PASSWD='bingoclo123'

####判斷數據目錄是否存在如果不存在遞歸創建目錄
[ -d $DBDIR ] || mkdir $DBDIR -p

####安裝mysql組件
yum install cmake make gcc-c++ bison-devel ncurses-devel -y
id mysql &> /dev/null

####如果執行id mysql輸出為0 那么就是執行正確創建mysql用戶
if [ $? -ne 0 ];then
 useradd mysql -s /sbin/nologin -M
fi

####賦予數據目錄權限
chown -R mysql.mysql $DBDIR

####切換到tmp目錄,解壓mysql,編譯安裝mysql到/application/mysql
cd /tmp/
tar xf mysql-5.6.35.tar.gz
cd mysql-5.6.35
cmake . -DCMAKE_INSTALL_PREFIX=/application/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=1

####判斷如果以上執行結果不等於0,說明執行失敗,退出!
if [ $? != 0 ];then
 echo "cmake error!"
 exit 1
fi

####判斷執行成功,繼續往下走
make && make install
if [ $? -ne 0 ];then
 echo "install mysql is failed!" && /bin/false
fi
sleep 2

####做軟連接
ln -s /application/mysql/bin/* /usr/bin/

####復制mysql配置文件
cp -f /application/mysql/support-files/my-default.cnf /etc/my.cnf

####復制mysql啟停腳本到init.d
cp -f /application/mysql/support-files/mysql.server /etc/init.d/mysqld

####執行權
chmod 700 /etc/init.d/mysqld

####初始化mysql
/application/mysql/scripts/mysql_install_db  --basedir=/application/mysql --datadir=$DBDIR --user=mysql

####如果mysql初始化失敗提示install mysql is failed!  否則/etc/init.d/mysqld start
if [ $? -ne 0 ];then
 echo "install mysql is failed!" && /bin/false
fi
/etc/init.d/mysqld start

####如果mysql開啟失敗提示install mysql is failed! 否則繼續往下走
if [ $? -ne 0 ];then
 echo "install mysql is failed!" && /bin/false
fi

####開機自啟
chkconfig --add mysqld
chkconfig mysqld on
/application/mysql/bin/mysql -e "update mysql.user set password=password('$PASSWD') where host='localhost' and user=
'root';"
/application/mysql/bin/mysql -e "update mysql.user set password=password('$PASSWD') where host='127.0.0.1' and user=
'root';"
/application/mysql/bin/mysql -e "delete from mysql.user where password='';"
/application/mysql/bin/mysql -e "flush privileges;"
if [ $? -eq 0 ];then
 echo "ins_done"
fi

1.3 Ps:執行ansible 命令

1.3.1 因為這次操作只針對mysql進行部署,所以注釋掉其他服務

 

- hosts: bgo
  remote_user: root
  roles:
#    - nginx
    - mysql
#    - tomcat
#    - db
~

1.3.2 安裝命令

cd /ansible
ansible-playbook web.yml --syntax-check  #檢查語法
ansible-playbook web.yml  #執行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM