这个写错了。我们想要禁用除 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_repository
withstate: 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