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.