Skip to Content
Infra & DevOpsCentOS 폐쇄망 환경을 위한 RPM 패키지 및 의존성 일괄 다운로드 가이드
☁️ Infra & DevOps2018년 1월 24일

CentOS 폐쇄망 환경을 위한 RPM 패키지 및 의존성 일괄 다운로드 가이드

#rpm#yum#centos#offline#infra#flamingo

과거 당사에서 빅데이터 모니터링 솔루션 빅데이터 모니터링 플랫폼를 납품할 때 가장 답답하면서도 빈번하게 발생하는 인프라 제약 사항은 바로 “폐쇄망(Air-Gapped Network)“이었습니다.

대부분의 금융권이나 대기업의 데이터 센터는 외부 인터넷 연결이 철저히 차단되어 있습니다. 플랫폼 서버와 수집 에이전트를 가동하기 위해 필수적으로 요구되는 OS 패키지(예: 특정 버전의 JDK, Python 라이브러리, 또는 sshpass 등)를 평소처럼 yum install -y 명령어로 설치할 수 없다는 뜻입니다.

이를 해결하기 위해, 인터넷이 연결된 외부(사내망) 환경에서 고객사 서버와 동일한 OS 버전의 가상 머신(VM)을 띄우고, 필요한 RPM 파일과 그에 얽힌 모든 의존성 패키지(Dependencies)를 한꺼번에 다운로드하여 USB나 망연계 시스템으로 반입한 뒤, 로컬 레포지토리를 구성하는 작업이 필수적이었습니다.


1. 준비 작업

의존성 패키지만 순수하게 다운로드하거나 로컬 저장소를 구축하기 위해서는 먼저 다운로드를 전담할 몇 가지 유틸리티가 필요합니다. (이 작업은 인터넷이 연결된 동일 OS 환경에서 수행합니다.)

bash
$ sudo yum install -y yum-downloadonly createrepo yum-utils

2. 의존성을 포함한 다운로드 방법

다운로드를 수행하는 데는 두 가지 방법이 있습니다.

방법 A: yum --downloadonly 사용

이 기능은 패키지를 실제로 설치하지 않고 캐시에 다운로드만 수행합니다. 하지만, 다운로드를 수행하는 현재 머신에 이미 해당 패키지의 의존성이 설치되어 있다면 중복으로 다운로드하지 않고 건너뛰는 단점이 발생할 수 있습니다.

bash
$ sudo mkdir -p /root/repo/rpms/ $ sudo yum install [패키지명] -y --downloadonly --downloaddir=/root/repo/rpms/

방법 B: yumdownloader 사용 (권장)

플랫폼 설치 전제조건 패키지들을 모을 때 제가 가장 선호했던 방식입니다. --resolve 옵션을 주면 현재 머신의 설치 상태와 무관하게 해당 패키지가 요구하는 모든 의존성 트리(Dependency Tree)를 추적하여 빠짐없이 RPM 파일로 내려받습니다.

bash
$ sudo yumdownloader --downloadonly --resolve --downloaddir=/root/repo/rpms/ [패키지명1] [패키지명2]

3. 현장 반입 및 로컬 레포지토리(Local Repo) 구성

/root/repo/rpms/ 폴더에 수십 개의 .rpm 파일이 모이면, 이를 tar.gz로 압축하여 고객사의 폐쇄망 서버로 반입합니다.

반입 후 단순히 rpm -ivh *.rpm으로 설치를 시도하다 보면 순서가 꼬여서 의존성 에러가 나는 경우가 많습니다. 따라서 반입한 폴더 자체를 하나의 Yum 저장소로 인식시키는 것이 가장 깔끔합니다.

bash
$ cd /root/repo/rpms/ $ createrepo . # 2. 로컬 Yum repo 파일 생성 $ sudo vi /etc/yum.repos.d/local-offline.repo

local-offline.repo 내용:

ini
[local-offline] name=Local Offline Repository for Flamingo baseurl=file:///root/repo/rpms/ enabled=1 gpgcheck=0
bash
# 3. YUM 캐시 갱신 및 설치 진행 $ yum clean all $ yum repolist $ yum install [패키지명]

클라우드가 활성화된 요즘에는 도커(Docker) 이미지 하나로 끝나는 경우가 많아졌지만, 보수적인 On-Premise 인프라를 다루는 엔지니어라면 이 오프라인 설치 사이클은 언제 닥칠지 모르는 위기를 넘기게 해주는 강력한 무기가 됩니다.

Last updated on