1.1 快速部署方案
✔ 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案。
解答:
1.tar 打包 先编译安装 打包—》分发—》解包(比如 mysql 打包后直接就可以使用
2.SaltStack,puppet,ansible
3.定制 rpm yum 仓库 yum 安装
4.openstack 虚拟机镜像和 docker 容器分发
1.2 回顾下安装软件的三种方式:
1、编译安装软件,优点是可以定制化安装目录、按需开启功能等,缺点是需要查找并实验出适合的编译参数,诸如MySQL之类的软件编译耗时过长。
2、yum安装软件,优点是全自动化安装,不需要为依赖问题发愁了,缺点是自主性太差,软件的功能、存放位置都已经固定好了,不易变更。
===>如果你现在还为是使用编译安装软件还是使用yum安装软件发愁,那你就out了。
3、编译源码,根据自己的需求做成定制RPM包–>搭建内网yum仓库–yum安装。结合前两者的优点,暂未发现什么缺点。可能的缺点就是RPM包的通用性差,只能适用于本公司的环境。另外一般人不会定制RPM包。这是中大型互联网企业运维自动化的必要技能。
这里也不介绍rpm的概念,想了解的朋友可以查看http://www.linuxidc.com/Linux/2017-10/148154.htm。
1.3 FPM打包工具
FPM的作者是jordansissel
FPM的github:https://github.com/jordansissel/fpm
FPM功能简单说就是将一种类型的包转换成另一种类型。
1.3.1 支持的源类型包
类型 |
说明 |
dir |
将目录打包成所需要的类型,可以用于源码编译安装的软件包 |
rpm |
对rpm进行转换 |
gem |
对rubygem包进行转换 |
python |
将python模块打包成相应的类型 |
1.3.2 支持的目标类型包
类型 |
说明 |
rpm |
转换为rpm包 |
deb |
转换为deb包 |
solaris |
转换为solaris包 |
puppet |
转换为puppet模块 |
1.4 FPM的安装与使用
1.4.1 安装FPM工具
fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。
# 安装ruby模块
yum -y
install
ruby rubygems ruby-devel
[root@
test
~]
# rpm -qa ruby rubygems ruby-devel
ruby-1.8.7.374-5.el6.x86_64
ruby-devel-1.8.7.374-5.el6.x86_64
rubygems-1.3.7-5.el6.noarch
# 查看当前使用的rubygems仓库
gem sources list
# 添加阿里云的Rubygems仓库,外国的源慢,移除原生的Ruby仓库
gem sources -a http:
//mirrors
.aliyun.com
/rubygems/
gem sources --remove http:
//rubygems
.org/
# 安装fpm,gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用。
gem
install
json -
v
1.8.3
gem
install
fpm -
v
1.3.3
# 上面的2步安装仅适合CentOS6系统,CentOS7系统一步搞定,即gem install fpm
1.4.2 FPM工具常用参数
参数 |
参数说明 |
-s |
指定源类型 |
-t |
指定目标类型,即想要制作为什么包 |
-n |
指定包的名字 |
-v |
指定包的版本号 |
-C |
指定打包的相对路径 |
-d |
指定依赖于哪些包 |
-f |
第二次打包时目录下如果有同名安装包存在,则覆盖它 |
-p |
输出的安装包的目录,不想放在当前目录下就需要指定 |
–post-install |
软件包安装完成之后所要运行的脚本;同–after-install |
–pre-install |
软件包安装完成之前所要运行的脚本;同–before-install |
–post-uninstall |
软件包卸载完成之后所要运行的脚本;同–after-remove |
–pre-uninstall |
软件包卸载完成之前所要运行的脚本;同–before-remove |
至此,FPM工具安装完成。
1.5 【实例】定制nginx的RPM包
1.5.1 安装nginx(一键化脚本)
yum
install
-y pcre-devel openssl-devel
mkdir
-p
/server/tools
cd
/server/tools
wget -q http:
//nginx
.org
/download/nginx-1
.10.2.
tar
.gz
ls
-l nginx-1.10.2.
tar
.gz
useradd
www -s
/sbin/nologin
-M
tar
xf nginx-1.10.2.
tar
.gz
cd
nginx-1.10.2
.
/configure
--user=nginx --group=nginx --prefix=
/application/nginx-1
.10.2 --with-http_stub_status_module --with-http_ssl_module
make
make
install
ln
-s
/application/nginx-1
.10.2
/application/ngin
1.5.2 编写脚本(for –post-install)
[root@
test
~]
# cd /server/scripts/
[root@
test
scripts]
# vim nginx_install_devel.sh
#!/bin/bash
useradd
-M -s
/sbin/nologin
www -u 666
ln
-s
/application/nginx/sbin/
*
/usr/local/sbin/
ln
-sf
/application/nginx-1
.10.2
/application/nginx
1.5.3 打包–制作rpm包
注意:在进行打包的时候要将访问停止
killall nginx
[root@
test
~]
# fpm -s dir -t rpm -n nginx -v 1.10.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_install_devel.sh -f /application/nginx-1.10.2/
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=>
"nginx-1.10.2-1.x86_64.rpm"
}
1.5.4 安装rpm包
推荐使用yum 安装
yum -y localinstall nginx-1.10.2-1.x86_64.rpm
这个命令会自动先安装rpm包的依赖,然后再安装rpm包。
另:可以搭建本地yum仓库实现yum 安装自动解决依赖关系
#简易的搭建yum源的方法可以参考↓ http://www.linuxidc.com/Linux/2017-10/148153.htm
本博文中所使用的系统版本为: CentOS release 6.9 (Final) 内核版本为: 2.6.32-696.10.1.el6.x86_64 望读者注意! 大家如果有什么问题可以留言!我看到后会尽快回复!
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/148152.htm