1.1 搭建yum仓库

1.1.1 服务端部署流程:

1.    创建rpm包保存的目录

[root@m01 application]# mkdir yum

2.    部署nginx服务

此处忽略安装过程,nginx主配置文件如下:

[root@m01 yum]# cat /application/nginx/conf/nginx.conf

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile           on;

    keepalive_timeout  65;

    server {

        listen         80;

        server_name  localhost;

        location / {

            root   /application/yum;

            autoindex on;

            index  index.html index.htm;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

重启nginx服务即可

3.    挂载光盘到mnt目录

[root@m01 yum]# mount /dev/sr0  /mnt

[root@m01 yum]# cp a /mnt/* /application/yum    将所有rpm包复制到本地仓库目录中

4.    安装createrepo软件

[root@m01 yum]# yum -y install createrepo

5.    初始化本地yum仓库

[root@m01 yum]# createrepo -pdo /application/yum/ /application/yum/

Spawning worker 0 with 3240 pkgs

Workers Finished

Gathering worker results

 

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

说明:首次部署yum仓库不用执行,以后每次更新rpm包时需要更新

[root@m01 yum]# createrepo --update /application/yum/

 

访问本地ip地址  出现次页面证明服务端部署成功

1.1.2 客户端部署:

1.    备份原有的repo

[root@web01 ~]# cd /etc/yum.repos.d

[root@web01 ~]# mkdir /yum_bak

[root@web01 ~]# mv * /yum_bak

2.    创建本地yum文件

[root@web01 yum.repos.d]# cat local.repo

[local]

name=Server

baseurl=http://10.0.0.61

enabled=1

gpgcheck=0

3.    清空之前的缓存

[root@web01 yum.repos.d]# yum clean all

查看可以安装的软件包

[root@web01 yum.repos.d]# yum --enablerepo=local-disablerepo=base,extras,updates,epel list

可以安装软件了 如果安装不上检查服务端是否有rpm软件包或者清空客户端的yum缓存尝试

1.2 定制rpm

准备工作在那台服务器进行rpm打包就在那台机器上进行如下操作

 [root@web01 yum.repos.d]# yum -y install ruby rubygems ruby-devel

查看当前使用的rubygems仓库

[root@web01 yum.repos.d]# gem sources list

*** CURRENT SOURCES ***

 

http://rubygems.org/

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

[root@web01 yum.repos.d]# gem sources -a http://mirrors.aliyun.com/rubygems/ --remove http://rubygems.org/

http://mirrors.aliyun.com/rubygems/ added to sources

http://rubygems.org/ removed from sources

一下步骤不用操作,仓库有fpm的软件包的话直接安装fpm命令即可进行打包

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

[root@web01 yum.repos.d]# gem install json -v 1.8.3

[root@web01 yum.repos.d]# gem install fpm -v 1.3.3

以上两个软件安装一个即可,然后安装fpm,这里fpm安装没有成功,同学给的fpm的软件包然后我添加到yum仓库中安装成功的,下面可以进行rpm打包了

fpm一些常用参数

-s          指定源类型

-t          指定目标类型,即想要制作为什么包

-n          指定包的名字

-v          指定包的版本号

-C          指定打包的相对路径  Change directory to here before searching forfiles

-d          指定依赖于哪些包

-f          第二次打包时目录下如果有同名安装包存在,则覆盖它

-p          输出的安装包的目录,不想放在当前目录下就需要指定

--post-install      软件包安装完成之后所要运行的脚本;同--after-install

--pre-install       软件包安装完成之前所要运行的脚本;同--before-install

--post-uninstall    软件包卸载完成之后所要运行的脚本;同--after-remove

--pre-uninstall     软件包卸载完成之前所要运行的脚本;同--before-remove

1.2.1 定制nginx  rpm

1.    编写安装rpm软件后执行的脚本

[root@web01 scripts]# vim nginx_rpm.sh

#!/bin/bash

 

useradd www -M -s /sbin/nologin

ln -s /application/nginx-1.12.2/ /application/nginx

2.    fpm命令进行rpm软件打包

[root@web01 ~]# fpm -s dir -t rpm -n nginx -v 1.12.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.12.2/

3.    将软件包上传到管理端yum仓库目录中即可

说明:discuz站点目录中有很多需要注意权限的目录,web02服务器上安装好nginx,需要执行两条命令才可以访问bbs网站

[root@web02 ~]# cd /application/nginx/html/bbs/data/cache

[root@web02 cache]# chmod 777 *

[root@web02 ~]# cd /application/nginx/html/bbs/data/template

[root@web02 template]# chmod 777 *

1.2.2 定制php软件包:

1.    编写安装软件后执行的脚本:

[root@web01 conf]# cat /server/scripts/php_rpm.sh

#!/bin/bash

 

ln -s /application/php-5.5.32 /application/php

2.    fpm命令进行打包

[root@web01 conf]# fpm -s dir -t rpm -n php -v 5.5.32 -d 'zlib-devel,libxml2-devel, libjpeg-turbo-devel,freetype-devel,libpng-devel,gd-devel,libcurl-devel,libxslt-devel,libmcrypt-devel,mhash,mcrypt' --post-install /server/scripts/php_rpm.sh -f /application/php-5.5.32

1.2.3 定制mysql软件包:

1.    编写安装后的执行脚本:

[root@db01 scripts]# cat mysql_rpm.sh

#!/bin/bash

 

ln -s /application/mysql-5.6.34 /application/mysql

useradd  -M -s /sbin/nologin  mysql

chown -R mysql.mysql /application/mysql/data/

cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe  /etc/init.d/mysqld

\cp /application/mysql/support-files/my-default.cnf /etc/my.cnf

2.    进行打包:

[root@db01 yum.repos.d]# fpm -s dir -t rpm -n mysql -v 5.6.34  --post-install /server/scripts/mysql_rpm.sh -f /application/mysql-5.6.34/

Created package {:path=>"mysql-5.6.34-1.x86_64.rpm"}

 

下载依赖关系:

[root@web02 application]# vim /etc/yum.conf

[main]

cachedir=/jiang    ---这是仓库的目录,它会把依赖的软件包下载到这个目录中

keepcache=1      ---设置为表示下载所有依赖包

[root@web02 ~]# mkdir /jiang

[root@web02 ~]# cd /jiang/

[root@web02 jiang]# find ./ -name "*.rpm"

./base/packages/libxml2-devel-2.7.6-21.el6_8.1.x86_64.rpm

./base/packages/pcre-devel-7.8-7.el6.x86_64.rpm

./base/packages/zlib-devel-1.2.3-29.el6.x86_64.rpm

./base/packages/expat-devel-2.0.1-13.el6_8.x86_64.rpm

以上就是安装某一个软件需要的所有依赖关系

有了自己的yum仓库后,可以说ansible批量部署的技能是更上一层楼啊!

要想提高自动化运维的能能力,yum仓库只是一个小小的开始