当前位置:Gxlcms > 数据库问题 > 运维自动化之ansible playbook安装mysql

运维自动化之ansible playbook安装mysql

时间:2021-07-01 10:21:17 帮助过:30人阅读

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

2.创建需要用到的vars

  1. [root@ansible roles]# cat /etc/ansible/roles/mysql_install/vars/main.yml
  2. mysql_version: mysql-5.5.37

3.创建远程安装脚本

  1. [root@ansible roles]# cat /etc/ansible/roles/mysql_install/templates/mysql_install.sh
  2. #!/bin/bash
  3.  
  4. DATADIR=‘/data/mysql/data‘
  5. VERSION=‘{{mysql_version}}‘
  6. export LANG=zh_CN.UTF-8
  7.  
  8. #Source function library.
  9. . /etc/init.d/functions
  10.  
  11. #camke install mysql5.5.X
  12. install_mysql(){
  13.         #read -p "please input a password for root: " PASSWD
  14. PASSWD=‘ly36843‘
  15.         if [ ! -d $DATADIR ];then
  16.                 mkdir -p $DATADIR
  17.         fi
  18.         yum install cmake make gcc-c++ bison-devel ncurses-devel -y
  19.         id mysql &>/dev/null
  20.         if [ $? -ne 0 ];then
  21.                 useradd mysql -s /sbin/nologin -M
  22.         fi
  23.         #useradd mysql -s /sbin/nologin -M
  24.         #change datadir owner to mysql
  25.         chown -R mysql.mysql $DATADIR
  26.         cd
  27.         #wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.38.tar.gz
  28.         tar xf $VERSION.tar.gz
  29.         cd $VERSION
  30.         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
  31.         make && make install
  32.         if [ $? -ne 0 ];then
  33.                 action "install mysql is failed!"  /bin/false
  34.                 exit $?
  35.         fi
  36.         sleep 2
  37.         #link
  38.         ln -s /usr/local/$VERSION/ /usr/local/mysql
  39.         ln -s /usr/local/mysql/bin/* /usr/bin/
  40.         #copy config and start file
  41.         /bin/cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf
  42.         cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
  43.         chmod 700 /etc/init.d/mysqld
  44.         #init mysql
  45.         /usr/local/mysql/scripts/mysql_install_db  --basedir=/usr/local/mysql --datadir=$DATADIR --user=mysql
  46.         if [ $? -ne 0 ];then
  47.                 action "install mysql is failed!"  /bin/false
  48.                 exit $?
  49.         fi
  50.         #check mysql
  51.         /etc/init.d/mysqld start
  52.         if [ $? -ne 0 ];then
  53.                 action "mysql start is failed!"  /bin/false
  54.                 exit $?
  55.         fi
  56.         chkconfig --add mysqld
  57.         chkconfig mysqld on
  58.         /usr/local/mysql/bin/mysql -e "update mysql.user set password=password(‘$PASSWD‘) where host=‘localhost‘ and user=‘root‘;"
  59.         /usr/local/mysql/bin/mysql -e "update mysql.user set password=password(‘$PASSWD‘) where host=‘127.0.0.1‘ and user=‘root‘;"
  60.         /usr/local/mysql/bin/mysql -e "delete from mysql.user where password=‘‘;"
  61.         /usr/local/mysql/bin/mysql -e "flush privileges;"
  62.         #/usr/local/mysql/bin/mysql -e "select version();" >/dev/null 2>&1
  63.         if [ $? -eq 0 ];then
  64.                 echo "+---------------------------+"
  65.                 echo "+------mysql安装完成--------+"
  66.                 echo "+---------------------------+"
  67.         fi
  68.         #/etc/init.d/mysqld stop
  69. }
  70.  
  71. install_mysql

4.创建任务

复制文件

  1. [root@ansible roles]# cat /etc/ansible/roles/mysql_install/tasks/copy.yml 
  2. - name: copy mysql source code to client
  3.   copy: src={{mysql_version}}.tar.gz dest=/root/{{mysql_version}}.tar.gz owner=root group=root
  4. - name: copy mysql install script to client
  5.   template: src=mysql_install.sh dest=/root/mysql_install.sh owner=root group=root mode=0755

解压安装

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

创建包含文件

  1. [root@ansible roles]# cat /etc/ansible/roles/mysql_install/tasks/main.yml
  2. - include: copy.yml
  3. - include: install.yml

最后的playbook结构是

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

5.创建mysql的playbook配置文件

  1. [root@ansible ~]# cat /etc/ansible/mysql_server_install.yml
  2. - hosts: mysql
  3.   remote_user: root
  4.   gather_facts: False
  5.   roles:
  6.     - mysql_install




本文出自 “ly36843运维” 博客,请务必保留此出处http://ly36843.blog.51cto.com/3120113/1671314

运维自动化之ansible playbook安装mysql

标签:运维自动化之ansible playbook安装mysql

人气教程排行