Mysql自动化快速安装部署

Mysql自动化快速安装部署

一、简介

软件开发实际生产测试过程中,时常用到Mysql数据库,人工的去部署和安装新的Mysql服务器,不仅配置复杂过程缓慢,并且不适用于大规模部署与安装。为了更具效率的完成MySQL数据库大规模的自动化的快速安装与部署,我们引出今天所要说到的主角——Ansible。

Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

playbook是Ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态。playbook就像Ansible控制器给被控节点列出的的一系列to-do-list,而被控节点必须要完成。也可以这么理解,playbook 字面意思,即剧本,现实中由演员按照剧本表演,在Ansible中,这次由计算机进行表演,由计算机安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情。

二、运行背景

当前有两台主机:192.168.91.130 与 192.168.91.131。其中192.168.91.130 安装ansible,作为管控主机

192.168.91.131 不需要ansible,作为被管理的远程主机。

Ansible一个重要的优点就是不需要在节点上安装代理软件,Ansible通过SSH执行所有功能。需要管理的节点被添加到Ansible配置环境,SSH授权密钥被附加到每个节点上,这与运行Ansible的用户有关。一旦完成了这步,Ansible主服务器可以通过SSH与节点进行通信,执行所有必要的任务

本文中将实现在192.168.91.130安装ansible,通过playbook剧本的编写与运行,控制192.168.91.131完成mysql的安装。

三、Ansible安装

为了符合联通实际场景,本文中所有安装均为离线安装。

Ansible的安装有多种方式,本文采取pip安装方式。

(下文请向上滑动阅览)

(1)安装python环境,因centos附带python环境,故略过此环节。

(2)安装setuptools软件包

本机中输入http://pypi.python.org/packages/source/s/setuptools/setuptools-2.0.tar.gz,得到setuptools安装包,通过xftp等方式传入服务器中,

找到并解压setuptools安装包

# tar zxvf setuptools-2.0.tar.gz

# cd setuptools-2.0

编译setuptools

# python setup.py build

开始执行setuptools安装

# python setup.py install

完成setuptools安装

(3)安装pip

在 https://pypi.python.org/pypi/pip 下载最新的pip,传入服务器

然后运行 tar -xvf pip-****.tar.gz 对pip安装压缩包进行解压,

cd pip-****/ 进入解压后的目录,

python setup.py install 开始安装pip,

完成pip安装

(4)安装ansible

在 https://pypi.python.org/pypi 搜索ansible下载最新版本,传入服务器

运行 pip install ansible-***.tar.gz

提示缺失依赖包

依次安装所需依赖包:(不同服务器视情况而定)

对于需要安装的包,可在 https://pypi.python.org/pypi 搜索

安装顺序(不同服务器视情况而定):python-devel-2.7.5-58.el7.x86_64.rpm,libffi-devel-3.0.13-18.el7.x86_64.rpm,pycparser,cffi,six,bcrypt,enum34-1.1.6-py2-none-any.whl,asn1crypto,idna,ipaddress,cryptography-2.1.4-cp27-cp27mu-manylinux1_x86_64.whl,PyNaCl-1.2.1-cp27-cp27mu-manylinux1_x86_64.whl,pyasn1,paramiko,MarkupSafe,Jinja2,PyYAML,ansible

最后安装完ansible后,输入ansible --version 可查看是否安装成功

如下图,则安装成功。

四、Ansible相关配置

(1)配置主机组

安装成功后

创建 /etc/ansible/hosts 在其中加入被管理的远程主机

运行 vi /etc/ansible/hosts

输入相关主机组

[web]

192.168.91.131 ansible_ssh_host=192.168.91.131 ansible_ssh_user="root" ansible_ssh_pass="!qazxsw@"

此内容意为创建一个web组,组中包含主机192.168.91.131 且附带user与password信息。

输入 ansible web --list-hosts

可查看分组下的主机

(2)安装sshpass

下一步需要推送本机公钥到所管理的服务器

Ansible所有操作需要通过ssh远程操作,且第一次通过ansible推送公钥需要使用password,使用password就先要在管理服务器安装sshpass组件,

在https://sourceforge.net/projects/sshpass/ 下载最新的sshpass程序,

依次运行:

tar -zxvf sshpass-1.05.tar.gz 解压sshpass压缩包,

cd sshpass-1.05 进入解压后的目录,

./configure 将安装的软件进行配置,

make && make install 编译并安装,

完成安装

(3)生成秘钥公钥并将公钥推送到被管理主机

本机输入:ssh-keygen -t rsa (一直回车)产生相关秘钥,

秘钥自动放在: /root/.ssh,

通过ansible批量推送公钥,

首先编写推送公钥的playbook

vi pushssh.ymal,创建并编译pushssh.ymal

pushssh.ymal中输入:

# Using alternate directory locations:

- hosts: web

user: root

tasks:

- name: ssh-copy

authorized_key: user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"

tags:

- sshkey

:wq退出保存后运行 ansible-playbook pushssh.ymal

完成公钥推送,成功后如下图:

五、Ansible-playbook安装mysql

(1)首先在管理服务器端配置yum源(详细yum源配置可参照相关网上资源,此处不做过多介绍)

(2)编写mysql安装的ymal文件

vi installmysql.ymal 创建并编译installmysql.ymal

# Using alternate directory locations:

- hosts: web

user: root

tasks:

- name: 添加yum源

copy: src=/develop/oldboy.repo dest=/etc/yum.repos.d

- name: 卸载mariadb

command: rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps

- name: mysql安装

command: yum -y --enablerepo=oldboy --disablerepo=base,extras,updates,epel install mysql-community-libs-compat.x86_64

command: yum -y --enablerepo=oldboy --disablerepo=base,extras,updates,epel install mysql-community-client.x86_64

command: yum -y --enablerepo=oldboy --disablerepo=base,extras,updates,epel install mysql-community-server.x86_64

- name: mysql启动

service: name=mysqld state=started

- name: mysql开机启动

command: chkconfig mysqld on

/develop/oldboy.repo为本机文件,通过ansible推送至被管理主机的/etc/yum.repos.d目录内,以完成yum源的添加工作。

/develop/oldboy.repo文件内容为:

[oldboy]

name=Server

baseurl=http://192.168.91.130

enable=1

gpgcheck=0

意为添加名为oldboy的yum源,其baseurl=http://192.168.91.130

(3)playbook运行安装

管理服务器中运行installmysql.ymal:ansible-playbook installmysql.ymal

则mysql在被管理节点安装完成!

(4)获取初始密码

ansible web -a "grep 'temporary password' /var/log/mysqld.log"

得到192.168.91.131 主机mysql账号为root 密码为VaAjX6R!—fq

(5)登录被管理主机,登录mysql

运行mysql –uroot –p

输入密码:VaAjX6R!—fq

可见mysql在被管理主机192.168.91.131上安装成功。

若要完成大批量的主机自动安装与部署,只需在管理节点的/etc/ansible/hosts文件中配置添加相应要安装的主机ip即可,本示例由于服务器资源局限,只配置了一台192.168.91.131服务器,实际生产中可将所需要配置的主机全部列入其中。

本文来自企鹅号 - 运营中心的半亩方塘媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏性能与架构

如何管理linux开机自启服务?

自启动服务非常重要,例如 (1)需要手动添加希望自启的服务,如安装svn后没有自动添加,就需要我们手动加入 (2)安装某些程序后,自动加到自启动了,但我们...

30811
来自专栏魏琼东

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 系统管理使用教程

前言          所谓AgileEAS.NET平台系统管理即指AgiLeEAS.NET平台中用于完成插件的发现、安装、配置及组织管理功能的一组具体应用,以...

2086
来自专栏代码小睿

静态页面如何实现 include 引入公用代码

  一直以来,我司的前端都是用 php 的 include 函数来实现引入 header 、footer 这些公用代码的,就像下面这样: <!-- index....

2726
来自专栏IMWeb前端团队

后台系统搭建记录

背景: 最近一段时候由于需要搭建后台测试系统,因此需要在centos系统下搭建mysql、apache、fastcgi、svn,由于网上的教程比较零散并且很多...

2736
来自专栏漏斗社区

WordPress _v4.6远程代码执行漏洞复现

reborn WordPress _v4.6远程代码执行漏洞是PHPMailer漏洞(CVE-2016-10033)在WordPress Core代码的体现,...

5009
来自专栏祝威廉

StreamingPro-Editor, 基于Intellij Idea 的编辑器插件发布

StreamingPro在内部已经用在比较复杂的项目上了。所以导致配置文件巨复杂,之前同事提到这事,然后我自己把配置代码拉下来,看了下确实如此。一开始想着能否利...

982
来自专栏L宝宝聊IT

vCenter server 的部署和实施

1887
来自专栏代码小睿

静态页面如何实现 include 引入公用代码

  一直以来,我司的前端都是用 php 的 include 函数来实现引入 header 、footer 这些公用代码的,就像下面这样:

3220
来自专栏py+selenium

逻辑漏洞之并发测试【2】

1126
来自专栏编程微刊

微信小程序云开发 初学者入门教程一

本教程适合刚刚入门的小白,云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代...

1.2K3

扫码关注云+社区

领取腾讯云代金券