RHEL 9.5 离线安装 Ansible 完整教程
文章目录
- RHEL 9.5 离线安装 Ansible 完整教程
-
- 环境准备
-
- 系统要求
- 准备工作清单
- 方法一:使用 RPM 包离线安装
- 方法二:使用 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
性能优化建议
- 启用连接复用:在配置文件中启用 ControlMaster 和 ControlPersist
- 使用流水线:启用 pipelining 选项以减少 SSH 连接次数
- 调整并发数:根据目标主机性能调整 forks 参数
- 使用本地连接:对本机操作使用
ansible_connection=local
总结
本文介绍了三种在 RHEL 9.5 上离线安装 Ansible 的方法:RPM 包安装、Python 包安装和源码编译安装。每种方法都有其适用场景:
- RPM 包方式:适合标准化环境,易于管理和卸载
- Python 包方式:更灵活,可以安装最新版本
- 源码编译:完全自主可控,适合定制化需求
选择合适的安装方式,并按照本文的步骤操作,即可在离线环境中成功部署 Ansible 自动化工具。安装完成后,记得进行充分的测试以确保系统正常运行。