centos7离线安装ansible

遇到一个离线环境,需要安装ansible来批量执行命令。网上大多数教程都是找一台系统一样且有网络的机器,下载依赖然后上传到离线环境安装,但是我这边没有有网络的相同系统版本的机器,找了半天,参考了tidb的历史部署文档,发现可以直接离线部署ansible。

tidb离线部署ansible文档
https://docs-archive.pingcap.com/zh/tidb/v3.1/offline-deployment-using-ansible

安装依赖包

在下载机上下载系统依赖离线安装包,然后上传至中控机。该离线包仅支持 CentOS 7 系统,包含 pip 及 sshpass。
依赖离线安装包:https://download.pingcap.org/ansible-system-rpms.el7.tar.gz

在中控机上安装系统依赖包:

tar -xzvf ansible-system-rpms.el7.tar.gz &&
cd ansible-system-rpms.el7 &&
chmod u+x install_ansible_system_rpms.sh &&
./install_ansible_system_rpms.sh

安装完成后,可通过 pip -V 验证 pip 是否安装成功:

pip -V
pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)

注意
如果你的系统已安装 pip,请确认版本 >= 8.1.2,否则离线安装 TiDB Ansible 及其依赖时,会有兼容问题。

离线安装ansible

Ansible 及相关依赖版本记录在 tidb-ansible/requirements.txt 文件中。下面步骤以安装 Ansible 2.5 为例。

在下载机上下载 Ansible 2.5 离线安装包,然后上传至中控机。
离线安装包:https://download.pingcap.org/ansible-2.5.0-pip.tar.gz
离线安装 TiDB Ansible 及相关依赖:

tar -xzvf ansible-2.5.0-pip.tar.gz &&
cd ansible-2.5.0-pip/ &&
chmod u+x install_ansible.sh &&
./install_ansible.sh

安装完成后,可通过 ansible --version 查看版本:

ansible --version
ansible 2.5.0

进阶

以上是tidb官方提供的离线安装方式,安装ansible2.5版本没有任何问题,官方也只建议使用 Ansible 2.4 至 2.7.11 版本。但是其实我需要的版本是2.9版本,于是我使用相同方式安装ansible2.9。发现依旧成功了。

在解压 Ansible 2.5 离线安装包之后,在ansible-2.5.0-pip/ansible_offline_packages文件夹中,存在有需要pip安装的文件,其中就包括ansible2.5的文件ansible-2.5.0.tar.gz

下载ansible安装包,到ansible-2.5.0-pip/ansible_offline_packages文件夹
下载地址:https://releases.ansible.com/ansible/

注意:
1、文件夹中只能存在一个ansible安装文件。不能同时存在两个ansible-*.tar.gz
2、ansible安装文件只能是数字,不能有其他字符:如ansible-2.9.27rc1.tar.gz是被允许的,需要更名为ansible-2.9.27.tar.gz
3、目前我只尝试了到2.9.27版本。理论上是2.5到2.9版本都支持。

替换完成后还是直接运行:

chmod u+x install_ansible.sh &&
./install_ansible.sh

安装完成后,可通过 ansible --version 查看版本:

ansible --version
ansible 2.9.27