背景
由于在工作环境中,经常遇到批量安装的服务器,不具备连接互联网的条件。同时通过简单的下载安装 ansible 源码安装,又会遇到各种奇葩问题,推荐使用自制 yum 源方法,然后使用 yum安装 ansible。不得不说,ansible很好用,ansible团队也一致在维护和更新。但是,版本之间存在比较大的差异。以前写的代码,现在直接安装新版本的ansible后可能就不能用了,你想想下:代码中用到的类没有了,模块消失了,变量不见了等等,当然可以查看新的文档更改代码适应新版本,但是代码沉淀时间久了,做迁移还是会遇到这种问题,这个问题困扰了很多Devops。如何安装写代码时的版本,如何在断网模式下安装代码对应版本的ansible, 这成为了一种刚需和痛点,本文就以安装旧版本:2.3.1为例,详细阐述。
环境
操作系统版本:Centos7.2
Python版本: Python2.7.5
操作步骤
旧代码机器操作
安装 yumdownloader
准备一台可以连接互联网的相同版本系统的操作系统(安装环境一样),使用yumdownloader工具下载ansible安装包以及所有依赖包。并以 root 身份安装 yumdownloader工具:
1 | yum -y install yum-utils |
创建文件夹
用于存放依赖的安装包
1 | mkdir /root/packages |
更新国内yum源
由于默认的源里没有 ansible,需要安装国内快速稳定的yum源, 这里选择阿里源:
1 | mv /etc/yum.repos.d/epel-7.repo /etc/yum.repos.d/epel-7.repo.bak |
下载 ansible 和 所有依赖包
1 | #下载ansible依赖包 |
新机器操作
将上面下载的所有 rpm 安装包打包,传输到需要批量的新服务器上,并解压到指定的文件夹里面
1 | # 新机器解压到/mnt/下 |
首先创建 安装createrepo
进入 /mnt/packages 目录中
1 | rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm |
然后使用createrepo生成符合要求的yum仓库
1 | # cd /mnt |
配置本地 yum源
把当前存在 yum 做备份,并移走别的目录
1 | # vim /etc/yum.repos.d/ansible.repo |
使用 yum安装 ansible
1 | yum -y install ansible |
验证安装成功:
1 | # ansible --version |