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

时间:2016-12-29 08:10:02

标签: ansible packages

回购中的实际包名称为package-2.6.12-3.el7.x86_64

目标是使用Ansible安装包:

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

repo可以不时更新包,但我不知道什么时候。

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

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

但任务失败,因为package-2.6不在回购中。虽然只是package有效,但它不是未来的证据。

更新

似乎通配符* do有效,例如package-2.6*

2 个答案:

答案 0 :(得分:1)

简短通用答案:

您应该只能使用通配符<RadioButton ... android:textAlignment="center" ... />

所以只是:

*

特定案例答案:

我在AWS中为您的特定情况创建了一个测试服务器,发现通配符确实有用(运行CentOS 7的EC2实例,安装`mongodb-org-server-3.4.0 *)。

您确实需要确保首先正确配置了mongo存储库,但是您在评论中说,如果您提供完整版本号,则可以下载该软件包,这是不寻常的。无论如何,这是我制作并运行的最小剧本:

- name: Install package yum: name: package-2.6* state: latest

play.yml:

此剧本复制repo配置的本地文件,如下所示(路径相对于- hosts: all remote_user: centos tasks: - name: Add MongoDB repo for CentOS become: true copy: src: ./files/mongodb-org-3.4.repo dest: /etc/yum.repos.d/mongodb-org-3.4.repo - name: Install mongodb become: true yum: name: mongodb-org-server-3.4.0* state: latest # Works with 'present' too, but won't update versions 文件):

play.yml

files/mongod-org-3.4.repo:

答案 1 :(得分:1)

不确定是否适用于您的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中的disableenablerepo参数安装/更新操作的任务。

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

注意:使用disablerepo: "*"作为mongodb软件包也存在于其他存储库中,例如epel。