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 ...
随机推荐
- Python_元类
什么是元类 我们知道,实例对象是由类创建的,那么类又是由什么创建的呢? 答案就是元类. 元类基本不会用到,但是就算不用,也应该去熟悉一下概念. 理解类也是对象 在大多数编程语言中,类就是一组用来描述如 ...
- postgreSQL更改表的数据类型
更改表的sql语句 ALTER table employees ALTER COLUMN status TYPE boolean USING status::boolean; 报下列错误 因为字段上设 ...
- PPT2010制作清明上河图动画
原文: https://www.toutiao.com/i6492312556915393038/ 新建一个空白幻灯片 选择"插入"选项卡,"图像"功能组,&q ...
- IK 分词器
目录 IK 分词器-介绍 IK 分词器-安装 环境准备:Maven 安装 IK 分词器 IK 分词器-使用 IK 分词器-介绍 现有问题:ES 默认对中文分词并不友好,实际上是把中文进行了每个字的分词 ...
- jenkins启动失败 jenkins.service failed Starting Jenkins bash: /usr/bin/java: 没有那个文件或目录
失败的原因 ● jenkins.service - LSB: Jenkins Automation Server Loaded: loaded (/etc/rc.d/init.d/jenkins; b ...
- 曼孚科技:“四管齐下”筑牢AI数据隐私安全防线
谈及数据,绕不开的一个话题就是数据隐私与数据安全.随着数字化进程加快,数据安全事件频发,据Risk Based Security统计,去年国际数据泄露事件近5000起,被泄露数据近41亿条,数据造成的 ...
- Cesium中级教程1 - 空间数据可视化(一)
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 本教程将教读者如何使用Cesium的实体(Entity)API绘 ...
- @WebServlet注解(Servlet注解)
@WebServlet 注解的属性 @WebServlet 用于将一个类声明为 Servlet,该注解会在部署时被容器处理,容器根据其具体的属性配置将相应的类部署为 Servlet.该注解具有下表给出 ...
- 通俗易懂详解iptables
防火墙相关概念 从逻辑上讲.防火墙可以大体分为主机防火墙和网络防火墙. 主机防火墙:针对于单个主机进行防护. 网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网. ...
- 3. hive 常用函数
常用日期函数 1.返回当前或指定时间的时间戳 select unix_timestamp();select unix_timestamp("2020-10-28",'yyyy-MM ...