Ansible – 安装包固定到主要版本

repo中的实际包名是package-2.6.12-3.el7.x86_64.

目标是使用Ansible安装包,以便:

>确保已安装点版本,例如package-2.6
>不安装主要版本,例如package-3.0
>次要版本的更新,例如package-2.6.13-4

回购可以不时更新包,但我不知道什么时候.

我的想法是安装这样的包;

- name: Install package
  yum:
    name: package-2.6
    state: present

但是任务失败了,因为package-2.6不在repo中.简单的包装工作,但它不是未来的证据.

更新:

似乎通配符*工作,例如package-2.6 *.

最佳答案 不确定是否适用于您的Yum套餐.但是对于Java Open JDK安装,其中java-1.7.0和java-1.8.0软件包都可以从我配置的yum repos安装.

这将确保1.7.x版本是最新版本,而无需安装1.8.x.

- name: Install latest 1.7.x jdk
  yum:
    name: java-1.7.0-openjdk.x86_64
    state: latest

从上面安装的实际版本是:

$rpm -q java-1.7.0-openjdk.x86_64
  java-1.7.0-openjdk-1.7.0.121-2.6.8.1.el6_8.x86_64

在MongoDB的情况下,2.x版本和3.x版本的包名称相同.

但是2.x版本有一个Yum repo文件,3.x版本有另一个. https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

因此,为确保获得最新的2.x版本而不转移到3.x,请将2.x repo文件添加到目标主机,并在ansible任务中使用disable和enablerepo参数进行安装/更新操作.

 - name: Ensure latest 2.x mongodb version is installed
   yum:
     name: mongodb-org
     disablerepo: "*"
     enablerepo: mongodb-org-2.6
     state: latest

注意:使用disablerepo:“*”作为mongodb包也存在于其他repos中,例如epel.

点赞