当前位置: 首页 > news >正文

RHEL 9.5 离线安装 Ansible 完整教程

在这里插入图片描述

文章目录

  • 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.lryc.cn/news/604893.html

相关文章:

  • 力扣热题100-------74.搜索二维矩阵
  • ES 文件浏览器:多功能文件管理与传输利器
  • 深度学习中的注意力机制:原理、应用与未来展望
  • 1+1>2!特征融合如何让目标检测更懂 “场景”?
  • SD-WAN助力船舶制造业数字化转型:打造智能化网络支撑体系
  • gtest框架的安装与使用
  • C#程序员计算器
  • 单片机学习笔记.AD/DA(略含有SPI,用的是普中开发板上的XPT2046芯片)
  • Rust × Elasticsearch官方 `elasticsearch` crate 上手指南
  • 《安富莱嵌入式周报》第356期:H7-TOOL的250M示波器模组批量生产中,自主开发QDD执行器,开源14bit任意波形发生器(2025-07-28)
  • ConcurrentHashMapRedis实现二级缓存
  • (LeetCode 面试经典 150 题) 141. 环形链表(快慢指针)
  • 如何将JPG、PNG、GIF图像转换成PDF、SVG、EPS矢量图像
  • 简单线性回归模型原理推导(最小二乘法)和案例解析
  • react+ant design怎么样式穿透-tooltip怎么去掉箭头
  • 工作笔记-----存储器类型相关知识
  • Solon v3.4.2(Java 应用开发生态基座)
  • Java 控制台用户登录系统(支持角色权限与自定义异常处理)
  • python之asyncio协程和异步编程
  • 【MySQL学习|黑马笔记|Day3】多表查询(多表关系、内连接、外连接、自连接、联合查询、子查询),事务(简介、操作、四大体系、并发事务问题、事务隔离级别)
  • 自动化与配置管理工具 ——Ansible
  • 创建型设计模式-Builder
  • Newman+Jenkins实施接口自动化测试
  • 浏览器pdf、image显示
  • 防火墙与入侵检测
  • Linux下C/C++服务端崩溃排查手册
  • VMware16安装Ubuntu-22.04.X版本(并使用桥接模式实现局域网下使用ssh远程操作Ubuntu系统)
  • Linux 进程管理与计划任务设置
  • 16-C语言:第17天笔记
  • UnityHub Validation Failed下载编辑器错误,添加模块报错的解决方案