文章目錄
- 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
性能優化建議
- 啟用連接復用:在配置文件中啟用 ControlMaster 和 ControlPersist
- 使用流水線:啟用 pipelining 選項以減少 SSH 連接次數
- 調整并發數:根據目標主機性能調整 forks 參數
- 使用本地連接:對本機操作使用
ansible_connection=local
總結
本文介紹了三種在 RHEL 9.5 上離線安裝 Ansible 的方法:RPM 包安裝、Python 包安裝和源碼編譯安裝。每種方法都有其適用場景:
- RPM 包方式:適合標準化環境,易于管理和卸載
- Python 包方式:更靈活,可以安裝最新版本
- 源碼編譯:完全自主可控,適合定制化需求
選擇合適的安裝方式,并按照本文的步驟操作,即可在離線環境中成功部署 Ansible 自動化工具。安裝完成后,記得進行充分的測試以確保系統正常運行。