近期准备重新搭建最新的zabbix4.2,ansible等等,显而易见这些软件都需要通过yum安装会方便的多,而且便于管理以及以后的升级。公司千台以上的机器,基本都放在内网环境当中,于是就有必要搭建本地源环境,之前搭建的不是太完善,结合这个机会,重新整理一遍,尽可能涵盖到日常所用的所有软件。
首先当然需要准备一台可以访问互联网的机器
1 2
| yum -y install createrepo yum -y install yum-utils
|
Nginx源
1 2 3 4 5 6
| rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
reposync -r nginx repo
cd /repodata/data/nginx/7 createrepo .
|
PIP源
创建pip源目录
1 2
| mkdir -p /repodata/data/pypi cd /repodata/data/pypi
|
安装pip2pi软件
需要安装哪些包,可以一起写在requirements.txt文件里
1
| pip2pi /repodata/data/pypi -r requirements.txt
|
也可以单独安装某个包pymysql
1
| pip2pi /repodata/data/pypi pymysql
|
在对应目录下会生成一个simple目录,和相关下载的文件
1 2 3 4
| [root@localhost pypi]# ll total 52 -rw-r--r-- 1 root root 47738 May 19 16:00 PyMySQL-0.9.3-py2.py3-none-any.whl drwxr-xr-x 3 root root 4096 May 19 16:00 simple
|
建立索引
1
| dir2pi /repodata/data/pypi
|
这样源就配置好了,接下只需要在其他机器上配置这个源地址就可以了
编辑~/.pip/pip.conf
1 2 3 4
| [global] index-url = https://127.0.0.1/pypi/simple/ [install] trusted-host= 127.0.0.1
|
内网机安装pymysql
1 2 3 4 5 6
| [root@localhost .pip]# pip install pymysql Collecting pymysql Downloading http://127.0.0.1/pypi/simple/pymysql/PyMySQL-0.9.3-py2.py3-none-any.whl (47kB) 100% |████████████████████████████████| 51kB 43.7MB/s Installing collected packages: pymysql Successfully installed pymysql-0.9.3
|
互联网源
这里主要是通过互联网同步zabbix源、epel源和centos源,(centos主要是因为自带的redhat有些包不存在,只有通过centos源去获取)。
一个shell脚本,通过rsync连接到互联网上的rsync服务器去定时同步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
| #!/bin/bash RsyncPerm='-avSH --delete-after --no-iconv --bwlimit=10000' Epel='/repodata/data/epel' Redhat_zabbix='/repodata/data/zabbix/4.4' zabbix_nosupport='/repodata/data/zabbix/non-supported' Centos='/repodata/data/centos' Mysql='/repodata/data/mysql' Percona='/repodata/data/percona' Elasticstack='/repodata/data/elasticstack' pypi='/repodata/data/pypi' LogFile='/repodata/log' Date=`date +%Y-%m-%d`
function CheckStatus(){ if [ $? -eq 0 ];then echo -e "Rsync is success!">>$LogFile/$Date.log else echo -e "Rsync is fail!">>$LogFile/$Date.log fi }
epel() { ###rsync epel echo "=====================================================================================================" >>$LogFile/$Date.log echo `date` >>$LogFile/$Date.log echo 'Now start to rsync redhat epel!' >>$LogFile/$Date.log echo "=====================================================================================================" >>$LogFile/$Date.log rsync $RsyncPerm rsync://ftp.iij.ad.jp/pub/linux/Fedora/archive/epel/5/x86_64/ $Epel/5 >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.tuna.tsinghua.edu.cn/epel/6/x86_64/ $Epel/6 >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/ $Epel/7 >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/ $Epel/8 >>$LogFile/$Date.log CheckStatus }
centos() { ###rsync centos echo "=====================================================================================================" >>$LogFile/$Date.log echo `date` >>$LogFile/$Date.log echo 'Now start to rsync centos !' >>$LogFile/$Date.log echo "=====================================================================================================" >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.163.com/centos/6/os/x86_64/ $Centos/6 >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.163.com/centos/7/os/x86_64/ $Centos/7 >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.163.com/centos/8/BaseOS/x86_64/os/ $Centos/8 >>$LogFile/$Date.log CheckStatus }
mysql() { ###rsync mysql echo "=====================================================================================================" >>$LogFile/$Date.log echo `date` >>$LogFile/$Date.log echo 'Now start to rsync Mysql!' >>$LogFile/$Date.log echo "=====================================================================================================" >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.tuna.tsinghua.edu.cn/mysql/yum/ $Mysql >>$LogFile/$Date.log CheckStatus }
percona() { ###rsync percona echo "=====================================================================================================" >>$LogFile/$Date.log echo `date` >>$LogFile/$Date.log echo 'Now start to rsync Percona!' >>$LogFile/$Date.log echo "=====================================================================================================" >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.tuna.tsinghua.edu.cn/percona/yum/release/5/RPMS/x86_64/ $Percona/5 >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.tuna.tsinghua.edu.cn/percona/yum/release/6/RPMS/x86_64/ $Percona/6 >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.tuna.tsinghua.edu.cn/percona/yum/release/7/RPMS/x86_64/ $Percona/7 >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.tuna.tsinghua.edu.cn/percona/yum/release/8/RPMS/x86_64/ $Percona/8 >>$LogFile/$Date.log CheckStatus }
elasticstack() { ###rsync elasticstack echo "=====================================================================================================" >>$LogFile/$Date.log echo `date` >>$LogFile/$Date.log echo 'Now start to rsync Elasticstack!' >>$LogFile/$Date.log echo "=====================================================================================================" >>$LogFile/$Date.log rsync $RsyncPerm rsync://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/ $Elasticstack >>$LogFile/$Date.log CheckStatus }
zabbix() { ###rsync zabbix 4.4 echo "=====================================================================================================" >>$LogFile/$Date.log echo `date` >>$LogFile/$Date.log echo 'Now start to rsync redhat zabbix version 4.4!' >>$LogFile/$Date.log echo "=====================================================================================================" >>$LogFile/$Date.log rsync $RsyncPerm rsync://repo.zabbix.com/mirror/zabbix/4.4/rhel/5/x86_64/ $Redhat_zabbix/5 >>$LogFile/$Date.log rsync $RsyncPerm rsync://repo.zabbix.com/mirror/zabbix/4.4/rhel/6/x86_64/ $Redhat_zabbix/6 >>$LogFile/$Date.log rsync $RsyncPerm rsync://repo.zabbix.com/mirror/zabbix/4.4/rhel/7/x86_64/ $Redhat_zabbix/7 >>$LogFile/$Date.log rsync $RsyncPerm rsync://repo.zabbix.com/mirror/non-supported/rhel/ $zabbix_nosupport >>$LogFile/$Date.log CheckStatus }
action=$1 [ -z $1 ] && action=all case "$action" in epel) epel ;; centos) centos ;; mysql) mysql ;; percona) percona ;; elasticstack) elasticstack ;; zabbix) zabbix ;; all) epel centos mysql percona elasticstack zabbix ;; *) echo -e "Usage: ./`basename $0` [epel|centos|mysql|percona|elasticstack|zabbix|all]" ;; esac
|