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 #執行
