RHEL - 为网络隔离主机构建本地软件 Repo

《OpenShift / RHEL / DevSecOps 汇总目录》

文章目录

  • 构建本地共享软件 Repo 的方法说明
    • 准备可联网主机
    • 方法1:使用 ISO 制作本地共享 Repo
    • 方法2:使用 reposync 制作本地共享 Repo
    • 方法3:制作包含特定软件的本地独享 Repo
    • 方法4:使用 RedHat Satellite
  • 参考

构建本地共享软件 Repo 的方法说明

本文将说明如何构建本地的软件 Repo,以供那些运行在本地且无法直接联网的 RHEL 主机使用。实现方法是在一个可以联网的 RHEL 主机(例如 rhel-repo)中构建本地软件 Repo,然后将其共享给所有无法联网的 RHEL主机使用。

准备可联网主机

  1. 提供本地共享软件 Repo 的主机需要能够访问互联网。在该节点安装完 RHEL 后先根据《RHEL - 订阅、注册系统和 Yum Repository》一文的 “注册和注销 RHEL 系统” 章节完成主机注册,以让该主机能够访问到 RedHat 相关的订阅。
  2. 安装 http 服务。
$ yum install httpd -y
  1. 向防火墙增加 http 服务。
$ firewall-cmd --list-services
ssh dhcpv6-client
$ firewall-cmd --add-service=http --permanent
success
$ firewall-cmd --reload
$ firewall-cmd --list-services
ssh dhcpv6-client http

方法1:使用 ISO 制作本地共享 Repo

本方法使用下载到本地的 RHEL 安装介质 ISO 文件制作本地共享 Repo。它的特点如下:

优势 :

  • 可以在单一主机上制作并提供多个主次版本的 RHEL Repo。

劣势:

  • RHEL 约每半年发布一个小版本及其对应的 ISO,每个版本会包含这期间所有的安全、功能更新。不过在每半年更新的 ISO 中不能及时包含针对高危漏洞红帽随时发布的安全补丁。
  • 订阅中有很多附加软件并没有包含在 RHEL 的 ISO 中。
  1. 从 RedHat 下载 RHEL 的 ISO 文件到 rhel-repo 主机,例如 /data/rhel-server-7.9-x86_64-dvd.iso。
  2. 打开 https://access.redhat.com/labs/yumrepoconfighelper/remote/ 网址。
  3. 在 “Yum Server Information” 中确定 ISO 文件的 RHEL 主版本,提供共享软件 Repo 的主机 IP。
    在这里插入图片描述
  4. 在 “Yum Server Connection Configuration” 中选择共享访问的协议端口。
    在这里插入图片描述
  5. 在 “Yum Repository Configuration Options” 中选择 RHEL 软件版本、架构和 ISO 文件的路径。这里可以加多个 RHEL 版本的 配置。
    在这里插入图片描述
  6. 在 “Ansible Information” 和 “Review” 步骤中接受默认配置,最后点击 Generate 即可。
    在这里插入图片描述
  7. 在以下生成结果的页面中将 Bash Script 对应的文件 - yumrepoconfig.sh 和 Repo File Package 对应的文件 - allRepos.zip 下载到 rhel-repo 主机上。
    在这里插入图片描述
  8. 在 rhel-repo 主机上执行 yumrepoconfig.sh 脚本。
$ chmod +x yumrepoconfig.sh
$ ./yumrepoconfig.sh
  1. 解压 allRepos.zip 文件。
$ yum install unzip -y
$ unzip  allRepos.zip
  1. 将 repo 文件传到本地无法访问互联网的 RHEL 主机节点(例如 rhel-1)上。
$ scp RHEL7-7.9-x86_64-RedHatEnterpriseLinuxServer-0.repo root@rhel-1:/etc/yum.repos.d/
  1. 在 rhel-1 主机上执行命令,确认已经有可用的 Repo 了。
$ yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is registered with an entitlement server, but is not receiving updates. You can use subscription-manager to assign subscriptions.
repo id                                                repo name                                                      status
RHEL7-7.9-RedHatEnterpriseLinuxServer-DVD0             Red Hat Enterprise Linux 7Server - x86_64 (DVD)                 5,230

方法2:使用 reposync 制作本地共享 Repo

本方法是在 Repo 主机上使用 reposync 工具直接从 RedHat 官方将订阅中指定 Reop 中包含的软件同步下载到本地,然后再共享给其他 RHEL 主机。

优势 :

  • 可以随时获得最新的软件更新包到本地,及时性强。
  • reposync 将根据 $releasever 参数(如不设置该参数,则使用主版本对应的最新一个次要版本)下载对应版本的 Repo 中包含的软件包。如果使用 --newest-only 参数,则每种文件只会下载其最新版,如果不加 --newest-only 参数,则每种文件会下载其历史版本。
  • 可以同步所有订阅中包含的软件 Repo,而不仅限于 ISO 包含的软件。

劣势:

  • 只能同步和 Repo 节点具有相同 RHEL 主版本的软件 Repo。例如,如果同步节点是 RHEL 7,则该节点只能同步 RHEL 7 相关的 Repo,而不能在同一个节点上同时同步 RHEL 7/8/9 的 Repo。因此上述需求只能分别在运行 RHEL 7/8/9 的三个主机上实现。
  1. 安装必要的工具。
$ yum install -y yum-utils createrepo
  1. 允许使用需要同步的 Repo,以 rhel-ha-for-rhel-7-server-rpms 为例,并查看其占用空间以确认本地存储够用。注意:由于没有设置$releasever 参数,因此下载的是 RHEL 7 最新版 7.9 对应的 rhel-ha-for-rhel-7-server-rpms。
$ subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
$ yum repolist -v
Not loading "rhnplugin" plugin, as it is disabled
Loading "product-id" plugin
Loading "search-disabled-repos" plugin
Loading "subscription-manager" plugin
Updating Subscription Management repositories.
This system is registered with an entitlement server, but is not receiving updates. You can use subscription-manager to assign subscriptions.
Config time: 6.378
Yum version: 3.4.3
Setting up Package Sacks
pkgsack time: 0.013
Repo-id      : rhel-7-server-rpms/7Server/x86_64
Repo-name    : Red Hat Enterprise Linux 7 Server (RPMs)
Repo-revision: 1704892603
Repo-updated : Wed Jan 10 08:16:43 2024
Repo-pkgs    : 34,148
Repo-size    : 64 G
Repo-baseurl : https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/os
Repo-expire  : 86,400 second(s) (last: Mon Jan 15 11:54:40 2024)
  Filter     : read-only:present
Repo-filename: /etc/yum.repos.d/redhat.repo
 
Repo-id      : rhel-ha-for-rhel-7-server-rpms/7Server/x86_64
Repo-name    : Red Hat Enterprise Linux High Availability (for RHEL 7 Server) (RPMs)
Repo-revision: 1704710878
Repo-updated : Mon Jan  8 05:47:58 2024
Repo-pkgs    : 865
Repo-size    : 1.5 G
Repo-baseurl : https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/highavailability/os
Repo-expire  : 86,400 second(s) (last: Mon Jan 15 11:54:41 2024)
  Filter     : read-only:present
Repo-filename: /etc/yum.repos.d/redhat.repo
 
repolist: 35,013
  1. 执行命令,将指定 repo 包含的所有文件下载到 http 缺省的文件根目录(/var/www/html/repos)下的 repos/rhel7 子目录中。注意:不要修改 HTTP_DOC_ROOT 参数,因为如果要更改缺省的文件根目录,需要配合其他设置才可。
$ HTTP_DOC_ROOT=/var/www/html
$ mkdir -p $HTTP_DOC_ROOT/repos/rhel7
$ reposync -m --download-metadata --gpgcheck -p $HTTP_DOC_ROOT/repos/rhel7 --repoid=rhel-ha-for-rhel-7-server-rpms
  1. 执行命令,创建索引。
$ createrepo $HTTP_DOC_ROOT/repos/rhel7/rhel-ha-for-rhel-7-server-rpms

如果索引已有,则可更新索引。

$ createrepo --update $HTTP_DOC_ROOT/repos/rhel7/rhel-ha-for-rhel-7-server-rpms
  1. 配置 SELinux 和防火墙。
$ chcon -R -t httpd_sys_content_t /var/www/html
$ firewall-cmd --add-service=http --permanent
$ firewall-cmd --reload
  1. 确认可以远程访问到 Repo 了。
    在这里插入图片描述
  2. 在无法访问互联网的 RHEL 主机节点(例如 rhel-1)上执行命令,创建 repo 文件。
$ cat << EOF > /etc/yum.repos.d/rhel-ha-for-rhel-7-server.repo
[rhel-ha-for-rhel-7-server]
name=rhel-ha-for-rhel-7-server
baseurl=http://192.168.1.100/repo/rhel7/rhel-ha-for-rhel-7-server-rpms
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF
  1. 确认可以从主机节点访问到远程的 Repo。
$ yum repolist
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is registered with an entitlement server, but is not receiving updates. You can use subscription-manager to assign subscriptions.
repo id                                                     repo name                                                   status
rhel-ha-for-rhel-7-server                                   rhel-ha-for-rhel-7-server                                   865
repolist: 865

方法3:制作包含特定软件的本地独享 Repo

此方法类似“方法2”,只能制作和 Repo 节点具有相同 RHEL 主版本的 Repo。和“方法2” 的区别是本方法可针对特定次要版本的 RHEL 中包含所的特定软件包、CVE、RHSA/RHBA/RHEA 制作对应的 Repo。

  1. 安装必要软件
$ yum install -y yum-utils createrepo
  1. 使用 downloadonly 参数将 httpd 软件包下载到指定目录下,然后创建 Repo 索引,最后打包。
$ mkdir /var/tmp/httpd
$ mkdir /var/tmp/httpd-installroot
$ yum install --downloadonly --installroot=/var/tmp/httpd-installroot --releasever=7.9 --downloaddir=/var/tmp/httpd httpd
$ createrepo --database /var/tmp/httpd
$ tar zcvf httpd.tar.gz /var/tmp/httpd
  1. 将打包文件传到需要的主机节点,然后在这些主机节点解压文件。
$ tar zxvf httpd.tar.gz
  1. 在这些节点创建 repo 文件后就可以安装使用 Repo 包含的软件了。
$ cat << EOF | tee /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=rhel-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=1
gpgcheck=0
EOF

$ yum install --disablerepo=\* --enablerepo=offline-httpd httpd

方法4:使用 RedHat Satellite

RedHat Satellite 具备以上方法1/2/3 所包含的全部优势,即可在单节点(考虑到可靠性,可以是双机部署)同时提供个多个主次版本的 RHEL 和其相关附加软件的 Repo,因此优势最为明显。使用方法参见:

Red Hat Satellite - 核心概念篇

Red Hat Satellite - 安装篇

Red Hat Satellite - 导入订阅清单

Red Hat Satellite - 为主机配置可使用的内容(存储库),注册主机并安装软件包

参考

https://access.redhat.com/solutions/29269
https://access.redhat.com/solutions/7227
https://access.redhat.com/solutions/23016
https://access.redhat.com/solutions/7019225
https://access.redhat.com/zh_CN/solutions/7045415
https://access.redhat.com/solutions/3459631
https://access.redhat.com/discussions/4358851
https://access.redhat.com/documentation/zh-cn/red_hat_ansible_automation_platform/2.3/html-single/red_hat_ansible_automation_platform_installation_guide/index#proc-synchronizing-rpm-repositories-by-using-reposync_disconnected-installation
https://www.cnblogs.com/vilenx/p/12533361.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/337581.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

electron-vite中的ipc通信

1. 概述 再electron中&#xff0c;进程间的通信通过ipcMain和ipcRenderer模块&#xff0c;这些通道是任意和双向的 1.1. 什么是上下文隔离进程 ipc通道是通过预加载脚本绑定到window对象的electron对象属性上的 2. 通信方式 2.1. ipcMain&#xff08;也就是渲染进程向主进…

WorkPlus内网通信软件的首选,助力企业实现高效内部沟通与协同

在企业内部&#xff0c;高效沟通是推动工作顺利进行的关键。而内网通信软件则成为了营造安全高效内部沟通环境的必要工具。作为一家领先的内网通信软件&#xff0c;WorkPlus以其卓越的性能和专业的功能&#xff0c;助力企业构建高效的内部沟通网络。 为什么选择WorkPlus作为内…

【Docker】部署和运行青龙面板:一个支持python3、javaScript、shell、typescript 的定时任务管理面板

引言 青龙面板是一个支持python3、javaScript、shell、typescript 的定时任务管理面板。 步骤 拉取镜像 从 Docker Hub 上拉取最新的 “qinglong” 镜像。 docker pull whyour/qinglong:latest启动容器 使用刚刚拉取的镜像来启动一个新的 Docker 容器。 docker run -dit \-v…

Java设计模式-前言

大家好&#xff0c;我是馆长&#xff01;从今天开始馆长开始对java设计模式进行讲解和整理分享给大家。馆长会尽快的整理完成设计模式的所有内容和讲解代码。从多方面进行模式的详细说明&#xff0c;方便各位看官理解和易学。 软件设计模式的概念 软件设计模式&#xff08;Sof…

Tensorflow2 GPU版本-极简安装方式

Tensorflow2 GPU版本-极简安装方式&#xff1a; 1、配置conda环境加速 https://wtl4it.blog.csdn.net/article/details/135723095https://wtl4it.blog.csdn.net/article/details/135723095 2、tensorflow-gpu安装 conda create -n STZZWANG_TF2 tensorflow-gpu2.0

11 - PXC集群|MySQL存储引擎

PXC集群&#xff5c;MySQL存储引擎 数据库系列文章PXC集群配置集群测试集群 MySQL存储引擎存储引擎介绍mysql服务体系结构mysql服务的工作过程处理查询访问的工作过程处理存储insert访问的工作过程 什么是搜索引擎 存储引擎管理查看存储引擎修改存储引擎 存储引擎特点myisam存储…

基于JavaWeb+SSM+Vue基于微信小程序的在线投稿系统的设计和实现

基于JavaWebSSMVue基于微信小程序的在线投稿系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1微信小程序 2 2.2 MYSQL数据库 3 2.3 u…

【Docker】安装Nginx容器并部署前后端分离项目

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Docker实战》。&#x1f3af;&#x1f3af; &…

使用vscode在wsl2中配置clangd环境

在vscode中安装这三个插件&#xff08;clangd需要科学上网或者从VSIX安装&#xff09; 之后创建一个空目录并进去。 使用快捷键ctrlshiftp&#xff0c;输入命令 Cmake:Quick Start 根据步骤选择。注意在创建CMakeLists.txt这一步选择跳过&#xff0c;直接输入enter&#xff0c…

【RHCE服务搭建实验】之DNS

目录 一、DNS简介二、安装DNS 一、DNS简介 域名系统&#xff08;DNS&#xff09;是一个分层的分布式数据库。它存储用于将Internet主机名映射到IP地址&#xff08;反之亦然&#xff09;的信息、邮件路由信息以及Internet应用程序使用的其他数据。 客户端通过调用解析器库在DNS…

R语言【cli】——builtin_theme():内置的CLI主题

Package cli version 3.6.0 Description 此主题始终处于活动状态&#xff0c;并且位于主题堆栈的底部。 Usage builtin_theme(dark getOption("cli.theme_dark", "auto")) Argument 参数【dark】&#xff1a;是否使用黑暗主题。cli.theme_dark选项可用…

实时语音克隆,准确复制音色:OpenVoice | 开源日报 No.150

myshell-ai/OpenVoice Stars: 9.6k License: NOASSERTION OpenVoice 是一个通过 MyShell 进行即时语音克隆的开源项目。 OpenVoice 可以准确地克隆参考音色&#xff0c;并生成多种语言和口音的语音。OpenVoice 允许对声音风格进行细粒度控制&#xff0c;如情感、口音以及节奏…

Pandas.Series.count() 非空单元格计数 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.1.2 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 Pandas稳定版更新及变动内容整合专题&#xff1a; Pandas稳定版更新及变动迭持续更新。 Pandas API参…

R语言的ggplot2绘制分组折线图?

R绘制分组折线图.R 首先看数据情况&#xff1a;group有3组。Time有3组&#xff0c;数据意思是在3组3个时间点测量了某指标&#xff0c;现在要绘制组1、组2、组3某指标y按时间的变化趋势 数据情况&#xff1a; 看看最终的效果图如下&#xff1a; 下面是本次使用的代码 .libPat…

万界星空科技免费MES/开源MES/功能齐全,支持低代码大屏

目前国内智能制造如火如荼&#xff0c;工厂信息化、数字化是大趋势。如果找到一个工厂&#xff0c;搞定一个老板&#xff0c;搞软件的朋友就能吃几年。 开源软件不失为一条路子&#xff0c;大量的服务商选择开源MES做出了低成本的项目&#xff0c;收入也还可以。 今天介绍Git…

最新AI绘画创作系统ChatGPT网站程序源码V5.0版本搭建部署文档教程+Midjourney绘画动态全功能+MJ绘画局部编辑重绘

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持GPT…

[小程序]样式与配置

一、外部样式导入 使用import加外部样式表的相对路径并以 ; 表示语句结束。 import "common.wxss"; 二、全局样式和局部样式 全局样式位于app.wxss中&#xff0c;会作用于整个项目中所有页面中。 局部样式位于对应的wxss文件中&#xff0c;仅作用于当前页面&#x…

0121-2-JavaScript高级程序设计1-10章

前言 通过阅读这本书写下的一些笔记 《JavaScript高级程序设计》 第1章——什么是JavaScript DOM将整个页面抽象为一组分层节点。 BOM用于支持访问和操作浏览器的窗口。 第2章——HTML中的JavaScript 2.1 < script >元素 元素描述async立即开始下载脚本&#xff0…

sshpass的安装与使用

一.简介 1.定义&#xff1a; ssh 登陆不能在命令行中指定密码&#xff0c;sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码&#xff0c;然后直接登录远程服务器&#xff0c;它支持密码从命令行、文件、环境变量中读取。 2.使用 sshpass 原因 使用 sshpass…

【C++干货铺】C++11新特性——lambda表达式 | 包装器

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 C98中的排序 lambda表达式 lambda表达式语法 表达式中的各部分说明 lambda表达式的使用 基本的使用 [var]值传递捕捉变量var ​编辑 [&var]引用传递捕…