一键自动化部署(定制rpm包,yum仓库)

部署--前篇

上午将MySQL多实例部署完成,由于有公司特定一些需求,需要源码安装,现在需要批量部署,如果一台台部署,就太过麻烦,而且浪费时间,这个时候自动化部署 就体现出价值了

我们将MySQL制作定制化rpm包,然后放到我们的yum仓库中,在将yum所有客户端,都指向yum源,之后就是喝喝茶,看看片,轻松批量部署了,废话不多说,开干。

如果MySQL多实例还没配置的,或不了解软件的安装方式 的

请参考:http://qiuyt.blog.51cto.com/1229789/1920686

一、Yum安装介绍

yum就是{Yellow dog Updater, Modified} 黄色的狗,用来针对rpm包的管理器。

它的优点:简单、高效,解决依赖问题;缺点:前期定制包复杂

二、制作rpm包

FPM的作者是jordansissel

FPM的github:https://github.com/jordansissel/fpm

FPM功能简单说就是将一种类型的包转换成另一种类型

rpm:redhat 包管理器,具有升级、查询、验证,安装,卸载等5大功能;

可通过rpm --help 获取帮助信息  ##--hep用来查看系统内置参数

1,rpm 支持那些包的转换?

源类型包:

    dir :将目录打包成rpm包,就是将编译安装好的目录,直接打包,到对端就相当于安装目录解压。
    rpm:对rpm进行转换
    gem:对rubygem进行转换
    pythom :将python包打包成相应的类型

目标类型包:可以转发成什么类型的包

    rpm         转换为rpm包
    deb         转换为deb包
    solaris       转换为solaris包
    puppet       转换为puppet模块

 2,安装FPM打包工具

1)安装ruby模块

 yum -y install ruby rubygems ruby-devel
 gem sources list  # 查看当前使用的rubygems仓库

2)更新yum源

 注:添加国内的 淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库

gem sources --add http://gems.ruby-china.org --remove http://rubygems.org/

3)安装fpm及json依赖包

gem install json -v 1.8.3
gem install fpm -v 1.3.3

gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用就行。

# 上面的2步安装仅适合CentOS6系统,CentOS7系统一步搞定,即gem install fpm

4)验证

rpm --help  #如果有输出代表安装成功

3,FPM参数说明

详细使用见fpm –help

常用参数
-s          指定源类型  (例如dir 目录)
-t          指定目标类型,即想要制作为什么包 (比如想做个rpm包)
-n          指定包的名字 ,-name 
-v          指定包的版本号  (用于区分rpm,有同名字但版本不同)
-C          指定打包的相对路径  Change directory to here before searching forfiles
-d          指定依赖于哪些包
-f          第二次打包时目录下如果有同名安装包存在,则强制覆盖它
-p          输出的安装包的目录,不想放在当前目录下就需要指定
--post-install      执行rpm包之后所要运行的脚本;同--after-install
--pre-install      软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall    软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall     软件包卸载完成之前所要运行的脚本;同--before-remove

4,定制MySQL rpm包

用法:rpm包执行前运行的脚本 + rpm包 + rpm包执行后脚本

我们这个myslq 之前是编译安装的,所以rpm包运行前脚本没有,直接考虑哪些目录需要打包

1,确认打包目录

rpm需要打包的目录有哪些:(从你编译安装过程中查看哪些需要打包)

/data 目录 ##这个是多实例的数据存放目录
/application/mysql-5.5.32/   #这个是mysql安装目录

2,创建脚本

打包后需要执行的命令,放入脚本中(从你编译安装过程中查看哪些命令需要解压目录后执行)

确认后,创建脚本
mkdir -p /server/scripts && cd /server/scripts
cat >>mysql_rpm.sh<<EOF 
#!/bin/bash
useradd -s /sbin/nologin mysql -M -u 503
ln -s /application/mysql-5.5.32/ /application/mysql   #创建软链接
find /data -type f -name "mysql"|xargs chmod +x #给mysql启动脚本+执行权限
chown -R mysql.mysql /data  #授权/data目录mysql 属主属组
cp /application/mysql/bin/* /usr/local/sbin/
/data/3306/mysql start    #启动多实例
/data/3307/mysql start
echo "# mysql multi instances" >>/etc/rc.local  #添加开机自启动
echo "/data/3306/mysql start " >>/etc/rc.local  
echo "/data/3307/mysql start " >>/etc/rc.local
EOF

3,生成rpm包

将目录打包(rpm包,包内包含脚本及目录)(前面是框  后面是苹果)

1)Mysql定制rpm包

[[email protected] scripts]# fpm -s dir -t rpm -n mysql -v5.5.32  --post-install /server/scripts/mysql_rpm.sh -f /data/ /application/mysql-5.5.32/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"mysql-5.5.32-1.x86_64.rpm"}
[[email protected] scripts]# ls
mysql-5.5.32-1.x86_64.rpm  mysql_rpm.sh
#-s 指定目录类型 -t 指定打包类型 -n指定rpm包名 -v 版本号  --post-install 打包后执行的脚本  -f 指定要打包的目录路径
#注意打包要使用相对路径问题

2)站点部署www bbs blog

fpm -s dir -t rpm -n three_web -v 1.0    -f /application/nginx/html/

3)LB负载均衡

fpm -s dir -t rpm -n lb -v 1.8.1 -d ‘pcre-devel,openssl-devel‘ --post-install /server/scripts/install_LB.sh -f  /application/nginx-1.8.1/
lb-1.8.1-1.x86_64

三、查看rpm包内的信息

rpm -qp --scripts  mysql-5.5.32-1.x86_64.rpm     #查看包内脚本信息
rpm -qpl mysql-5.5.32-1.x86_64.rpm      ##查看rpm包内包含哪些文件及目录

注意:mysql这个目录比较大,用fpm打包耗时长。平时我们有可能需要对nginx或php做优化,这样又得重新打包。因此我们可以将mysql分离出来,分别打包。只需在制作nginx+php的rpm包时添加mysql的依赖即可。

四、放入YUM仓库,客户端一键安装测试

    1)上传rpm包到yum仓库

scp mysql-5.5.32-1.x86_64.rpm [email protected]:/application/yum/centos6.8/x86_64
#我这里yum仓库为内网使用IP地址:172.16.1.101,如果没有VPN 可以考虑先给个外网IP10.0.0.101

   2) 更新yum仓库list

[[email protected] x86_64]# createrepo --update /application/yum/centos6.8/x86_64/
rpm包名:mysql-5.5.32-1.x86_64.rpm

   3)一键部署Mysql(客户端)

#开启一台新的设备,配置yum仓库客户端
cd /etc/yum.repos.d
mkdir yum_bak && mv *repo yum_bak
cat >>oldboy.repo<<EOF
[oldboy]
name=Server
baseurl=http://172.16.1.101/yum
enable=1
gpgcheck=0
EOF
yum clean all      
##清空缓存

测试MySQL 登录

[[email protected] ~]# netstat -lntup|grep 33
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2812/mysqld         
tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      2833/mysqld
[[email protected] ~]# mysql -uroot -S /data/3306/mysql.sock 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.32-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.03 sec)

##为安全起见设置myslq密码 及 删除无用账户,权限最小化 设置等等都可自行配置了
过段时间我也会,写一篇关于mysql安全的帖子,请您多多支持,多多关注,谢谢。
如有问题随时留言,沟通,感谢!!!
时间: 2024-10-19 16:39:57

一键自动化部署(定制rpm包,yum仓库)的相关文章

自动化部署必备技能—搭建YUM仓库

目录 1. YUM仓库介绍 1.1 YUM是什么 1.2 YUM源是什么? 1.3 YUM源工作原理 2. YUM安装步骤 3. YUM服务配置文件及命令介绍 3.1 yum主配置文件yum.conf 3.2 yum命令使用. 4. 镜像同步公网yum源 1. YUM仓库介绍 参考博文:http://blog.oldboyedu.com/autodeploy-yum/ YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系.要成功的使用YUM工具安装更新软件或系统,就

自动化部署必备技能——搭建YUM仓库

yum主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系.要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源.网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败.特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受.因此我们在优化系统时,都会更换国内的源. 相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性.有了局域网中

自动化部署必备技能——定制RPM包

回顾下安装软件的三种方式: 1.编译安装软件,优点是可以定制化安装目录.按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件,优点是全自动化安装,不需要为依赖问题发愁了,缺点是自主性太差,软件的功能.存放位置都已经固定好了,不易变更. ===>如果你现在还为是使用编译安装软件还是使用yum安装软件发愁,那你就out了. 3.编译源码,根据自己的需求做成定制RPM包–>搭建内网yum仓库–yum安装.结合前两者的优点,暂未发现什么缺点.

如何搭建yum仓库与定制rpm包

当我们自动仳部署集群的时候,想要快速的安装所有服务,搭建yum仓库与定制rpm包是我们首先要做的 原创作品,转载请注明出处.http://www.cnblogs.com/Csir/  本人导师---悠久之翼 #服务端1.#先保留平常下载下来的rpm包 sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf 这样当我们yum安装软件的时候,文件就是被保存下来: /var/cache/yum/ #部署nginx,提供80端口服务#安装依赖包 yum in

定制rpm包及搭建yum仓库

定制rpm包及搭建yum仓库 第1章 定制rpm包 1.FPM打包工具 FPM的作者是jordansisselFPM的github:https://github.com/jordansissel/fpmFPM功能简单说就是将一种类型的包转换成另一种类型. 支持的源类型包: dir         将目录打包成所需要的类型,可以用于源码编译安装的软件包 rpm         对rpm进行转换 gem         对rubygem包进行转换 python      将python模块打包成相应

定制rpm包、搭建yum仓库

一.定制rpm包 1.环境 [[email protected] ~]# cat /etc/redhat-release  CentOS release 6.9 (Final) [[email protected] ~]# uname -r2.6.32-696.el6.x86_64 [[email protected] ~]# /etc/init.d/iptables status iptables: Firewall is not running. [[email protected] ~]#

Linux 定制rpm包

 定制rpm包 说明:这些操作全部在管理服务器内操作. 定制rpm包,搭建内网yum仓库,通过kickstart批量系统安装,这是互联网企业运维自动化的必要技能,自动化运维的基石. 1.1 面试题 有100台服务器想安装系统.你有什么方案快速部署并优化吗?需要多少时间搞定? 1.1.1 解决方案 (1) tar打包:先编译安装.打包.批量分发.解包: (2) saltstack.puppet.ansible批量部署: (3) 定制rpm所.搭建yum仓库.yum安装: (4) openstack

定制RPM包

目录 1. 安装软件的方式... 1 2. 定制RPM包... 1 2.1 RPM简介... 2 2.2 fpm工具介绍... 2 2.3 FPM安装  *****. 3 2.4 yum安装时如何解决依赖问题的... 4 3. 实战定制nginx的RPM包  *****. 4 3. 安装rpm包  *****. 7 4. 定制LNMP的RPM包思路... 8 1. 安装软件的方式 1 编译安装软件 优点:定制优化安装目录:按需开启功能:可定制(定制安装目录和软件功能),一般情况下不需要网络,可选

FPM定制RPM包

软件安装的常见方式: 1.编译安装: 优点:可以定制化安装目录,按需开启功能等. 缺点:需要查找并实验出合适的编译参数,诸如MySQL之类的软件编译耗时过长. 2.yum安装软件 优点:全自动化安装,不需要为依赖问题发愁. 缺点:自主性太差,软件的功能.存放位置都固定好了,不易变更(定制rpm包恰好解决这一问题) FPM打包工具: 1.简介: FPM的作者是Jordansissel FPM的GITHUB:https://github.com/jordansissel/fpm 官网:http://