创建 yum 源

本部分下载 OpenShift 所需要的安装包,并基于http 服务器创建本地 yum 源。

绑定订阅账户

注册账户
# subscription-manager register --username=<user_name> --password=<password>
查找包含 OpenShift 订阅的 Pool ID
# subscription-manager list --available --matches '*OpenShift Container Platform*'
绑定 Pool ID
# subscription-manager attach --pool=<YOUR_POOL_ID>

启用 OpenShift 需要的 Repo

禁止所有的 repo
# subscription-manager repos --disable="*"
查看是否还有未被禁止的 repo
# yum repolist
如果还有未被禁止的 repo,手工禁止它
# yum-config-manager --disable <repo_id>
# yum-config-manager --disable \*

创建本地 YUM 源

同步安装包到本地目录

1 - 创建本地目录
mkdir -p /opt/ocp
2 - 启用 OCP 所需的 repo
# subscription-manager repos \
    --enable="rhel-7-server-rpms" \
    --enable="rhel-7-server-extras-rpms" \
    --enable="rhel-7-server-ose-3.10-rpms" \
    --enable="rhel-7-fast-datapath-rpms" \
    --enable="rhel-7-server-ansible-2.4-rpms"
3 - 下载安装包到本地目录
for repo in \
rhel-7-server-rpms \
rhel-7-server-extras-rpms \
rhel-7-server-ose-3.10-rpms \
rhel-7-fast-datapath-rpms \
rhel-7-server-ansible-2.4-rpms
do
reposync -lmn --repoid=${repo} --download_path=/opt/ocp
createrepo -v /opt/ocp/${repo} -o /opt/ocp/${repo}
done

reposync 的作用是将 yum 源仓库同步到本地目录,如果 reposync 不存在,可以通过 yum install -y yum-utils 安装 reposync 包,reposync 通过相应的参数控制同步的过程:

  • -l 支持 yum 插件

  • -m 支持下载 comps.xml

  • --repoid-r 指定要查询的repo id,可以多次指定(默认全部启用)

  • --download_path-p 指定将软件包下载到的路径,默认为当前目录

  • -n 仅同步最新的包

createrepo 的作用是基于一组 rpm 包创建一个repomd(基于 xml 的 rpm 元数据)仓库,相关控制参数如下:

  • -v - 冗余的方式运行

  • -o - 指定输出的目录

  • --workers - 读取 rpms 的并发数量

4 - 执行如下命令更新 repodata
createrepo --workers=5 /opt/ocp/

安装配置 httpd

1 - 安装 httpd
yum -y install httpd
2 - 创建 httpd 配置文件,以发布 YUM 源
cat << EOF > /etc/httpd/conf.d/yum.conf
Alias /repo "/opt/ocp"
<Directory "/opt/ocp">
  Options +Indexes +FollowSymLinks
  Require all granted
</Directory>
<Location /repo>
  SetHandler None
</Location>
EOF
3- 重启 httpd,使修改生效
systemctl enable httpd
systemctl restart httpd
4- 添加 iptables 规则,运行 80 端口访问
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak.$(date "+%Y%m%d%H%M%S");
sed -i '/.*--dport 22 -j ACCEPT.*/a\-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT' /etc/sysconfig/iptables;
sed -i '/.*--dport 22 -j ACCEPT.*/a\-A INPUT -p udp -m state --state NEW -m udp --dport 80 -j ACCEPT' /etc/sysconfig/iptables;
systemctl restart iptables.service

测试 YUM 源配置

1 - 在任意 Linux 节点上添加如下 YUM 配置
cat << EOF > /etc/yum.repos.d/ocp.repo
[rhel-7-server-rpms]
baseurl = http://yum.example.com/repo/rhel-7-server-rpms
enabled = 1
gpgcheck = 0
name = rhel-7-server-rpms

[rhel-7-server-extras-rpms]
baseurl = http://yum.example.com/repo/rhel-7-server-extras-rpms
enabled = 1
gpgcheck = 0
name = rhel-7-server-extras-rpms

[rhel-7-server-ose-3.11-rpms]
baseurl = http://yum.example.com/repo/rhel-7-server-ose-3.11-rpms
enabled = 1
gpgcheck = 0
name = rhel-7-server-ose-3.11-rpms

[rhel-7-server-ansible-2.6-rpms]
baseurl = http://yum.example.com/repo/rhel-7-server-ansible-2.6-rpms
enabled = 1
gpgcheck = 0
name = rhel-7-server-ansible-2.6-rpms
EOF
2 - 执行输出如下命令测试 YUM 源配置
yum list | grep -i atomic-openshift-client

results matching ""

    No results matching ""