Ansible使用角色二进制包部署mysql5.6

一、前期准备

  1. 所有服器配置好阿里源和epel源

    阿里云下载Centos的仓库源

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    

    从阿里云下载第三方epel源 (这里直接下载,未使用rpm -Uvh方式安装epel源)

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
  2. 准备一台服务器安装ansible,并修改配置文件

    安装ansible

    yum -y install ansible
    

    查看版本信息

    ansible --version
    

    ansible主配置文件内容解析

    ansible的配置文件为 /etc/ansible/ansible.cfg ,其中大部分的配置内容无需进行修改,主要是将默认模块改为shll模块,取消host_ key_ checking = False 的注释。

    [defaults]
    #inventory      = /etc/ansible/hosts         # 主机列表配置文件
    #library        = /usr/share/my_modules/		#库文件存放目录
    #module_utils   = /usr/share/my_module_utils/
    #remote_tmp     = ~/.ansible/tmp			#临时py命 令文件存放在远程主机目录
    #local_tmp      = ~/.ansible/tmp			#本机的临时命令执行目录
    #forks          = 5							#默认并发数
    #sudo_user      = root						#默认sudo用户
    #ask_sudo_pass = True			#每次执行ansible命令是否询问ssh密码
    #ask_pass      = True
    #remote_port    = 22
    #host_key_checking = False 	   #检查对应服务器的host_ key,建议取消注释
    #log_ path=/var/log/ansib1e.log	 	#日志文件, 建议启用
    #module_name = command				#默认模块,可以修改为she11模块
    

    修改主机列表配置文件 /etc/ansible/hosts

  3. 在ansible服务器上给所有服务器做免密登录

    sshpass批量实现基于key验证脚本,将NET和IP修改为自己主机IP

    vi pass.sh
    
    ssh-keygen -f /root/.ssh/id_rsa -P ''
    NET=192.168.18
    export SSHPASS=env
    for IP in {3..5};do
    	sshpass -e ssh-copy-id $NET.$IP
    done
    

    执行脚本

    . pass.sh
    
  4. ansible服务器下载好mysql5.6二进制包

    https://downloads.mysql.com/archives/community/(注意:选择操作系统时选Linux-Generic)

  5. 确认目标服务器未安装mysql或mariadb

    rpm -aq|grep mysql
    
    rpm -aq|grep mariadb
    

    若已安装则将其卸载

    在目标服务器创建数据库初始化数据存放目录

    mkdir -pv /data/mysql
    

二、创建mysql角色

文件结构如下
在这里插入图片描述
在 /etc/ansible/roles/ 目录下创建一个mysql目录,并在mysql目录下创建files目录和tasks目录,并将mysql二进制包放在files目录下,创建yml文件。

my.cnf

[mysqld]
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
datadir=/data/mysql
innodb_file_per_table=1
log-bin
pid-file=/data/mysql/mysqld.pid

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld_safe]
log-error=/var/log/mysqld.log

secure_mysql.sh

#!/bin/bash
/usr/local/mysql/bin/mysql_secure_installation <<EOF

y
xfp 
xfp
y
y
y
y
EOF

main.yml 任务执行顺序

- include: install.yml
- include: group.yml
- include: user.yml
- include: unarchive.yml
- include: link.yml
- include: data.yml
- include: config.yml
- include: service.yml
- include: path.yml
- include: secure.yml

install.yml 下载依赖包

- name: install mysql package
  yum: name=libaio,perl-Data-Dumper,perl-Getopt-Long

group.yml 创建组

- name: create mysql group
  group: name=mysql gid=306

user.yml 创建用户

- name: create mysql user
  user: name=mysql uid=306 group=mysql shell=/sbin/nologin system=yes create_home=no home=/data/mysql

unarchive.yml 加压分发二进制包

- name: copy tar to remote hosts and file mode
  unarchive: src=mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz dest=/usr/local/ owner=root group=root

link.yml 建立软连接

- name: mkdir /usr/local/mysql
  file: src=/usr/local/mysql-5.6.46-linux-glibc2.12-x86_64 dest=/usr/local/mysql state=link

data.yml mysql初始化数据目录

- name: data dir
  shell: chdir=/usr/local/mysql ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql

config.yml 分发my.cnf配置文件

- name: config my.cnf
  copy: src=my.cnf dest=/etc/my.cnf

service.yml 启动服务

- name: service script
  shell: /bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld;/etc/init.d/mysqld start;chkconfig --add mysqld;chkconfig mysqld on

path.yml 修改环境变量

- name: PATH variable
  copy: content='PATH=/usr/local/mysql/bin:$PATH' dest=/etc/profile.d/mysql.sh

secure.yml 安全加固(不执行这一步,登录mysql不需要密码)

- name: secure script
  script: secure_mysql.sh

注:yml文件需要注意缩进,并且不能使用tab。

创建和 roles 目录的同级的 playbook yml文件:role_mysql.yml

- hosts: master
  remote_user: root

  roles:
   - {role: mysql,tags: ["mysql","db"]}

在这里插入图片描述

执行playbook

ansible-playbook role_mysql.yml

等任务执行完就可以在目标节点登录mysql了,用户root的密码为secure_mysql.sh文件中的第三行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值