Ansible playbook 从特定存储库获取补丁

Ansible playbook 从特定存储库获取补丁

我有一个在云环境中运行的实例,该实例启用了多个存储库,我如何仅修补特定的存储库,yum 不应从非操作系统存储库更新任何包。

示例 - yum repolist repo1 - 源操作系统提供商 repo2 - 源操作系统提供商 repo3 - 源第三方应用程序

剧本:

yum:
 name: *
 state: latest

如何限制 yum 不更新第三方存储库中的任何软件包。

  • 我不想移动第三方存储库配置文件,也不想禁用它们。

任何建议都会非常有帮助。

答案1

您需要告诉yum所有软件包不要更新。下面是一个排除所有 git、bash、php 包更新的示例。

- hosts: webservers
  tasks:
  - name: Exclude some packages from upgrade in Ansible.
    yum:
      name: "*"
      state: latest
      exclude: 
        - git*
        - bash*
        - php*

恕我直言,禁用和启用您想要更新库存的每个任务的存储库,比将所有存储库包写入排除列表的工作量要少。

以供参考enabledexclude参阅文档。 https://docs.ansible.com/ansible/2.3/yum_repository_module.html

答案2

这是一个不寻常的任务,yum 不支持。

创建您自己的本地存储库,请参阅手册页重新同步
yum update在他们身上奔跑,

或运行yum check-update
然后yum list available
结果的第三列是存储库,grep仅安装您想要的软件包。

Available Packages
2048-cli.x86_64                0.9.1-1.el6      epel

仅供参考:移动第三方存储库配置文件与禁用存储库不同。
禁用仅enabled=0在存储库文件中设置,并且仍会显示yum repolist disabled.禁用、更新、启用是最简单、最常用的方法,可以达到您想要的相同结果。

相关内容