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_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_repositorywith를 사용하는 것도 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

관련 정보