现在的需求是离线安装OpenStack,需要安装软件,因为不联网,只能制作一个本地源,把需要的安装包都保存下来,然后在需要使用的电脑上复制过去,或者在局域网搭建一个ftp服务器,在源中配置使用ftp服务器获取安装包。
yum
本地源
首先修改一下yum
的下载设置
gedit /etc/yum.conf
,修改绿色一行,原先为0
,修改为1
,即为保存缓存的意思,否则下载的软件包不会安装。
[main]
cachedir=/var/cache/yum/ b a s e a r c h / basearch/ basearch/releasever
keepcache=1
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
随后,编写一个脚本,安装使用到的软件,因为开启了缓存,所以会顺带保存安装包,这里我写的是安装OpenStack需要用到的一些东西。
这里前面注释的内容也可以执行一下,主要目的是换源,为了方便后面下软件,不然速度很慢。
其实这一步yum update -y
,其实可以不做,为了确保稳定性之类的吧,不需要更新,但是更新了也问题不大。
#basic
#yum install -y epel-release
#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
#yum update -y
#sed -e 's|^metalink=|#metalink=|g' -e 's|^#baseurl=https\?://download.fedoraproject.org/pub/epel/|baseurl=https://mirrors.ustc.edu.cn/epel/|g' -i.bak /etc/yum.repos.d/epel.repo
#yum clean all
#yum makecache
#openstack basic
yum install -y centos-release-openstack-stein
yum install -y python-openstackclient
yum install -y openstack-selinux
yum install -y openstack-utils
yum install -y chrony
yum install -y mariadb mariadb-server MySQL-python
yum install -y memcached python-memcached
yum install -y rabbitmq-server
#openstack
yum install -y openstack-keystone httpd mod_wsgi
yum install -y openstack-glance python-glance python-glanceclient
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
yum install -y openstack-nova-compute
yum install -y openstack-placement-api
yum install -y openstack-cinder python-cinderclient
yum install lvm2 device-mapper-persistent-data -y
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables openstack-neutron-openvswitch
yum install -y openstack-dashboard
#source
yum install -y epel-release
yum install -y python-pip
#docker
yum install -y yum-utils device-mapper-persistent-data lvm2
#wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-19.03.14-3.el7.x86_64.rpm
#wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-19.03.14-3.el7.x86_64.rpm
#wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.3.9-3.1.el7.x86_64.rpm
#yum localinstall -y docker-ce-cli-19.03.14-3.el7.x86_64.rpm
#yum localinstall -y containerd.io-1.3.9-3.1.el7.x86_64.rpm
#yum localinstall -y docker-ce-19.03.14-3.el7.x86_64.rpm
yum install -y etcd
yum install -y python-pip git python-devel libffi-devel gcc openssl-devel numactl
#plugins :fwaas,vpnaas
yum install -y openstack-neutron-fwaas
yum install -y openstack-neutron-vpnaas libreswan
#others
yum -y install createrepo
yum install -y http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
yum install -y exfat-utils fuse-exfat
然后执行脚本进行安装。
创建一个目录,保存安装包用的
mkdir /home/xxx/Desktop/linux/openstack-stein-local
然后复制缓存的安装包过去
find /var/cache/yum/x86_64/ -name *.rpm -exec cp -a {} /home/xxx/Desktop/linux/openstack-stein-local/ ;
然后呢,安装一个工具
yum -y install createrepo
使用createrepo
创建一个源
createrepo /home/xxx/Desktop/linux/openstack-stein-local/
或者直接在安装包目录下执行createrepo .
应该也可以。
然后呢,就可以看到这个目录底下出现一些东西,比如文件夹repodata
,里面放着一些依赖信息的文件。
随后,可以将这个文件夹打包,方便传输,使用的时候复制过去解压就行了。
tar -cvf openstack-stein-local.tar.gz /home/xxx/Desktop/linux/openstack-stein-local
更新
这里如果添加或者删除了安装包,可以执行createrepo --update .
进行更新
使用
使用的时候,直接设置源就可以了。
修改/etc/yum.repo.d/CentOS-Base.repo
,也可以自己创建一个xxx.repo
放在这个路径下
[openstack-local]
name=openstack-local
baseurl=file:///home/kang/Desktop/linux/openstack-stein-local/
gpgcheck=0
enabled=1
有几点说明
- […] 代表这个库的名字,必须是唯一的,不可以重复。
- name= 是这个库的说明,没有太大的实际意义,只是一个字段说明。
- baseurl= 说明采取什么方式传输,具体路径在哪里,可以使用的方式有,file://,ftp://,http://等
- enabled=1 说明启用这个更新库,0表示不启用。
- gpgcheck=1 表示使用gpg文件来检查软件包的签名,可以为0
- gpgkey= 表示gpg文件所存放的位置,此处也可以有http方式的位置。
这里为了测试,把除了CentOS-Base.repo
其他的源文件都删除了。
这时候其实已经更新了,可以执行yum repolist
查看一下现在有的仓库,只能看到我们自己的那个repo了。
然后可以重建一下缓存
yum clean all
yum makecache
之后就可以随便安装软件不需要网了。
FTP源
除了在本地搭建一个源,也可以在局域网中搭建一个FTP服务器,其他主机只需要修改源即可,不需要把整个源单独复制过去了。
安装
主要使用到了一个软件vsftpd
,可以单独下载一个rpm包,复制过去直接安装就行了。
执行rpm -iv xxxxx.rpm
,安装vsftpd
。
然后启动服务
systemctl start vsftpd
systemctl enable vsftpd
关闭防火墙和selinux
systemctl disable firewalld.service
systemctl stop firewalld.service
可以顺便关闭selinux,注意,如果通过修改配置文件的方式关闭,可能需要重启一下才能生效,但是我不知道这个到底有没有影响,应该没有吧。
制作
查看一下ftp的共享目录
rpm -ql vsftpd
输出应该有如下两个信息
/var/ftp
/var/ftp/pub
随后为了方便整理,可以在pub
文件夹中创建一个自己的local-repo
文件夹,把源都放在这里面。
然后使用createrepo
生成目录索引。
使用
随后就可以使用了。
删除/etc/yum.repo.d/
中的所有源文件,