zoukankan      html  css  js  c++  java
  • 3.4 实例 playbook安装mysql

    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.创建远程安装脚本

     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 
    31         -DMYSQL_DATADIR=$DATADIR 
    32         -DMYSQL_UNIX_ADDR=$DATADIR/mysql.sock 
    33         -DDEFAULT_CHARSET=utf8 
    34         -DDEFAULT_COLLATION=utf8_general_ci 
    35         -DENABLED_LOCAL_INFILE=ON 
    36         -DWITH_INNOBASE_STORAGE_ENGINE=1 
    37         -DWITH_FEDERATED_STORAGE_ENGINE=1 
    38         -DWITH_BLACKHOLE_STORAGE_ENGINE=1 
    39         -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 
    40         -DWITHOUT_PARTITION_STORAGE_ENGINE=1
    41         make && make install
    42         if [ $? -ne 0 ];then
    43                 action "install mysql is failed!"  /bin/false
    44                 exit $?
    45         fi
    46         sleep 2
    47         #link
    48         ln -s /usr/local/$VERSION/ /usr/local/mysql
    49         ln -s /usr/local/mysql/bin/* /usr/bin/
    50         #copy config and start file
    51         /bin/cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf
    52         cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    53         chmod 700 /etc/init.d/mysqld
    54         #init mysql
    55         /usr/local/mysql/scripts/mysql_install_db  --basedir=/usr/local/mysql --datadir=$DATADIR --user=mysql
    56         if [ $? -ne 0 ];then
    57                 action "install mysql is failed!"  /bin/false
    58                 exit $?
    59         fi
    60         #check mysql
    61         /etc/init.d/mysqld start
    62         if [ $? -ne 0 ];then
    63                 action "mysql start is failed!"  /bin/false
    64                 exit $?
    65         fi
    66         chkconfig --add mysqld
    67         chkconfig mysqld on
    68         /usr/local/mysql/bin/mysql -e "update mysql.user set password=password('$PASSWD') where host='localhost' and user='root';"
    69         /usr/local/mysql/bin/mysql -e "update mysql.user set password=password('$PASSWD') where host='127.0.0.1' and user='root';"
    70         /usr/local/mysql/bin/mysql -e "delete from mysql.user where password='';"
    71         /usr/local/mysql/bin/mysql -e "flush privileges;"
    72         #/usr/local/mysql/bin/mysql -e "select version();" >/dev/null 2>&1
    73         if [ $? -eq 0 ];then
    74                 echo "+---------------------------+"
    75                 echo "+------mysql安装完成--------+"
    76                 echo "+---------------------------+"
    77         fi
    78         #/etc/init.d/mysqld stop
    79 }
    80   
    81 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





  • 相关阅读:
    TT ERP 业务功能分析 汇总
    CSRedis 使用说明
    多线程,控制Task的20个并发数量,全部子线程执行完后,获取所有返回的值
    React 和 vue的区别以及React的环境搭建,运行
    jar 包上传后 Xshell启动
    FileZilla 上传文件
    vue多环境配置
    el-tree 节点常用操作
    钉钉微应用
    Bonobo Git Server
  • 原文地址:https://www.cnblogs.com/51runsky/p/b8ad4e3343e6514e8de5446cb38a9a78.html
Copyright © 2011-2022 走看看