Ansible-安装到主要版本的安装软件包

Kev*_*n C 5 packages ansible

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

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

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

该仓库可以不时更新软件包,但我不知道何时。

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

- name: Install package
  yum:
    name: package-2.6
    state: present
Run Code Online (Sandbox Code Playgroud)

但是任务失败,因为package-2.6不在仓库中。尽管package该方法很简单,但并不是未来的证明。


更新:

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

Tom*_*eld 5

简短的通用答案:

您应该可以只使用通配符*

所以就:

- name: Install package
  yum:
    name: package-2.6*
    state: latest 
Run Code Online (Sandbox Code Playgroud)

长案例具体答案:

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

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

play.yml:

- 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
Run Code Online (Sandbox Code Playgroud)

该剧本为 repo 配置复制了一个本地文件,如下所示(路径是相对于play.yml文件的):

files/mongod-org-3.4.repo:

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
Run Code Online (Sandbox Code Playgroud)


Zle*_*ni 1

不确定是否适用于您的 Yum 套餐。但对于 Java Open JDK 安装,其中 java-1.7.0 和 java-1.8.0 软件包都可以从我配置的 yum 存储库进行安装。

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

- name: Install latest 1.7.x jdk
  yum:
    name: java-1.7.0-openjdk.x86_64
    state: latest
Run Code Online (Sandbox Code Playgroud)

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

$ 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
Run Code Online (Sandbox Code Playgroud)

对于 MongoDB,2.x 版本和 3.x 版本的包名称相同。

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

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

 - name: Ensure latest 2.x mongodb version is installed
   yum:
     name: mongodb-org
     disablerepo: "*"
     enablerepo: mongodb-org-2.6
     state: latest
Run Code Online (Sandbox Code Playgroud)

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