• 使用Ansible自动化安装MySQL数据库


    使用Ansible自动化部署MySQL数据库

    环境声明

    Ansible版本:2.9.7
    MySQL数据库版本:5.7.28
    节点声明:
    192.168.1.62(Ansible管理端)
    192.168.1.63(被管理端,MySQL目标节点)
    
    # 两个节点已经做好免密并且配置好了Yum源
    
    # /etc/ansible/roles目录结构说明
    roles/
    ├── mysql
    │   ├── files
    │   │   ├── my.cnf
    │   │   ├── mysql-5.7.28-1.el7.x86_64.tar.gz
    │   │   └── setpassword.sh
    │   └── tasks
    │       └── main.yml
    └── mysqlinstall.yml
    

    my.cnf

    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
    
    [mysqld]
    #
    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M
    #
    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin
    #
    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    
    [mysql]
    default-character-set=utf8
    
    
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    validate_password_policy=0 
    validate_password_length=1 
    validate_password_special_char_count=0 
    validate_password_number_count=0 
    validate_password_mixed_case_count=0 
    lower_case_table_names=1 
    max_connections=50000
    !includedir /etc/my.cnf.d
    

    setpassword.sh

    #!/bin/bash
    #This script is set MySQL password for the frist time!
    mysqlinitpasswd=`grep 'temporary password' /var/log/mysqld.log |awk '{print $11}'`
    mysql -uroot -p${mysqlinitpasswd} -S /var/lib/mysql/mysql.sock -e "set global validate_password_policy=0;set global validate_password_length=1;set global validate_password_policy=0;set glob
    al validate_password_length=1;set password = password('Cosmo_123');grant all privileges on *.* to 'root' @'%' identified by 'Cosmo_123';flush privileges;" --connect-expired-password
    

    main.yml

    - name: unarchive Mysql
      unarchive: src=mysql-5.7.28-1.el7.x86_64.tar.gz dest=/opt/cosmo/com/ owner=root group=root
    - name: install need
      shell: yum -y install perl libaio* net-tools 
    - name: install mysql
      shell: yum install -y /opt/cosmo/com/mysql-5.7.28-1.el7.x86_64/*
    - name: initid mysql-server
      command: systemctl start mysqld
    - name: set enable mysql
      command: systemctl enable mysqld
    - name: cp my.cnf
      copy: src=my.cnf dest=/etc/my.cnf
    - name: set password
      copy: src=setpassword.sh dest=/opt/cosmo/com/ mode=755
    - name: sh setpassword
      shell: sh /opt/cosmo/com/mysql/setpassword.sh
    - name: restart mysqld
      shell: systemctl restart mysqld
    

    mysqlinstall.yml

    - hosts: db_server
      remote_user: root
      roles:
        - mysql
    

    /etc/ansible/hosts

    [db_server]
    192.168.1.63
    

    安装

    ansible-playbook /etc/ansible/roles/mysqlinstall.yml
    

    执行结果如下图

    在192.168.1.63上查看mysql是否安装成功

    systemctl status mysqld
    mysql -uroot -p'你的密码'
    

    安装成功!

  • 相关阅读:
    Unity 移动端的复制这么写
    Unity如何管理住Android 6.0 调皮的权限
    谷歌商店Apk下载器
    Unity编辑器下重启
    git pull error
    如何简单的实现新手引导之UGUI篇
    linux系统安装python3.5
    Grafana设置mysql为数据源
    hyper -v 虚拟机(win_server)忘记密码重置
    zabbix报错:the information displayed may not be current
  • 原文地址:https://www.cnblogs.com/fusheng11711/p/12964960.html
Copyright © 2020-2023  润新知