1.1 快速部署方案

 问题:当领导给你 100 台已经安装好系统的服务器,然后让优化,让你提出一个快速部署方案。

解答:

  1.tar 打包 先编译安装 打包》分发》解包(比如 mysql 打包后直接就可以使用

  2.SaltStackpuppetansible

  3.定制 rpm yum 仓库 yum 安装

  4.openstack 虚拟机镜像和 docker 容器分发

1.2 回顾下安装软件的三种方式:

===>如果你现在还为是使用编译安装软件还是使用yum安装软件发愁,那你就out了。

1.3 FPM打包工具

FPM的作者是jordansissel

FPMgithubhttps://github.com/jordansissel/fpm

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

1.3.1 支持的源类型包

<td style="width: 367.1pt; border-top: 1pt solid #4bacc6; border-right: 1pt solid #4bacc6; border-bottom: 1pt solid #4bacc6; border-left: none; background: #4bacc6; padding: 0cm 5.4pt;" valign="top" width="489">
  <p style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; courier new"4courier new";color: white;">说明</span></strong>
  </p>
</td>
<td style="width: 367.1pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; background: #DAEEF3; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="489">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">将目录打包成所需要的类型,可以用于源码编译安装的软件包</span>
  </p>
</td>
<td style="width: 367.1pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="489">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">对</span>rpm<span style="font-family: '微软雅黑',sans-serif;">进行转换</span>
  </p>
</td>
<td style="width: 367.1pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; background: #DAEEF3; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="489">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">对</span>rubygem<span style="font-family: '微软雅黑',sans-serif;">包进行转换</span>
  </p>
</td>
<td style="width: 367.1pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="489">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">将</span>python<span style="font-family: '微软雅黑',sans-serif;">模块打包成相应的类型</span>
  </p>
</td>

1.3.2 支持的目标类型包

<td style="width: 367.1pt; border-top: 1pt solid #4bacc6; border-right: 1pt solid #4bacc6; border-bottom: 1pt solid #4bacc6; border-left: none; background: #4bacc6; padding: 0cm 5.4pt;" valign="top" width="489">
  <p style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; courier new"4courier new";color: white;">说明</span></strong>
  </p>
</td>
<td style="width: 367.1pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; background: #DAEEF3; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="489">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">转换为</span>rpm<span style="font-family: '微软雅黑',sans-serif;">包</span>
  </p>
</td>
<td style="width: 367.1pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="489">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">转换为</span>deb<span style="font-family: '微软雅黑',sans-serif;">包</span>
  </p>
</td>
<td style="width: 367.1pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; background: #DAEEF3; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="489">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">转换为</span>solaris<span style="font-family: '微软雅黑',sans-serif;">包</span>
  </p>
</td>
<td style="width: 367.1pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="489">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">转换为</span>puppet<span style="font-family: '微软雅黑',sans-serif;">模块</span>
  </p>
</td>

1.4 FPM的安装与使用

1.4.1 安装FPM工具

fpmruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5

# 安装ruby模块

[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仓库

# 添加阿里云的Rubygems仓库,外国的源慢,移除原生的Ruby仓库

# 安装fpmgemrubygem仓库安装软件类似yumyum仓库安装软件。首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用。

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

1.4.2 FPM工具常用参数

<td style="width: 395.45pt; border-top: 1pt solid #4bacc6; border-right: 1pt solid #4bacc6; border-bottom: 1pt solid #4bacc6; border-left: none; background: #4bacc6; padding: 0cm 5.4pt;" valign="top" width="527">
  <p style="text-align: center;" align="center">
    <strong><span style="font-family: '微软雅黑',sans-serif; courier new"4courier new";color: white;">参数说明</span></strong>
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; background: #DAEEF3; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">指定源类型</span>
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">指定目标类型,即想要制作为什么包</span>
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; background: #DAEEF3; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">指定包的名字</span>
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">指定包的版本号</span>
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; background: #DAEEF3; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">指定打包的相对路径</span>&nbsp;
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">指定依赖于哪些包</span>
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; background: #DAEEF3; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">第二次打包时目录下如果有同名安装包存在,则覆盖它</span>
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">输出的安装包的目录,不想放在当前目录下就需要指定</span>
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; background: #DAEEF3; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">软件包安装完成之后所要运行的脚本;同</span>--after-install
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">软件包安装完成之前所要运行的脚本;同</span>--before-install
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; background: #DAEEF3; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">软件包卸载完成之后所要运行的脚本;同</span>--after-remove
  </p>
</td>
<td style="width: 395.45pt; border-top: none; border-left: none; border-bottom: solid #92CDDC 1.0pt; border-right: solid #92CDDC 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt;" valign="top" width="527">
  <p>
    <span style="font-family: '微软雅黑',sans-serif;">软件包卸载完成之前所要运行的脚本;同</span>--before-remove
  </p>
</td>

至此,FPM工具安装完成。

1.5 【实例】定制nginxRPM

  关于nginx的安装,可以参考:http://www.cnblogs.com/clsn/p/7750615.html

1.5.1 安装nginx(一键化脚本)

1.5.2 编写脚本(for –post-install)

1.5.3 打包-制作rpm

1.5.4 安装rpm

推荐使用yum 安装

这个命令会自动先安装rpm包的依赖,然后再安装rpm包。另:可以搭建本地yum仓库实现yum 安装自动解决依赖关系

 

<li>
  <a href="#14_FPM">1.4 FPM的安装与使用</a><ul>
    <li>
      <a href="#141_FPM">1.4.1 安装FPM工具</a>
    </li>
    <li>
      <a href="#142_FPM">1.4.2 FPM工具常用参数</a>
    </li>
  </ul>
</li>

<li>
  <a href="#15_nginxRPM">1.5 【实例】定制nginx的RPM包</a><ul>
    <li>
      <a href="#151_nginx">1.5.1 安装nginx(一键化脚本)</a>
    </li>
    <li>
      <a href="#152_for_--post-install">1.5.2 编写脚本(for --post-install)</a>
    </li>
    <li>
      <a href="#153_-rpm">1.5.3 打包-制作rpm包</a>
    </li>
    <li>
      <a href="#154_rpm">1.5.4 安装rpm包</a>
    </li>
  </ul>
</li>