zoukankan      html  css  js  c++  java
  • ansible自动化部署MySQL5.7

    Ansible部署MySQL5.7.24

    一、分发密钥

    # 1.生成私钥
    [root@node1 ~]# ssh-keygen 
    # 2.向主机分发私钥
    [root@node1 ~]# ssh-copy-id root@192.168.1.111  #主
    [root@node1 ~]# ssh-copy-id root@192.168.1.112  #从
    # 3.添加主机组,/etc/ansible/hosts最后添加
    [mysql]
    192.168.1.111
    192.168.1.112
    [mysql_slave]
    192.168.1.112
    # 4.验证是否能免密通信
    [root@node1 ~]# ansible mysql  -m ping
    

    二、编写role

    2.1、进入ansible目录,创建文件

    [root@node1 ~]# cd /etc/ansible/roles
    [root@node1 roles]# mkdir mysql
    [root@node1 roles]# cd mysql/
    [root@node1 mysql]# mkdir {files,tasks,templates,vars}
    [root@node1 mysql]# ll
    total 0
    drwxr-xr-x 2 root root 6 Nov 25 22:42 files
    drwxr-xr-x 2 root root 6 Nov 25 22:42 tasks
    drwxr-xr-x 2 root root 6 Nov 25 22:42 templates
    drwxr-xr-x 2 root root 6 Nov 25 22:42 vars
    

    2.2、上传所需文件到对应的文件夹

    # 1、MySQL5.7.24安装包放到files文件夹下
    # 2、准备好my.cnf.j2放到templates问价夹下
    # 3、准备好mysqld.service.j2放到templates问价夹下
    

    2.3、编写tasks

    ---
    - name: 创建MySQL用户组
      group: name={{ mysql_group }}
    
    - name: 创建MySQL用户
      user: 
        name={{ mysql_user }}
        shell=/sbin/nologin
        group={{ mysql_group }}
    
    - name: 创建mysql部署相关路径
      file: path={{ item.path }} state={{ item.type }} owner={{ item.owner }} group={{ item.group }} mode={{ item.mode }}
      with_items:
        - {path: '{{ mysql_dir }}',type: 'directory',owner: '{{ mysql_user }}',group: '{{ mysql_group }}',mode: '755'}
        - {path: '{{ mysql_data_dir }}',type: 'directory',owner: '{{ mysql_user }}',group: '{{ mysql_group }}',mode: '755'}
        - {path: '{{ mysql_data_dirx }}',type: 'directory',owner: '{{ mysql_user }}',group: '{{ mysql_group }}',mode: '755'}
        - {path: '{{ mysql_binlog_dir }}',type: 'directory',owner: '{{ mysql_user }}',group: '{{ mysql_group }}',mode: '755'}
    
    - name: 拷贝配置文件
      template: src=my.cnf.j2 dest=/etc/my.cnf
      register: confChange
    
    - name: debug,练习使用
      debug: var=confChange
    
    - name: 部署MySQL数据库
      unarchive: src={{ mysql_pkg }} dest={{ mysql_dir }} mode=755
    
    - name: rename 
    shell: cd /app/ && mv mysql-5.7.24-linux-glibc2.12-x86_64/ mysql/
    
    - name: 添加环境变量
      blockinfile:
        dest: /etc/profile
        create: yes
        backup: yes
        block: export PATH={{ mysql_dir }}/mysql/bin:$PATH
    
    - name: 初始化数据
      shell: /app/mysql/bin/mysqld --initialize-insecure  --user=mysql --basedir={{ mysql_dir }}/mysql --datadir={{ mysql_data_dirx }}
    
    - name: copy 启动脚本
      template: src=mysqld.service.j2 dest=/etc/systemd/system/mysqld.service
    
    - name: 启动MySQL
      shell: systemctl daemon-reload && systemctl start mysqld && systemctl enable mysqld
    
    - name: 校验端口
      wait_for: port=3306 state=started delay=5 timeout=60
    

    2.4、变量的main文件

    # MySQL相关变量
    
    mysql_user: "mysql"
    mysql_group: "{{ mysql_user }}"
    
    mysql_dir: "/app"
    mysql_data_dir: "/data"
    mysql_data_dirx: "{{ mysql_data_dir }}/mysql"
    mysql_binlog_dir: "{{ mysql_data_dir }}/binlog"
    
    # 定义版本号及获取路径
    mysql_pkg: "mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz"
    mysql_pkx: "mysql"
    
  • 相关阅读:
    宠物收养场 Treap
    最佳课题选择
    [USACO08JAN]手机网络Cell Phone Network
    [USACO09MAR]地震损失2Earthquake Damage 2
    字符串距离 简单DP
    小行星群 网络流 二分图
    游览牧场 最小费用流
    BZOJ1391: [Ceoi2008]order
    BZOJ1570: [JSOI2008]Blue Mary的旅行
    BZOJ2243: [SDOI2011]染色
  • 原文地址:https://www.cnblogs.com/hsyw/p/14022481.html
Copyright © 2011-2022 走看看