> 技术文档 > RHEL 9.5 离线安装 Ansible 完整教程

RHEL 9.5 离线安装 Ansible 完整教程

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-rpmssudo subscription-manager repos --enable rhel-9-for-x86_64-baseos-rpms# 下载 Ansible 及其依赖包sudo dnf download --downloadonly --downloaddir=./rpms ansible-coresudo 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.gzcd rpms# 安装所有 RPM 包sudo rpm -ivh *.rpm --nodeps --force# 或者使用 dnf 本地安装sudo dnf localinstall -y *.rpm

方法二:使用 Python 离线安装

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

# 创建工作目录mkdir -p /tmp/ansible-python-offlinecd /tmp/ansible-python-offline# 下载 Ansible 及其依赖的 Python 包pip3 download ansible-corepip3 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# 离线安装 Ansiblepip3 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.gztar -xzf v2.15.6.tar.gzcd ansible-2.15.6# 创建完整的离线安装包python3 setup.py sdist

步骤 2:离线编译安装

在离线服务器上:

# 解压源码包tar -xzf ansible-2.15.6.tar.gzcd 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 = None configured module search path = [\'/home/user/.ansible/plugins/modules\', \'/usr/share/ansible/plugins/modules\'] ansible python module location = /usr/local/lib/python3.9/site-packages/ansible ansible collection location = /home/user/.ansible/collections:/usr/share/ansible/collections executable location = /usr/local/bin/ansible python 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/collectionsmkdir -p ~/.ansible/plugins# 设置合适的权限chmod 755 ~/.ansible

配置建议

创建基本配置文件

# 创建 Ansible 配置文件sudo mkdir -p /etc/ansiblesudo tee /etc/ansible/ansible.cfg > /dev/null <<EOF[defaults]host_key_checking = Falseinventory = /etc/ansible/hostsremote_user = rootask_pass = False[inventory]enable_plugins = host_list, script, auto, yaml, ini, toml[ssh_connection]ssh_args = -C -o ControlMaster=auto -o ControlPersist=60spipelining = TrueEOF

创建主机清单文件

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

性能优化建议

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

总结

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

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

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