이것은 잘못 쓰여졌습니다. 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_repositoryYUM 저장소를 추가하거나 제거하기 위한 모듈입니다. 모듈 문서의 예에 따르면 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
with를 사용하는 것도 state: 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