ansible-playbook实现MySQL的二进制部署
1、ansible服务器配置
1.1 安装ansible
# yum -y install ansible
1.2 配置主机清单文件
# vi /etc/ansible/hosts
[local]
10.0.0.7 ansible_connection=local #指定连接类型为本地,无需通过ssh连接
[mysql]
10.0.0.17
10.0.0.27
10.0.0.37
1.3 mysql配置文件
# cat /apps/mysql/my.cnf
[mysqld]
user=mysql
datadir=/data/mysql
socket=/data/mysql/mysql.sock
innodb_file_per_table=on
skip_name_resolve = on #禁止主机名解析,建议使用
[client]
port=3306
socket=/data/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/data/mysql/mysql.pid
2、ssh免密授权
2.1 使用脚本实现
# bash ssh_key.sh
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:laHw87m60FI35AeBGdv5NhU8PW4Ol77WFPssLZK+LEY root@7-1
The key's randomart image is:
+---[RSA 2048]----+
| . .+o ... |
| oo+ = oo.|
| = B o.o|
| * + o * |
| S * = * o|
| o .E= . +.|
| o ... . ++|
| o .o.o oo=|
| oo o+o.o |
+----[SHA256]-----+
sshpass-1.06-2.el7.x86_64
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -o 'StrictHostKeyChecking=no' '10.0.0.7'"
and check to make sure that only the key(s) you wanted were added.
ssh: connect to host 10.0.0.3 port 22: Connection refused
lost connection
ssh: connect to host 10.0.0.3 port 22: Connection refused
lost connection
known_hosts 100% 1195 619.5KB/s 00:00
known_hosts 100% 1195 1.1MB/s 00:00
known_hosts 100% 1195 604.3KB/s 00:00
known_hosts 100% 1195 1.8MB/s 00:00
known_hosts 100% 1195 1.6MB/s 00:00
known_hosts 100% 1195 1.5MB/s 00:00
known_hosts
2.2 ssh健康性检查
# ansible mysql -m ping
10.0.0.7 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
10.0.0.17 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
10.0.0.37 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
10.0.0.27 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
3、批量安装mysql
# cat install-bin-mysql5.6.yml
---
# 批量安装二进制mysql5.6
# 将配置文件my.cnf放到目录/apps/mysql下
- hosts: mysql
remote_user: root
gather_facts: no
tasks:
- name: install packages
yum : name=libaio,perl-Data-Dumper,autoconf state=installed
- name: create group mysql
group:
name: mysql
gid: 306
system: yes
- name: create user mysql
user:
name: mysql
uid: 306
group: mysql
shell: /sbin/nologin
system: yes
home: /data/mysql
- name: download mysql_file
unarchive :
src: "http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz"
dest: "/usr/local"
owner: root
remote_src: yes
- name: prepare Soft links
shell: ln -s mysql-5.6.51-linux-glibc2.12-x86_64/ mysql
args:
chdir: "/usr/local"
- name: bash mysql_instll_db
shell: ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql/
args:
chdir: "/usr/local/mysql"
- name: prepare my.cnf
copy:
src: "/apps/mysql/my.cnf"
dest: "/etc/my.cnf"
- name: prepare service file
shell: cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld && chkconfig --add mysqld && chkconfig mysqld on
- name: add path
shell: echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh && . /etc/profile.d/mysql.sh
- name: start mysql
shell: service mysqld start
# ansible-playbook --syntax-check install-bin-mysql5.6.yml #检查语法
# ansible-playbook install-bin-mysql5.6.yml #运行
PLAY [mysql] ******************************************************************************
TASK [install packages] *******************************************************************
changed: [10.0.0.17]
changed: [10.0.0.37]
changed: [10.0.0.27]
TASK [create group mysql] *****************************************************************
changed: [10.0.0.17]
changed: [10.0.0.27]
changed: [10.0.0.37]
TASK [create user mysql] ******************************************************************
changed: [10.0.0.37]
changed: [10.0.0.17]
changed: [10.0.0.27]
TASK [download mysql_file] ****************************************************************
changed: [10.0.0.17]
changed: [10.0.0.27]
changed: [10.0.0.37]
TASK [prepare Soft links] *****************************************************************
[WARNING]: Consider using the file module with state=link rather than running 'ln'. If
you need to use command because file is insufficient you can add 'warn: false' to this
command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
changed: [10.0.0.27]
changed: [10.0.0.37]
changed: [10.0.0.17]
TASK [bash mysql_instll_db] ***************************************************************
changed: [10.0.0.37]
changed: [10.0.0.27]
changed: [10.0.0.17]
TASK [prepare my.cnf] *********************************************************************
changed: [10.0.0.37]
changed: [10.0.0.17]
changed: [10.0.0.27]
TASK [prepare service file] ***************************************************************
changed: [10.0.0.17]
changed: [10.0.0.27]
changed: [10.0.0.37]
TASK [add path] ***************************************************************************
changed: [10.0.0.27]
changed: [10.0.0.17]
changed: [10.0.0.37]
TASK [start mysql] ************************************************************************
[WARNING]: Consider using the service module rather than running 'service'. If you need
to use command because service is insufficient you can add 'warn: false' to this command
task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
changed: [10.0.0.37]
changed: [10.0.0.17]
changed: [10.0.0.27]
PLAY RECAP ********************************************************************************
10.0.0.17 : ok=10 changed=10 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
10.0.0.27 : ok=10 changed=10 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
10.0.0.37 : ok=10 changed=10 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansible-playbook实现MySQL的二进制部署的更多相关文章
- 自动化运维(1)之二进制部署MySQL5.7
二进制部署MySQL5.7 这个文档用于基础解释,后面通过ansible的自动化对MySQL单实例进行安装部署. 1.解压文件 # tar zxvf mysql-5.7.22-linux-glibc2 ...
- ansible - playbook(剧组)
目录 ansible - playbook(剧组) 常用命令 五种传参方式 常用元素详解 tags handlers template when 循环 嵌套循环 ansible - playbook( ...
- Ansible--02 ansible playbook的应用
目录 Ansible playbook的应用 什么是playbook playbook的组成 playbook和Ad-Hoc对比 YAML语法 安装httpd练习 rsyncd实战 实战1: 实战2: ...
- Ansible之roles模块--lnmp分布式部署
Ansible之roles模块--lnmp分布式部署 目录 Ansible之roles模块--lnmp分布式部署 1. role模块的作用 2. roles的目录结构 3. roles内个目录含义解释 ...
- K8S学习笔记之二进制部署Kubernetes v1.13.4 高可用集群
0x00 概述 本次采用二进制文件方式部署,本文过程写成了更详细更多可选方案的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansi ...
- Mysql读写分离方案-MySQL Proxy环境部署记录
Mysql的读写分离可以使用MySQL Proxy和Amoeba实现,其实也可以使用MySQL-MMM实现读写分离的自动切换.MySQL Proxy有一项强大功能是实现"读写分离" ...
- Ansible playbook 批量修改服务器密码 先普通后root用户
fsckzy Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...
- Ansible playbook基础组件介绍
本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...
- ansible入门四(Ansible playbook基础组件介绍)
本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...
随机推荐
- golang 开源代理
export GOPROXY=https://goproxy.io 设置好之后就可以用go get 下载被墙的包了 项目地址:https://github.com/goproxyio/goproxy
- CAD快速入门--绝望
从入门到放弃 咱是革命一块砖,哪里需要哪里搬.(需求来自领导,让我一个敲代码的画CAD图纸,可以想象我在一个什么样的公司,在为什么样的老板赚钱,不多说了下面开始学习). CAD绘图功能优化与基本操作 ...
- 第10组 Alpha冲刺 (5/6)
1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/13996848.html ·作业博客:https://edu.cnblogs.co ...
- Spark-local本地环境搭建
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6815385772254822919/ 承接上一个文档<Spark源码编译> 解压spark编译好的压缩 ...
- SYCOJ1613递归函数
题目-递归函数 (shiyancang.cn) 记忆化dfs,注意dp的限制范围 #include<bits/stdc++.h> using namespace std; const in ...
- 使用VUE组件创建SpreadJS自定义单元格(二)
在上篇中,我们介绍了如何通过设置runtimeCompiler为true,在Vue中实现了动态创建电子表格组件.想了解具体内容可看点击查看使用VUE组件创建SpreadJS自定义单元格(一). 但是在 ...
- markdown mermaid状态图
状态图 状态图是一种用于计算机科学和相关领域描述系统行为的图.状态图要求描述的系统由有限数量的状态组成. 语法: stateDiagram-v2 [*] --> Still Still --&g ...
- python2.7发送邮件失败之——代码问题
使用python2.7发送邮件,代码如下: from email.header import Headerfrom email.mime.text import MIMETextimport smtp ...
- linux中链接错误的时候,快速找到缺失的符号在哪个库中
编译一个opencv程序,链接的时候出现大量的如下错误: /home/admin/opencv/opencv-master/modules/imgproc/src/color_lab.cpp:23: ...
- js复制标题和链接
问题 常常在写博客和作业时候,需要附上参考链接. 希望可以一键得到标题和链接. 解决方案 普通元素 可以使用findid然后复制 但是标题无法使用 <!DOCTYPE html> < ...