首页
学习
活动
专区
工具
TVP
发布

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服务器,实际生产中可将所需要配置的主机全部列入其中。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171222G0CR6N00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券