运行yum更新,但排除某些模块/库/软件包

时间:2018-07-27 16:03:28

标签: centos ansible

我正在尝试使用Ansible升级我们的Centos 6.5和7.0服务器,但不包括某些更新。例如...

一台服务器有两个我们不希望更新的软件包,因为它们会与我们的开发人员混淆:

  • elasticsearch-5.6.8-1
  • kibana-5.6.8-1

我们想更新的所有其他内容。我将这些用作仅在运行7.0的那2台服务器上不进行更新的示例。但是,在其他情况下,我们可能希望更新所有内容,除了上面的少数应用程序或模块。

这就是我用于yum更新游戏的内容。它工作正常,但会更新所有可用于更新的内容。

---
- hosts: all
  remote_user: root
  tasks:
    - name: update OS
      yum: name=* state=latest
      remote_user: root

任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:0)

yum模块确实具有使用exclude属性排除软件包的功能。

但是,根据您的情况,最好从yum存储库中排除软件包。有关详细信息,请参见How long is the "JobService execution time limit" mentioned in Android's JobIntentService docs?模块。

答案 1 :(得分:0)

yum模块具有一个exclude参数。将其添加到您的代码中:

---
- hosts: all
  remote_user: root
  tasks:
    - name: update OS
      yum:
        name: "*"
        exclude:
          - elasticsearch
          - kibana
        state: latest

答案 2 :(得分:0)

您可以在yum模块https://docs.ansible.com/ansible/latest/modules/yum_module.html上使用exclude,但是,像@ aaron-walker一样,我将禁用所有存储库,因为您不想更新这些rpm以获得更多保证不会使用disablerepo更新它们。