LabHub
배우기 러닝패스 코스

RHEL系の管理

エアギャップ搬入を完走する

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

반입 번들을 만들어 매니페스트로 검증하고, 아카이브로 묶었다 풀고, 저장소를 세워 그것만으로 설치합니다. 폐쇄망 절차 전체를 한 번에 통과합니다.

왜 중요한가

반입 매체에는 rpm 만 담으면 안 됩니다. rpm, repodata, GPG 키, 매니페스트, 체크섬, 설치 절차서 여섯 가지가 다 있어야 하고, 실제로 가장 자주 빠지는 것이 매니페스트와 GPG 키입니다.

그리고 검증은 양방향이어야 합니다. 매니페스트의 모든 파일이 매체에 있는가(누락 검사), 그리고 매체에 매니페스트에 없는 파일이 있는가(추가 검사). 누락은 설치 실패로 금방 드러나지만 추가된 파일은 아무도 모르게 지나갑니다 — 반입 심의 관점에서는 이쪽이 더 위험합니다.

단계

  1. /root/airgap/rpms 디렉터리를 만들고, treenano의존성까지 모두(이미 설치된 것도 포함) 그 디렉터리로 내려받으세요.
  2. /root/airgap/MANIFEST.tsv 를 만드세요. 첫 줄은 NAME EPOCH VERSION RELEASE ARCH SHA256 FILE 헤더(탭 구분)이고, 각 rpm 에 대해 한 줄씩 그 값을 채워야 합니다. epoch 가 없는 패키지는 0 으로 채우세요.
  3. rpms 디렉터리와 매니페스트를 /root/airgap/bundle.tar.gz 로 묶고, 그 아카이브의 sha256 을 /root/airgap/bundle.sha256 에 저장하세요.
  4. /root/airgap/unpacked/ 에 아카이브를 풀고, 매니페스트의 체크섬과 실제 파일을 대조한 결과를 /root/airgap/verify.txt 에 저장하세요. 그리고 매니페스트에 없는데 디렉터리에 있는 파일의 개수를 숫자 한 줄로 /root/airgap/extra.txt 에 적으세요(0 이어야 합니다).
  5. /root/airgap/unpacked/rpms 에 메타데이터를 만들고, /etc/yum.repos.d/airgap.repo 를 작성하세요. 저장소 ID 는 airgap-local, namesnapshot 과 날짜, baseurl=file:///root/airgap/unpacked/rpms, enabled=1, gpgcheck=0, metadata_expire=-1 을 포함해야 합니다.
  6. 다른 저장소를 모두 끄고 airgap-local 만 켠 상태tree 를 재설치하고, 출력을 /root/airgap/install.txt 로 저장하세요.
  7. 상태 기록을 남기세요. /root/airgap/state-modules.txt 에 모듈 목록을, /root/airgap/state-userinstalled.txt 에 사용자 설치 목록을 저장하세요.
  8. /root/airgap/report.txt 를 다음 6줄로 만드세요. BUNDLE_ID=airgap-<오늘 날짜 YYYY-MM-DD> / PACKAGES=<rpms 안 .rpm 개수> / MANIFEST_LINES=<매니페스트의 헤더 제외 줄 수> / VERIFY=OK / EXTRA=0 / INSTALLED_FROM=airgap-local

참고

반입 번들 수집

/root/airgap/rpms 디렉터리를 만들고, treenano의존성까지 모두(이미 설치된 것도 포함) 그 디렉터리로 내려받으세요.

의존성까지 받되 이미 설치된 것도 건너뛰지 않는 옵션 조합이 필요합니다.

매니페스트 생성

/root/airgap/MANIFEST.tsv 를 만드세요. 첫 줄은 NAME EPOCH VERSION RELEASE ARCH SHA256 FILE 헤더(탭 구분)이고, 각 rpm 에 대해 한 줄씩 그 값을 채워야 합니다. epoch 가 없는 패키지는 0 으로 채우세요.

NEVRA 와 체크섬을 함께 담습니다. epoch 가 없는 패키지는 0 으로 채우는 표기가 있습니다.

아카이브로 묶기

rpms 디렉터리와 매니페스트를 /root/airgap/bundle.tar.gz 로 묶고, 그 아카이브의 sha256 을 /root/airgap/bundle.sha256 에 저장하세요.

매체에 담을 단일 객체를 만듭니다. 아카이브 자체의 체크섬도 남기세요.

풀고 검증

/root/airgap/unpacked/ 에 아카이브를 풀고, 매니페스트의 체크섬과 실제 파일을 대조한 결과를 /root/airgap/verify.txt 에 저장하세요. 그리고 매니페스트에 없는데 디렉터리에 있는 파일의 개수를 숫자 한 줄로 /root/airgap/extra.txt 에 적으세요(0 이어야 합니다).

다른 경로에 풀어 체크섬을 대조합니다. 매니페스트에 없는 파일도 확인하세요.

저장소 구성

/root/airgap/unpacked/rpms 에 메타데이터를 만들고, /etc/yum.repos.d/airgap.repo 를 작성하세요. 저장소 ID 는 airgap-local, namesnapshot 과 날짜, baseurl=file:///root/airgap/unpacked/rpms, enabled=1, gpgcheck=0, metadata_expire=-1 을 포함해야 합니다.

메타데이터를 만들고 .repo 파일을 씁니다. 폐쇄망이므로 만료 설정을 조정하세요.

그 저장소만으로 설치

다른 저장소를 모두 끄고 airgap-local 만 켠 상태tree 를 재설치하고, 출력을 /root/airgap/install.txt 로 저장하세요.

다른 저장소를 전부 끄고 반입 저장소만 켠 상태로 설치합니다.

모듈 상태 기록

상태 기록을 남기세요. /root/airgap/state-modules.txt 에 모듈 목록을, /root/airgap/state-userinstalled.txt 에 사용자 설치 목록을 저장하세요.

모듈 목록과 사용자 설치 목록을 남깁니다. 반입 기록의 일부입니다.

반입 보고서

/root/airgap/report.txt 를 다음 6줄로 만드세요. BUNDLE_ID=airgap-<오늘 날짜 YYYY-MM-DD> / PACKAGES=<rpms 안 .rpm 개수> / MANIFEST_LINES=<매니페스트의 헤더 제외 줄 수> / VERIFY=OK / EXTRA=0 / INSTALLED_FROM=airgap-local

번들 정보와 검증 결과를 모읍니다. 값은 실제 확인 결과여야 합니다.