RHEL 9.5 离线安装 Ansible 完整教程

文章目录

  • [RHEL 9.5 离线安装 Ansible 完整教程](#RHEL 9.5 离线安装 Ansible 完整教程)
    • 环境准备
    • [方法一:使用 RPM 包离线安装](#方法一:使用 RPM 包离线安装)
      • [步骤 1:在联网机器上下载必要的 RPM 包](#步骤 1:在联网机器上下载必要的 RPM 包)
      • [步骤 2:创建本地仓库元数据](#步骤 2:创建本地仓库元数据)
      • [步骤 3:在离线服务器上安装](#步骤 3:在离线服务器上安装)
    • [方法二:使用 Python 离线安装](#方法二:使用 Python 离线安装)
      • [步骤 1:在联网机器上下载 Python 包](#步骤 1:在联网机器上下载 Python 包)
      • [步骤 2:在离线服务器上安装](#步骤 2:在离线服务器上安装)
    • 方法三:使用预编译的二进制包
      • [步骤 1:下载 Ansible 源码](#步骤 1:下载 Ansible 源码)
      • [步骤 2:离线编译安装](#步骤 2:离线编译安装)
    • 验证安装
    • 包可用性检查
      • [解决方案 1:启用 EPEL 仓库](#解决方案 1:启用 EPEL 仓库)
      • [解决方案 2:使用 pip 下载方式](#解决方案 2:使用 pip 下载方式)
    • 常见问题解决
      • [问题 1:依赖包缺失](#问题 1:依赖包缺失)
      • [问题 2:Python 版本兼容性](#问题 2:Python 版本兼容性)
      • [问题 3:权限问题](#问题 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 机器上执行以下操作:

bash 复制代码
# 创建下载目录
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:创建本地仓库元数据

bash 复制代码
# 安装 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 传输到离线服务器,然后执行:

bash 复制代码
# 解压文件包
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 包

bash 复制代码
# 创建工作目录
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:在离线服务器上安装

bash 复制代码
# 解压 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 源码

在联网机器上:

bash 复制代码
# 下载 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:离线编译安装

在离线服务器上:

bash 复制代码
# 解压源码包
tar -xzf ansible-2.15.6.tar.gz
cd ansible-2.15.6

# 编译安装
sudo python3 setup.py install

# 或者安装到用户目录
python3 setup.py install --user

验证安装

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

bash 复制代码
# 检查 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

包可用性检查

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

bash 复制代码
# 检查哪些包在当前仓库中可用
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 仓库

bash 复制代码
# 下载并安装 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 下载方式

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

常见问题解决

问题 1:依赖包缺失

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

bash 复制代码
# 查找缺失的依赖
rpm -qR ansible-core | grep "not installed"

# 下载缺失的包
sudo dnf download --downloadonly package-name

问题 2:Python 版本兼容性

确保 Python 版本兼容:

bash 复制代码
# 检查 Python 版本
python3 --version

# 如果版本过低,可能需要升级
sudo dnf update python3

问题 3:权限问题

解决权限相关问题:

bash 复制代码
# 为当前用户创建 Ansible 配置目录
mkdir -p ~/.ansible/collections
mkdir -p ~/.ansible/plugins

# 设置合适的权限
chmod 755 ~/.ansible

配置建议

创建基本配置文件

bash 复制代码
# 创建 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

创建主机清单文件

bash 复制代码
# 创建示例主机清单
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 自动化工具。安装完成后,记得进行充分的测试以确保系统正常运行。

相关推荐
lbb 小魔仙1 天前
【Linux】Ansible 自动化运维实战:2000+ 节点配置标准化教程
linux·运维·ansible
mzhan0172 天前
perl: redhat9, perl-interpreter.rpm 一个包分成很多个小包
开发语言·perl·redhat·rpm
扑火的小飞蛾4 天前
【Ansible学习笔记01】 批量执行 shell 命令
笔记·学习·ansible
oMcLin4 天前
如何在 Red Hat Linux 服务器上使用 Ansible 自动化部署并管理多节点 Hadoop 集群?
linux·服务器·ansible
linux修理工7 天前
vagrant ubuntu 22.04 ansible 配置
ubuntu·ansible·vagrant
biubiubiu07068 天前
Ansible自动化
运维·自动化·ansible
秋4279 天前
ansible配置与模块介绍
ansible
秋4279 天前
ansible剧本
linux·服务器·ansible
码农101号10 天前
Ansible - Role介绍 和 使用playbook部署wordPress
android·ansible
2301_8000509912 天前
Ansible
运维·ansible