禁用通过 ansible 匹配值的存储库

禁用通过 ansible 匹配值的存储库

这个写错了。我们想要禁用除 rhel 和 epel 之外的所有存储库。

- name: yum-clean-metadata
  command: yum clean metadata
  args:
    warn: no

- name: Repos disabled if not rhel.repo
  debug: msg={{ lookup('fileglob', '/etc/yum.repo.d/rhel.repo') }}
  yum:
    name: 
    disablerepo: "ora,ol7_latest"

- name: Ensure the yum package index is up to Date
  yum:
    update_cache: yes
    name: '*'
    state: latest

答案1

如果您不反对操作存储库文件本身,则此操作应重命名/etc/yum.repos.d/*.repo除列表中指定的文件之外的所有文件allowed_repos

如果您确切知道要禁用哪些文件,则另一个答案更简单。

  - name: Disable extra repositories
    vars:
      allowed_repos:
        - /etc/yum.repos.d/epel.repo
        - /etc/yum.repos.d/rhel.repo
      found_repo_files: []
    block:
      - name: Find all repositories
        find:
          paths: "/etc/yum.repos.d"
          file_type: file
          recurse: no
          patterns: "*.repo"
        register: repos_d

      - name: Compile repository list
        set_fact:
          found_repo_files: "{{ found_repo_files }} + [ '{{ item.path }}' ]"
        loop_control:
          label: "{{ item.path }}"
        with_items:
          - "{{ repos_d.files }}"

      - name: Rename any extra repositories
        when: not ansible_check_mode
        command:
          cmd: "mv {{ item }} {{ item }}.orig"
          removes: "{{ item }}"
        with_items:
          - "{{ found_repo_files | difference(allowed_repos) }}"

答案2

您可以使用yum_存储库用于添加或删除 YUM 存储库的模块。根据模块文档中的示例,您必须设置state: absent从系统中删除存储库。

所以它应该看起来像这样:

- name: Remove repositories ora and ol7_latest
  yum_repository:
    name: "{{ item }}"
    state: absent
    with_items:
     - ora
     - ol7_latest

我不知道您的系统上安装了哪些附加存储库。您可以运行yum repolist来查看安装了哪些存储库。

答案3

大多数答案都集中在完全禁用或删除存储库。使用yum_repositorywithstate: absent是一种方法,但如果您需要重新启用,您就会丢失信息。

IMO 更好的方法是使用ini_file操作文件并在需要的地方/etc/yum.repos.d/*.repo切换标志。enabled=0

同时,由于您没有明确问题是否希望在游戏后继续保持禁用状态,因此这里有一个解决方案可以在一项任务中实现您的目标。如您所知,启用/禁用的存储库仅在该单个任务的时间内有效。

- name: update all package using only rhel and epel repositories
  yum:
    disablerepo: "*"
    enablerepo:
      - rhel
      - epel
    name: "*"
    state: latest

相关内容