RHEL 9.5 离线安装 Ansible 完整教程

发布于:2025-07-31 ⋅ 阅读:(19) ⋅ 点赞:(0)

在这里插入图片描述

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 = 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/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 自动化工具。安装完成后,记得进行充分的测试以确保系统正常运行。


网站公告

今日签到

点亮在社区的每一天
去签到