참고:

컨테이너를 사용하여 DNF 또는 ULN Repo Mirror 생성

Oracle Support 면책

Oracle은 다음 지침에 따라 제공되는 단계의 순서에 대한 기술 지원을 제공하지 않습니다. 이러한 단계는 Oracle에서 제공하지 않는 자원을 참조하고 openource 프로젝트를 참조하기 때문입니다. 이 자습서에서는 편리한 지침만 제공합니다.

Oracle Linux 소프트웨어 배포 미러를 만드는 데 지원되는 Oracle 방법은 Oracle Linux를 실행 중인 시스템에서 dnf reposync 명령을 사용하는 것입니다. 자세한 내용은 https://docs.oracle.com/en/operating-systems/oracle-linux/software-management/sfw-mgmt-UseSoftwareDistributionMirrors.html#use-mirrors을 참조하십시오.

소개

Oracle Linux 8에는 DNF에 대해 완벽하게 작동하는 reposync 도구가 포함되어 있어 yum 저장소의 미러를 쉽게 만들 수 있습니다. 이 기능은 대부분의 시스템에서 인터넷에 직접 액세스할 수 없는 환경에 대해 ULN 채널을 미러링하도록 확장할 수도 있습니다. 조직에서 사용하는 yum 저장소 및 ULN 채널의 yum 미러를 만들어 네트워크 오버헤드를 줄이고 환경 전반에서 yum 성능을 향상시킬 수 있습니다. Yum 미러는 오프라인 Ksplice와 같은 환경에 다른 서비스를 구성하는 경우에도 유용합니다.

이전 릴리스의 Oracle Linux에는 미러링 서비스를 수행하는 데 사용할 수 있는 uln-yum-mirror 패키지가 포함되었지만 특별히 효율적이지 않았고 설정도 비교적 복잡했습니다.

ULN 또는 yum 미러 서비스는 컨테이너 세트 내에서 가장 잘 실행되는 서비스의 일반적인 예입니다. Docker 또는 Podman을 사용하면 oraclelinux:8-slim 이미지를 사용하는 컨테이너를 빠르고 쉽게 배포하여 조직 내에서 사용하는 yum 저장소 또는 ULN 채널의 예약된 동기화를 처리할 수 있습니다. 클라이언트 시스템에서 액세스할 수 있는 웹 서비스 내에서 미러링된 저장소의 프로비전을 처리하는 컨테이너를 배치할 수도 있습니다.

오픈 소스 GitHub 프로젝트는 이 종류의 서비스를 https://github.com/Djelibeybi/oraclelinux-reposync에 설정하기 위한 Dockerfile, 스크립트 및 지침을 제공합니다.

목표

이 실습에서는 다음 내용을 다룹니다.

필요 조건

필수 패키지 설치

아직 연결되지 않은 경우 터미널을 열고 ssh를 통해 ol8-server 시스템에 연결합니다.

ssh oracle@<ip_address_of_ol8-server>

container-reposync repository를 복제할 수 있도록 git를 설치합니다.

sudo dnf install -y git

Podman 및 관련 유틸리티 설치:

sudo dnf module install -y container-tools:ol8

주: Oracle Linux 7을 사용하는 경우 지원되지 않는 ELT 저장소를 통해서만 빌드ah 및 스킨 패키지를 사용할 수 있습니다. 따라서 컨테이너 이미지를 작성하고 실행하기 위해 Docker를 사용할 수 있습니다. Docker 사용에 대한 자세한 내용은 openource 프로젝트 README.md에서 확인할 수 있습니다.

container-reposync repository 복제

저장소 복제:

git clone https://github.com/Djelibeybi/oraclelinux-reposync.git
cd oraclelinux-reposync

그림 만들기

저장소에 포함된 두 개의 컨테이너 이미지를 작성합니다.

buildah build-using-dockerfile -t ol-repo-sync .
buildah build-using-dockerfile -t ol-repo-web -f Dockerfile.nginx .

빌드를 확인합니다.

podman images

추가 저장 영역 디렉토리 생성

container-reposync 서비스가 올바르게 작동하려면 두 개의 추가 디렉토리를 만들어야 합니다.

이러한 디렉토리는 원하는 위치에 있을 수 있지만 이 컨테이너에 대한 구성 정보와 함께 생성하는 것이 좋습니다. 예:

mkdir rhn repo

Repositoryync에 대한 구성 변수 설정

ol-repo-sync 이미지는 config 디렉토리에 저장된 다양한 구성 파일에 저장되는 구성 정보에 따라 달라집니다.

주: ULN에서 동기화하려면 Oracle Linux 지원 구독이 필요합니다. 지원 서비스가 없으면 config/repos.json에서 uln 배열을 완전히 제거합니다.

최고의 동기화 성능을 위해 yum.oracle.com는 Akamai CDN을 활용하며 거의 항상 ULN보다 다운로드 속도가 훨씬 빨라지기 때문에 가능하면 uln 대신 yum 소스를 사용하십시오.

  1. (선택 사항) 활성 Oracle Linux 지원 구독을 소유한 경우:

    cp config/uln.sample.conf config/uln.conf
    

    위치 표시자를 Oracle SSO 인증서 및 활성 CSI로 바꿉니다. 이 파일의 내용을 보호하려면 다음을 실행합니다.

    chmod 400 config/uln.conf
    

    이렇게 하면 자신을 제외한 모든 사용자가 액세스할 수 없게 됩니다.

  2. 다음 명령을 실행하여 config/repo-map.json 파일을 만듭니다.

    podman run --rm -it \
      --name ol-repo-sync \
      -v ${PWD}/config:/config:z \
      -v ${PWD}/repo:/repo:z \
      ol-repo-sync update
    

    config/repo-map.json 파일을 최신 저장소 구성으로 업데이트하려면 언제든지 이 명령을 다시 실행할 수 있습니다. 새 저장소를 동기화할 수 있도록 새 업데이트 또는 주 버전이 릴리스될 때마다 명령을 실행해야 합니다.

  3. repos.json 복사

    cp config/repos.sample.json config/repos.json
    

    동기화할 모든 저장소를 uln 또는 yum 배열에 추가합니다.

    예제:

    다음은 ULN의 Oracle Linux 8 Ksplice aware userspace 패키지와 yum.oracle.com의 Oracle Linux Automation Manager 패키지를 동기화하는 스크립트입니다. 이 연습 중에 ULN 계정이 없으면 전체 uln 블록을 제거합니다.

    echo '{
       "uln": [
            "ol8_x86_64_userspace_ksplice",
            "ol8_aarch64_userspace_ksplice"
        ],   
        "yum": [
            "ol8_x86_64_automation"
        ]
    }' | tee config/repos.json
    

(선택 사항) ULN으로 컨테이너 등록

ULN에서 채널을 미러링하지 않으려는 경우 컨테이너를 등록할 필요가 없습니다. ULN 자격 증명을 ULN 구성 파일에 입력했고 ULN 등록 데이터를 포함하는 디렉토리를 만들었고 repo 구성 파일에서 하나 이상의 ULN 채널을 구성한 경우 컨테이너를 등록해야 합니다.

등록은 다음을 실행하여 수행할 수 있습니다.

podman run --rm -it \
  -v ${PWD}/rhn:/etc/sysconfig/rhn:z \
  -v ${PWD}/config:/config:z \
  -v ${PWD}/repo:/repo:z \
  ol-repo-sync register

주:* 터미널에 대한 출력이 없는 데 몇 분이 걸리지만 완료되면 명령 프롬프트로 돌아가야 합니다. 현재 작업 디렉토리의 rhnconfig 디렉토리가 컨테이너에 매핑됩니다. rhn 디렉토리가 실행된 각 후속 컨테이너에 대해 /etc/sysconfig/rhn에 매핑되는 경우 컨테이너에 대해 한 번만 등록을 수행하면 됩니다.

미러 저장소를 채웁니다.

구성된 저장소 및 채널의 패키지로 미러 저장소를 채우려면 다음을 실행합니다.

podman run --rm -it \
  -v ${PWD}/rhn:/etc/sysconfig/rhn \
  -v ${PWD}/config:/config \
  -v ${PWD}/repo:/repo:z \
  ol-repo-sync

컨테이너는 config/repos.json에 구성된 각 채널을 자동으로 추가 및 가입하고 Oracle Linux yum 서버에서 사용되는 것과 동일한 계층을 만듭니다.

이 명령은 cron작업 또는 systemd 타이머를 사용하여 반복 일정에서 실행되도록 예약할 수 있습니다.

주: 패키지가 모두 시스템에 로컬로 다운로드되므로 이 단계를 완료하는 데 시간이 걸립니다.

클라이언트 시스템에 로컬 yum Mirror 제공

ol-repo-web 컨테이너 이미지를 사용하여 클라이언트 시스템에 yum 저장소를 제공합니다. 이 컨테이너는 영구적으로 실행되며 부트 시 시작하도록 구성할 수 있습니다.

podman run --detach --name yum-server \
  -p 8080:80 \
  -v ${PWD}/repo:/var/www/html/repo:ro \
  ol-repo-web

주: repo 디렉토리가 읽기 전용 권한으로 yum-server 컨테이너에 매핑되어 미러링된 저장소 및 채널이 업데이트되는 동안 컨테이너가 계속 실행되고 클라이언트를 제공할 수 있습니다.

로컬 yum 미러를 확인합니다.

다음 내용으로 새 dnf 저장소 항목을 생성합니다.

echo '[ol_automation_http_repo]
name=OL_automation_x86_64_HTTP
baseurl="http://localhost:8080/repo/OracleLinux/OL8/automation/$basearch/"
gpgcheck=0' | sudo tee /etc/yum.repo.d/ol-local.repo

주: 외부 시스템에 노출하는 경우 위의 baseurl을 컨테이너를 실행하는 시스템의 IP 주소 또는 호스트 이름으로 변경합니다.
또한 방화벽을 열어 포트 8080에 대한 액세스를 허용합니다.

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

그런 다음 새 항목이 작동하는지 확인합니다.

dnf repolist
dnf info ansible

추가 정보

기타 관련 리소스 참조:

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 찾아보거나 Oracle Learning YouTube channel에서 무료 학습 콘텐츠에 액세스할 수 있습니다. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer로 변경하십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.