在这里插入图片描述

文章目录

  • RHEL 9.5 离线安装 Ansible 完整教程
    • 环境准备
      • 系统要求
      • 准备工作清单
    • 方法一:使用 RPM 包离线安装
      • 步骤 1:在联网机器上下载必要的 RPM 包
      • 步骤 2:创建本地仓库元数据
      • 步骤 3:在离线服务器上安装
    • 方法二:使用 Python 离线安装
      • 步骤 1:在联网机器上下载 Python 包
      • 步骤 2:在离线服务器上安装
    • 方法三:使用预编译的二进制包
      • 步骤 1:下载 Ansible 源码
      • 步骤 2:离线编译安装
    • 验证安装
    • 包可用性检查
      • 解决方案 1:启用 EPEL 仓库
      • 解决方案 2:使用 pip 下载方式
    • 常见问题解决
      • 问题 1:依赖包缺失
      • 问题 2:Python 版本兼容性
      • 问题 3:权限问题
    • 配置建议
      • 创建基本配置文件
      • 创建主机清单文件
    • 性能优化建议
    • 总结

RHEL 9.5 离线安装 Ansible 完整教程

在企业环境中,由于安全策略限制,服务器往往无法直接访问互联网。本文将详细介绍如何在 Red Hat Enterprise Linux 9.5 系统上离线安装 Ansible 自动化工具。

环境准备

系统要求

  • Red Hat Enterprise Linux 9.5
  • Python 3.9+ (RHEL 9.5 默认自带)
  • 足够的磁盘空间(至少 500MB)

准备工作清单

  • 一台能联网的机器用于下载依赖包
  • 移动存储设备或网络传输方式
  • 目标离线 RHEL 9.5 服务器

方法一:使用 RPM 包离线安装

步骤 1:在联网机器上下载必要的 RPM 包

首先在一台能联网的 RHEL 9.5 机器上执行以下操作:

# 创建下载目录
mkdir -p /tmp/ansible-offline/{rpms,repo}
cd /tmp/ansible-offline# 启用必要的仓库
sudo subscription-manager repos --enable rhel-9-for-x86_64-appstream-rpms
sudo subscription-manager repos --enable rhel-9-for-x86_64-baseos-rpms# 下载 Ansible 及其依赖包
sudo dnf download --downloadonly --downloaddir=./rpms ansible-core
sudo dnf download --downloadonly --downloaddir=./rpms python3-pip python3-setuptools# 下载额外的依赖包(先检查可用性)
sudo dnf download --downloadonly --downloaddir=./rpms python3-cryptography python3-jinja2 python3-yaml python3-packaging# 检查并下载其他可能的依赖包
sudo dnf download --downloadonly --downloaddir=./rpms python3-six python3-cffi python3-pycparser || true

步骤 2:创建本地仓库元数据

# 安装 createrepo_c 工具(如果没有)
sudo dnf install -y createrepo_c# 创建仓库元数据
createrepo_c ./rpms# 打包所有文件
tar -czf ansible-offline-rpms.tar.gz rpms/

步骤 3:在离线服务器上安装

ansible-offline-rpms.tar.gz 传输到离线服务器,然后执行:

# 解压文件包
tar -xzf ansible-offline-rpms.tar.gz
cd rpms# 安装所有 RPM 包
sudo rpm -ivh *.rpm --nodeps --force# 或者使用 dnf 本地安装
sudo dnf localinstall -y *.rpm

方法二:使用 Python 离线安装

步骤 1:在联网机器上下载 Python 包

# 创建工作目录
mkdir -p /tmp/ansible-python-offline
cd /tmp/ansible-python-offline# 下载 Ansible 及其依赖的 Python 包
pip3 download ansible-core
pip3 download cryptography jinja2 PyYAML paramiko packaging markupsafe# 下载额外可能需要的包
pip3 download resolvelib setuptools wheel# 打包所有下载的文件
tar -czf ansible-python-packages.tar.gz *.whl *.tar.gz

步骤 2:在离线服务器上安装

# 解压 Python 包
tar -xzf ansible-python-packages.tar.gz# 确保 pip 已安装
sudo dnf localinstall -y python3-pip-*.rpm  # 如果没有 pip# 离线安装 Ansible
pip3 install --no-index --find-links . ansible-core# 或者为系统全局安装
sudo pip3 install --no-index --find-links . ansible-core

方法三:使用预编译的二进制包

步骤 1:下载 Ansible 源码

在联网机器上:

# 下载 Ansible 源码
wget https://github.com/ansible/ansible/archive/v2.15.6.tar.gz
tar -xzf v2.15.6.tar.gz
cd ansible-2.15.6# 创建完整的离线安装包
python3 setup.py sdist

步骤 2:离线编译安装

在离线服务器上:

# 解压源码包
tar -xzf ansible-2.15.6.tar.gz
cd ansible-2.15.6# 编译安装
sudo python3 setup.py install# 或者安装到用户目录
python3 setup.py install --user

验证安装

无论使用哪种方法,安装完成后都应该验证 Ansible 是否正常工作:

# 检查 Ansible 版本
ansible --version# 检查 Ansible 配置
ansible-config dump# 测试本地连接
ansible localhost -m ping# 检查可用模块
ansible-doc -l | head -10

预期输出示例:

ansible [core 2.15.6]config file = Noneconfigured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']ansible python module location = /usr/local/lib/python3.9/site-packages/ansibleansible collection location = /home/user/.ansible/collections:/usr/share/ansible/collectionsexecutable location = /usr/local/bin/ansiblepython version = 3.9.18

包可用性检查

在下载依赖包之前,建议先检查包的可用性:

# 检查哪些包在当前仓库中可用
dnf list available | grep -E "python3-(cryptography|jinja2|yaml|paramiko|packaging|six|cffi)"# 搜索 paramiko 相关包
dnf search paramiko# 如果 python3-paramiko 不可用,可能需要启用 EPEL 仓库或使用 pip 安装

针对 python3-paramiko 不可用的情况,有以下解决方案:

解决方案 1:启用 EPEL 仓库

# 下载并安装 EPEL 仓库
sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm# 启用 EPEL 仓库后重新尝试
sudo dnf download --downloadonly --downloaddir=./rpms python3-paramiko

解决方案 2:使用 pip 下载方式

# 如果某些包在 RPM 仓库中不可用,使用 pip 下载
pip3 download --dest ./python-packages paramiko cryptography jinja2 PyYAML packaging

常见问题解决

问题 1:依赖包缺失

如果遇到依赖包缺失的错误:

# 查找缺失的依赖
rpm -qR ansible-core | grep "not installed"# 下载缺失的包
sudo dnf download --downloadonly package-name

问题 2:Python 版本兼容性

确保 Python 版本兼容:

# 检查 Python 版本
python3 --version# 如果版本过低,可能需要升级
sudo dnf update python3

问题 3:权限问题

解决权限相关问题:

# 为当前用户创建 Ansible 配置目录
mkdir -p ~/.ansible/collections
mkdir -p ~/.ansible/plugins# 设置合适的权限
chmod 755 ~/.ansible

配置建议

创建基本配置文件

# 创建 Ansible 配置文件
sudo mkdir -p /etc/ansible
sudo tee /etc/ansible/ansible.cfg > /dev/null <<EOF
[defaults]
host_key_checking = False
inventory = /etc/ansible/hosts
remote_user = root
ask_pass = False[inventory]
enable_plugins = host_list, script, auto, yaml, ini, toml[ssh_connection]
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s
pipelining = True
EOF

创建主机清单文件

# 创建示例主机清单
sudo tee /etc/ansible/hosts > /dev/null <<EOF
[local]
localhost ansible_connection=local[webservers]
web1.example.com
web2.example.com[databases]
db1.example.com ansible_user=dbadmin
EOF

性能优化建议

  1. 启用连接复用:在配置文件中启用 ControlMaster 和 ControlPersist
  2. 使用流水线:启用 pipelining 选项以减少 SSH 连接次数
  3. 调整并发数:根据目标主机性能调整 forks 参数
  4. 使用本地连接:对本机操作使用 ansible_connection=local

总结

本文介绍了三种在 RHEL 9.5 上离线安装 Ansible 的方法:RPM 包安装、Python 包安装和源码编译安装。每种方法都有其适用场景:

  • RPM 包方式:适合标准化环境,易于管理和卸载
  • Python 包方式:更灵活,可以安装最新版本
  • 源码编译:完全自主可控,适合定制化需求

选择合适的安装方式,并按照本文的步骤操作,即可在离线环境中成功部署 Ansible 自动化工具。安装完成后,记得进行充分的测试以确保系统正常运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91361.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91361.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91361.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

44、鸿蒙HarmonyOS Next开发:视频播放 (Video)组件和进度条 (Progress)组件的使用

目录 视频播放 (Video) 创建视频组件 加载视频资源 加载本地视频 加载沙箱路径视频 加载网络视频 添加属性 事件调用 Video控制器使用 其他说明 示例代码 进度条 (Progress) 创建进度条 设置进度条样式 场景示例 视频播放 (Video) Video组件用于播放视频文件并…

6、微服务架构常用十种设计模式

目录 1、微服务架构 2、微服务架构的优点 3、微服务架构的缺点 4、何时使用微服务架构 5、微服务架构常用十种设计模式 ① 独享数据库&#xff08;Database per Microservice&#xff09; ② 事件源&#xff08;Event Sourcing&#xff09; ③ 命令和查询职责分离&…

Docker 初学者需要了解的几个知识点 (六):docker-compose.yml (ThinkPHP)

下面这个文 docker-compose.yml 文件定义了一个包含 PHP、Nginx、MySQL、Redis 的完整 ThinkPHP 开发环境&#xff0c;各配置项的含义如下&#xff1a;version: 3.8services:# PHP-FPM 服务php-fpm:image: php:8.1-fpmvolumes:- ./tp-demo:/var/www/html- ./php.ini:/usr/local…

TiDB 详解

TiDB 详解&#xff1a;架构、特性与应用实践 TiDB 是 PingCAP 公司开发的开源分布式 NewSQL 数据库&#xff0c;采用 “计算-存储分离” 架构设计&#xff0c;兼具传统关系型数据库的 ACID 事务特性和 NoSQL 系统的水平扩展能力。以下是 TiDB 的全面技术解析。一、核心架构设计…

推客小程序商业模型设计:合规分佣体系×盈利模式×LTV提升策略

一、推客小程序的市场背景与商业价值在当今移动互联网红利逐渐消退的背景下&#xff0c;社交电商正成为流量增长的新突破口。推客小程序作为一种基于社交关系的分销工具&#xff0c;完美融合了社交传播与电商变现的双重优势&#xff0c;为企业和个人创业者提供了全新的商业机会…

Matlab处理多个循环的判断的方式:

1、使用正则表达式&#xff1a;pattern strcat(\b, strjoin(tuple, \b|\b), \b);% 4. 逐行处理文件内容 modifiedContents {}; % 存储修改后的内容 for i 1:length(fileContents)line fileContents{i};% 使用正则表达式检查当前行是否包含元组中的任何元素if ~isempty(reg…

从字符串中“薅出”最长子串:LeetCode 340 Swift 解法全解析

文章目录摘要描述题解答案题解代码分析详细解析&#xff1a;示例测试及结果结果解释&#xff1a;时间复杂度总结摘要 在日常开发中&#xff0c;我们经常需要处理字符串&#xff0c;比如分析用户输入、文本挖掘、数据清洗等等。而这道题就特别实用&#xff1a;如何找到一个字符…

时序数据库厂商 TDengine 发布 AI 原生的工业数据管理平台 IDMP,“无问智推”改变数据消费范式

在工业企业越来越依赖数据驱动决策的今天&#xff0c;数据的获取不再是难题&#xff0c;难的是从纷繁复杂的数据中提炼出有用的信息。而 AI 的崛起&#xff0c;正在重塑整个数据分析的逻辑。 7 月 29 日晚&#xff0c;TDengine 发布了一款全新产品 —— TDengine IDMP&#xf…

HBase、MongoDB 和 Redis 的区别详解

这三者都是流行的 NoSQL 数据库&#xff0c;但设计目标、数据模型和适用场景有显著差异。以下是它们的核心对比&#xff1a; 1. 数据模型对比特性HBaseMongoDBRedis数据模型宽列存储&#xff08;类似 BigTable&#xff09;文档存储&#xff08;BSON/JSON&#xff09;键值存储&a…

设计模式之单例模式及其在多线程下的使用

很多时候&#xff0c;我们在使用类创建类的实例并不想可以创建很多实例对象&#xff0c;比如在数据库连接的时候&#xff0c;对于一个数据库的连接通常只需要连接池中的某个连接的实例&#xff0c;连接一次即可&#xff0c;对于session会话&#xff0c;用户在访问网页做会话保持…

Apache Ignite 2.8 引入的新指标系统(New Metrics System)的完整说明

这段文档是关于 Apache Ignite 2.8 引入的“新指标系统&#xff08;New Metrics System&#xff09;” 的完整说明。这是 Ignite 监控体系的一次重大升级&#xff0c;相比旧的、分散的统计方式&#xff0c;新系统更统一、灵活、可扩展。 我们来逐层拆解、通俗易懂地理解这个新…

【氮化镓】GaN同质外延p-i-n二极管中星形与三角形扩展表面缺陷的电子特性

2025年7月23日,美国国家标准与技术研究院(NIST)与美国海军研究实验室的Andrew J. Winchester等人在《Applied Physics Letters》期刊发表了题为《Electronic properties of extended surface defects in homoepitaxial GaN diodes》的文章,基于光电发射电子显微术、导电原子…

使用 Scrapy 框架定制爬虫中间件接入淘宝 API 采集商品数据

一、引言 在电商数据分析、市场调研等领域&#xff0c;获取淘宝平台上的商品数据是一项常见需求。淘宝提供了 API 接口&#xff0c;允许开发者通过授权的方式获取商品信息。本文将介绍如何使用 Scrapy 框架定制爬虫中间件&#xff0c;实现对淘宝 API 的接入&#xff0c;从而高…

Jmeter全局变量跨线程组的使用

一、线程组1中从数据库中查询到字段值二、BeanShell取样器中设置为全局变量#为什么说props.put("Out1",Out);其实是设置Out1为Jmeter的属性了呢&#xff1f; 因为在后面的调试取样器运行结果中&#xff0c;会发现如果只打开显示变量开关&#xff0c;是看不到Out1运行…

前端技术栈详解

前端技术栈是指构建现代Web应用程序所需的一系列技术和工具的集合。以下是当前主流前端技术栈的详细解析&#xff1a; 一、核心基础技术 1. HTML5 作用&#xff1a;网页内容的结构化标记关键特性&#xff1a; 语义化标签&#xff08;<header>, <section>, <arti…

Git Pull 时遇到 Apply 和 Abort 选项?详解它们的含义与应对策略

在使用 Git 进行团队协作时&#xff0c;git pull 是最常用的命令之一&#xff0c;用于拉取远程仓库的最新代码并合并到本地分支。但有时执行 git pull 后&#xff0c;Git 会提示 ​Apply&#xff08;应用&#xff09;​​ 和 ​Abort&#xff08;中止&#xff09;​​ 两个选项…

暑期算法训练.11

目录 47. 力扣203 移除链表元素 47.1 题目解析&#xff1a; ​编辑 47.2 算法思路&#xff1a; 47.3 代码演示&#xff1a; ​编辑 48. 力扣2.两数相加 48.1 题目解析&#xff1a; ​编辑 48.2 算法思路; 48.3 代码演示&#xff1a; 48.4 总结反思&#xff1a; …

nl2sql grpo强化学习训练,加大数据量和轮数后,准确率没提升,反而下降了,如何调整

在NL2SQL任务中使用GRPO强化学习训练时&#xff0c;增加数据量和训练轮数后准确率下降&#xff0c;通常是由过拟合、训练不稳定、奖励函数设计不合理、数据质量问题或探索-利用失衡等原因导致的。以下是具体的诊断思路和调整策略&#xff0c;帮助定位问题并优化性能&#xff1a…

PHP/Java/Python实现:如何有效防止恶意文件上传

文章目录 木马病毒防范:文件上传如何彻底防止伪造文件类型 引言 一、文件类型伪造的原理与危害 1.1 常见伪造手段 1.2 潜在危害 二、防御体系设计 2.1 防御架构 三、核心防御技术实现 3.1 服务端验证实现 3.1.1 文件内容检测(Python示例) 3.1.2 扩展名与内容双重验证(Java示…

SpringBoot系列之基于Redis的分布式限流器

SpringBoot系列之基于Redis的分布式限流器 SpringBoot 系列之基于 Redis 的分布式限流器 图文并茂,代码即拷即用,支持 4 种算法(固定窗口 / 滑动窗口 / 令牌桶 / 漏桶) 一、为什么要用分布式限流? 单机 Guava-RateLimiter 在集群下会 各玩各的,流量漂移,无法全局控量。…