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服务器,实际生产中可将所需要配置的主机全部列入其中。
领取专属 10元无门槛券
私享最新 技术干货