참고:
- 이 자습서는 Oracle에서 제공하는 무료 실습 환경에서 사용할 수 있습니다.
- Oracle Cloud Infrastructure 인증서, 테넌시 및 구획에 대한 예제 값이 사용됩니다. 랩을 완료한 후에는 이러한 값을 클라우드 환경과 관련된 값으로 대체하십시오.
컨테이너를 사용하여 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, 스크립트 및 지침을 제공합니다.
목표
이 실습에서는 다음 내용을 다룹니다.
- 컨테이너 도구 설치
- 필요한 소프트웨어로 컨테이너 구축
- 컨테이너 내에서 Repositoryync를 사용하여 미러 서비스 생성
필요 조건
- Oracle Linux 7 또는 Oracle Linux 8이 설치되어 있고 인터넷에 액세스할 수 있는 시스템입니다.
- 이 사용지침서에서는 사용자가 Oracle Linux 8을 사용하고 있으므로 Oracle Linux 7을 사용 중인 경우 패키지 설치 명령이 dnf를 사용한다고 가정하고 이 명령 지침을 yum으로 대체하십시오.
- 이 사용지침서에서는 Podman 및 Buildah를 사용하여 컨테이너의 빌드와 실행을 처리하지만, Oracle Linux 7을 사용 중인 경우 Docker를 사용해 이러한 작업을 수행할 수 있습니다.
필수 패키지 설치
아직 연결되지 않은 경우 터미널을 열고 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 서비스가 올바르게 작동하려면 두 개의 추가 디렉토리를 만들어야 합니다.
rhn
: ULN 채널을 미러링하려면 ULN 등록 정보를 저장하는 디렉토리를 만들어 이후의 컨테이너 재시작 시에도 계속 유지되도록 해야 합니다. ULN 등록 데이터에 액세스할 수 있도록 이 디렉토리를 실행할 때마다 컨테이너에 매핑할 수 있습니다.repo
: ULN 또는 yum 서버에서 미러링하는 모든 패키지 및 메타데이터를 저장하려면 디렉토리를 만들어야 합니다. 이 기반 디렉토리를 호스트하는 파일 시스템에 미러링하려는 모든 저장소 및 채널을 수용할 수 있는 충분한 디스크 공간이 필요합니다. 필요한 경우 전용 스토리지를 이 위치에 마운트하거나 대체 위치에 매핑하도록 선택할 수 있습니다.
이러한 디렉토리는 원하는 위치에 있을 수 있지만 이 컨테이너에 대한 구성 정보와 함께 생성하는 것이 좋습니다. 예:
mkdir rhn repo
Repositoryync에 대한 구성 변수 설정
ol-repo-sync 이미지는 config 디렉토리에 저장된 다양한 구성 파일에 저장되는 구성 정보에 따라 달라집니다.
config/uln.conf
: 이 파일은 Oracle SSO 인증서 및 활성 CSI와 같은 ULN 액세스 인증서를 저장합니다. 액세스를 제한하려면 파일 권한을 설정해야 합니다. ULN에서 미러링하지 않으려는 경우 이 파일이 필요하지 않습니다.config/repo-map.json
: 이 파일은 저장소 URL을 구성하고 여러 ULN 채널과 yum 저장소에 액세스하는 방법을 식별하는 데 사용됩니다. 이 파일을 편집하면 안되지만 이 파일을 참조하여 미러링에 사용할 수 있는 채널 이름을 확인할 수 있습니다. 이 파일은 새 ULN 채널을 고려하기 위해 때때로 업데이트해야 할 수 있습니다. 또한 이 파일의 일부 항목은 ULN에서만 사용할 수 있습니다. 여기에는base
,patch
,ksplice
,JavaSE
및Exadata
단어가 포함된 모든 저장소가 포함됩니다. 이러한 저장소는 특정 CSI로 추가로 제한될 수 있습니다.config/repos.json
: 이 파일은 미러링해야 할 ULN 채널 또는 yum 저장소를 식별하는 데 사용됩니다. 이 섹션은 두 개의 섹션으로 구분됩니다. 첫번째는 ULN 채널과 두번째 목록 yum repository입니다. yum 저장소만 미러링하려면 ULN 섹션을 완전히 제거합니다. ULN 섹션에는 yum 서버에서 직접 미러링하는 것이 더 효율적이므로 https://yum.oracle.com에서 저장소로 사용할 수 없는 채널만 포함되어야 합니다. 대부분의 채널은 Oracle Linux yum 서버에서도 사용할 수 있으므로 이 절을 사용하여 가능하면 채널을 나열합니다. ULN 섹션에 항목을 추가하는 경우 ULN 계정이 있어야 하며 ULN에 컨테이너 이미지를 등록해야 합니다.
주: ULN에서 동기화하려면 Oracle Linux 지원 구독이 필요합니다. 지원 서비스가 없으면
config/repos.json
에서uln
배열을 완전히 제거합니다.
최고의 동기화 성능을 위해 yum.oracle.com는 Akamai CDN을 활용하며 거의 항상 ULN보다 다운로드 속도가 훨씬 빨라지기 때문에 가능하면 uln 대신 yum 소스를 사용하십시오.
-
(선택 사항) 활성 Oracle Linux 지원 구독을 소유한 경우:
cp config/uln.sample.conf config/uln.conf
위치 표시자를 Oracle SSO 인증서 및 활성 CSI로 바꿉니다. 이 파일의 내용을 보호하려면 다음을 실행합니다.
chmod 400 config/uln.conf
이렇게 하면 자신을 제외한 모든 사용자가 액세스할 수 없게 됩니다.
-
다음 명령을 실행하여
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
파일을 최신 저장소 구성으로 업데이트하려면 언제든지 이 명령을 다시 실행할 수 있습니다. 새 저장소를 동기화할 수 있도록 새 업데이트 또는 주 버전이 릴리스될 때마다 명령을 실행해야 합니다. -
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
주:* 터미널에 대한 출력이 없는 데 몇 분이 걸리지만 완료되면 명령 프롬프트로 돌아가야 합니다. 현재 작업 디렉토리의
rhn
및config
디렉토리가 컨테이너에 매핑됩니다.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를 참조하십시오.
Use a Container to Create a DNF or ULN Repo Mirror
F54942-01
March 2022
Copyright © 2022, Oracle and/or its affiliates.