For customer local deployment on centos or other linux system, the client have not internet access, you need a local yum repository or you just want use your own instead of public rpms.

There are two way to build a local yum mirror, both of them uses createrepo command.

  • Access local rpm
  • Access LAN yum server

The local rpm way introduced in this article, with k8s installation guide.

At this time, I will introduce a LAN yum server which sync with internet repo, and provides service for local server without internet access privelige.

Yum mirror server:

# 1. Network access
sudo yum install httpd -y
# 2. Install createrepo 
sudo yum install createrepo -y
# 3. Install repo management tool
sudo yum install yum-utils -y
# 4. Create folder to store rpms
sudo mkdir –p /var/www/html/repos
sudo mkdir –p /var/www/html/repos/{base,centosplus,extras,updates}

Now, you can sync repo, it will cosume lots of disk storage:

sudo reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/
sudo reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/
sudo reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/
sudo reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/

All you need to do is just wait... for completed.

Create meta info for repo:

createrepo -d -s sha1 /var/www/html

You can use createrepo multi times for docker, kubernetes repos, Run yum clean all in client when your add new repos

For more createrepo command details

Start httpd server, disable firewall(Or firewall rule if you want)

systemctl enable httpd
systemctl start httpd
systemctl disable firewalld
systemctl stop firewalld

Yum local client:

After server is ready, setup client for test

mv /etc/yum.repos.d/*.repo /tmp/
sudo vi /etc/yum.repos.d/remote.repo
name=RHEL Apache

Test it:

sudo yum install httpd -y

Config mirror for server

If your yum server repo sync is slow, you might want to switch to another mirror, here is my configuration.

# CentOS-Base
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup -y
wget -O /etc/yum.repos.d/CentOS-Base.repo
# epel
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup -y
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup -y
wget -O /etc/yum.repos.d/epel.repo
# docker
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo -y
# kubernetes
cat <<EOF > /etc/yum.repos.d/kubernetes.repo

Install kubeadm

# setenforce 0
# yum install -y kubelet kubeadm kubectl
# systemctl enable kubelet && systemctl start kubelet
# yum install -y --nogpgcheck kubelet kubeadm kubectl

Aliyun mirrors: