15.2. 에지 이미지 RHEL 업데이트
15.2.1. RHEL for Edge 이미지 업데이트 배포 방법
에지 이미지용 RHEL을 사용하면 수동으로 업데이트를 배포하거나 배포 프로세스를 자동화할 수 있습니다. 업데이트는 각 업데이트의 상태를 알 수 있는 원자성 방식으로 적용되며 업데이트는 준비되고 재부팅 시에만 적용됩니다. 장치를 재부팅할 때까지 변경 사항이 표시되지 않으므로 재부팅을 예약하여 최대한의 가동 시간을 유지할 수 있습니다.
이미지 업데이트 중에 업데이트된 운영 체제 콘텐츠만 네트워크를 통해 전송됩니다. 이렇게 하면 전체 이미지를 전송하는 것보다 배포 프로세스가 더 효율적입니다. /usr
의 운영 체제 바이너리와 라이브러리는 읽기 전용
이며 읽기 및 쓰기
상태는 /var
및 /etc
디렉터리에서 유지됩니다.
새 배포로 이동할 때 /etc
및 /var
디렉터리가 읽기 및 쓰기
권한이 있는 새 배포로 복사됩니다. /usr
디렉터리는 읽기 전용
권한이 있는 새 배포 디렉터리에 소프트 링크로 복사됩니다.
다음 다이어그램은 RHEL for Edge 이미지 업데이트 배포 프로세스를 보여줍니다.
![이미지 배포](https://access.redhat.com/webassets/avalon/d/Red_Hat_Enterprise_Linux-9-Composing_installing_and_managing_RHEL_for_Edge_images-ko-KR/images/fce86ffb0e9c5a01ceed74d72d223153/edge-os-upgrade.png)
기본적으로 새 시스템은 chroot
작업과 유사한 프로세스를 사용하여 부팅됩니다. 즉 시스템은 기본 서버 환경에 대한 노출을 제어하는 동안 파일 시스템에 대한 액세스를 제어할 수 있습니다. 새로운 /sysroot
디렉토리에는 주로 다음과 같은 부분이 있습니다.
-
/sysroot/ostree/repo
디렉터리에 있는 리포지토리 데이터베이스입니다. -
시스템 업데이트의 각 작업에서 생성되는
/sysroot/ostree/deploy/rhel/deploy
디렉터리의 파일 시스템 개정입니다. -
이전 시점에서 배포에 연결되는
/sysroot/ostree/boot
디렉터리입니다./ostree
는/sysroot/ostree
에 대한 소프트 링크입니다./sysroot/ostree/boot
디렉토리의 파일은 중복되지 않습니다. 배포 중에 변경되지 않은 경우 동일한 파일이 사용됩니다. 파일은/sysroot/ostree/repo/objects
디렉터리에 저장된 다른 파일에 하드 링크입니다.
운영 체제는 다음과 같은 방식으로 배포를 선택합니다.
-
dracut
툴은initramfs 루트
파일 시스템의ostree
커널 인수를 구문 분석하고/usr
디렉터리를읽기 전용
바인드 마운트로 설정합니다. -
/sysroot
의 배포 디렉터리를/
디렉터리에 바인딩합니다. -
MS_MOVE
마운트 플래그를 사용하여 이미 마운트된 운영 체제를 다시 마운트
문제가 발생하면 rpm-ostree
cleanup 명령으로 이전 배포를 제거하여 배포 롤백을 수행할 수 있습니다. 각 클라이언트 머신에는 /ostree/repo
에 저장된 OSTree
리포지토리와 /ostree/deploy/$STATEROOT/$CHECKSUM
에 저장된 배포 세트가 포함되어 있습니다.
RHEL for Edge 이미지의 배포 업데이트를 통해 여러 장치에 걸쳐 시스템 일관성이 향상되고 재현이 쉬워지고 사전 및 후 시스템 상태 변경 간의 격리를 개선할 수 있습니다.
15.2.2. 커밋 업데이트 빌드
다음과 같은 블루프린트를 변경한 후 커밋 업데이트를 빌드할 수 있습니다.
- 시스템에 필요한 추가 패키지 추가
- 기존 구성 요소의 패키지 버전 수정
- 기존 패키지를 제거합니다.
사전 요구 사항
- RHEL 이미지 빌더를 실행하는 시스템을 업데이트했습니다.
- 블루프린트 업데이트가 생성되어 있습니다.
- 이전에 OSTree 리포지토리를 생성하고 HTTP를 통해 제공했습니다. RHEL for Edge 이미지를 설치할 웹 서버 설정을 참조하십시오.
절차
새 커밋 이미지 작성을 시작합니다.
--url
,--ref
,블루프린트-name
,edge-commit
.# composer-cli compose start-ostree --ref rhel/9/x86_64/edge --url http://localhost:8080/repo <blueprint-name> edge-commit
명령은 작성 프로세스를 시작하기 전에 OStree 리포지터리에서 메타데이터를 가져오도록 지시합니다. 생성된 새 OSTree 커밋에는 상위 이미지로 원본 OSTree 커밋에 대한 참조가 포함되어 있습니다.
작성 프로세스가 완료되면
.tar
파일을 가져옵니다.# composer-cli compose image <UUID>
OSTree 리포지토리에 커밋 기록을 저장할 수 있도록 임시 디렉터리에 커밋을 추출합니다.
$ tar -xf UUID.tar -C /var/tmp
tar -xf
명령을 사용하여 결과 OSTree 리포지토리 커밋을 검사합니다. 생성된 OSTree 리포지터리를 검사할 수 있도록 tar 파일을 디스크에 추출합니다.$ ostree --repo=/var/tmp/repo log rhel/9/x86_64/edge commit d523ef801e8b1df69ddbf73ce810521b5c44e9127a379a4e3bba5889829546fa Parent: f47842de7e6859cee07d743d3c67949420874727883fa9dbbaeb5824ad949d91 ContentChecksum: f0f6703696331b661fa22d97358db48ba5f8b62711d9db83a00a79b3ae0dfe16 Date: 2023-06-04 20:22:28 /+0000 Version: 9
출력 예제에는 상위 커밋을 참조하는 리포지터리에 단일 OSTree 커밋이 있습니다. 상위 커밋은 이전에 작성한 원래 OSTree 커밋과 동일한 체크섬입니다.
ostree pull-local
명령을 사용하여 두 커밋을 병합합니다.$ sudo ostree --repo=/var/srv/httpd/repo pull-local /var/tmp/repo 20 metadata, 22 content objects imported; 0 bytes content written
이 명령은 디스크의 위치에서 모든 새 메타데이터 및 콘텐츠를
/var/
srv/httpd
검증
대상 OSTree 리포지터리를 검사합니다.
$ ostree --repo=/var/srv/httpd/repo log rhel/9/x86_64/edge commit d523ef801e8b1df69ddbf73ce810521b5c44e9127a379a4e3bba5889829546fa Parent: f47842de7e6859cee07d743d3c67949420874727883fa9dbbaeb5824ad949d91 ContentChecksum: f0f6703696331b661fa22d97358db48ba5f8b62711d9db83a00a79b3ae0dfe16 Date: 2023-06-04 20:22:28 /+0000 Version: 9 (no subject) commit f47842de7e6859cee07d743d3c67949420874727883fa9dbbaeb5824ad949d91 ContentChecksum: 9054de3fe5f1210e3e52b38955bea0510915f89971e3b1ba121e15559d5f3a63 Date: 2023-06-04 20:01:08 /+0000 Version: 9 (no subject)
대상 OSTree 리포지토리에 이제 논리적 순서로 리포지토리에 두 개의 커밋이 포함되어 있음을 확인할 수 있습니다. 성공적으로 확인한 후 RHEL for Edge 시스템을 업데이트할 수 있습니다.
15.2.3. 에지 이미지 업데이트를 위해 수동으로 RHEL 배포
엣지용 RHEL을 편집한 후 이미지 커밋을 업데이트할 수 있습니다. RHEL 이미지 빌더에서는 업데이트된 RHEL for Edge 이미지에 대한 새 커밋을 생성합니다. 이 새 커밋을 사용하여 최신 패키지 버전 또는 추가 패키지와 함께 이미지를 배포합니다.
에지 이미지 업데이트를 위해 RHEL을 배포하려면 사전 요구 사항을 충족해야 하며 절차를 따르십시오.
사전 요구 사항
- RHEL 시스템에서 RHEL 이미지 빌더 대시보드에 액세스했습니다.
- 에지 이미지 options용 RHEL을 생성했습니다.
- Edge 이미지용 RHEL을 편집했습니다.
절차
- RHEL 이미지 빌더 대시보드에서 클릭합니다.
이미지 생성 창에서 다음 단계를 수행합니다.
이미지 출력 페이지에서 다음을 수행합니다.
- Select a Blueprint dropdown 목록에서 편집한 청사진을 선택합니다.
-
이미지 출력 유형 드롭다운 목록에서
Edge Commit(.tar)에 대해 RHEL
을 선택합니다. 을 클릭합니다.
OSTree 설정 페이지에서 다음을 입력합니다.
- 리포지토리 URL 필드에 이미지에 포함할 커밋의 OSTree 리포지토리에 대한 URL을 입력합니다. 예: http://10.0.2.2:8080/repo/. RHEL for Edge 이미지를 설치할 웹 서버 설정을 참조하십시오.
- 이전에 생성된 상위 커밋 ID를 지정합니다. 에지 이미지 커밋용 RHEL 추출 을 참조하십시오.
-
Ref 필드에서 커밋의 이름을 지정하거나 비워 둘 수 있습니다. 기본적으로 웹 콘솔은
Ref
를rhel/9/arch_name/edge
로 지정합니다. 을 클릭합니다.
검토 페이지에서 사용자 정의를 확인하고 클릭합니다. RHEL 이미지 빌더가 업데이트된 블루프린트에 대한 RHEL for Edge 이미지를 생성하기 시작합니다. 이미지 생성 프로세스를 완료하는 데 몇 분이 걸립니다.
엣지 이미지 생성 진행 상황을 RHEL을 보려면 장외선에서 청사진 이름을 클릭한 다음 Images 탭을 클릭합니다.
결과 이미지에는 추가한 최신 패키지가 포함되어 있으며 원래
커밋 ID
를 상위로 사용합니다.
Edge Commit (
.tar
) 이미지를 위한 RHEL을 다운로드합니다.-
Images 탭에서 를 클릭하여 RHEL for Edge Commit(
.tar
) 이미지를 시스템에 저장합니다.
-
Images 탭에서 를 클릭하여 RHEL for Edge Commit(
OSTree 커밋(
.tar
) 파일을 추출합니다.# tar -xf UUID-commit.tar -C UPGRADE_FOLDER
OSTree 리포지터리를 업그레이드합니다.
# ostree --repo=/usr/share/nginx/html/repo pull-local UPGRADE_FOLDER # ostree --repo=/usr/share/nginx/html/repo summary -u
프로비저닝된 RHEL 시스템의 원래 에지 이미지에서 현재 상태를 확인합니다.
$ rpm-ostree status
새 커밋 ID가 없는 경우 다음 명령을 실행하여 사용 가능한 업그레이드가 있는지 확인합니다.
$ rpm-ostree upgrade --check
명령 출력은 현재 활성 OSTree 커밋 ID를 제공합니다.
OSTree를 업데이트하여 새로운 OSTree 커밋 ID를 사용할 수 있도록 합니다.
$ rpm-ostree upgrade
ostree에서 리포지토리에 업데이트가 있는지 확인합니다. yes인 경우 이 새 커밋 업데이트 배포를 활성화할 수 있도록 업데이트를 가져와서 시스템을 재부팅하도록 요청합니다.
현재 상태를 다시 확인합니다.
$ rpm-ostree status
이제 사용 가능한 두 개의 커밋이 있음을 확인할 수 있습니다.
- 활성 상위 커밋입니다.
- 활성 상태가 아니며 1개의 차이점이 포함된 새 커밋입니다.
새 배포를 활성화하고 새 커밋을 활성화하려면 시스템을 재부팅합니다.
# systemctl reboot
Anaconda 설치 프로그램이 새 배포로 재부팅됩니다. 로그인 화면에서 부팅할 수 있는 새 배포를 확인할 수 있습니다.
-
최신 배포(commit)로 부팅하려면
rpm-ostree
upgrade 명령에서 부팅 항목을 자동으로 주문하여 새 배포가 목록의 첫 번째가 되도록 합니다. 선택적으로 키보드의 화살표 키를 사용하여 GRUB 메뉴 항목을 선택하고 를 누릅니다. - 로그인 사용자 계정 자격 증명을 제공합니다.
OSTree 상태를 확인합니다.
$ rpm-ostree status
명령 출력은 활성 커밋 ID를 제공합니다.
변경된 패키지를 보려면 상위 커밋과 새 커밋 사이에 diff를 실행합니다.
$ rpm-ostree db diff parent_commit new_commit
업데이트는 설치한 패키지가 사용 가능하고 사용할 준비가 되었음을 보여줍니다.
15.2.4. 명령줄을 사용하여 에지 이미지 업데이트를 수동으로 위한 RHEL 배포
엣지용 RHEL을 편집한 후 이미지 커밋을 업데이트할 수 있습니다. RHEL 이미지 빌더에서는 업데이트된 RHEL for Edge 이미지에 대한 새 커밋을 생성합니다. 새 커밋을 사용하여 최신 패키지 버전 또는 CLI를 사용하는 추가 패키지와 함께 이미지를 배포합니다.
CLI를 사용하여 에지 이미지 업데이트를 위한 RHEL을 배포하려면 사전 요구 사항을 충족해야 하는 다음 절차를 따르십시오.
사전 요구 사항
- 에지 이미지 청사진용 RHEL을 만들었습니다.
- 에지 이미지 청사진을 위해 RHEL을 편집했습니다. 명령줄 인터페이스를 사용하여 에지 이미지 청사진용 RHEL 편집 을 참조하십시오.
절차
다음 인수를 사용하여 에지 커밋(
.tar
)의 RHEL 이미지를 만듭니다.# composer-cli compose start-ostree --ref ostree_ref --url URL-OSTree-repository -blueprint_name_ image-type
다음과 같습니다.
-
에지 컨테이너 커밋용 RHEL을 생성하는 동안 제공한 참조
입니다
. 예:rhel/9/x86_64/edge
. -
URL-OSTree-repository
는 이미지에 포함할 커밋의 OSTree 리포지토리의 URL입니다. 예: http://10.0.2.2:8080/repo/. Edge 이미지에 대해 RHEL을 설치하기 위해 웹 서버 설정을 참조하십시오. image-type
은edge-commit
입니다.RHEL 이미지 빌더는 업데이트된 블루프린트에 대한 RHEL for Edge 이미지를 생성합니다.
-
에지 컨테이너 커밋용 RHEL을 생성하는 동안 제공한 참조
RHEL에서 Edge 이미지 생성 진행 상황을 확인합니다.
# composer-cli compose status
참고이미지 생성 프로세스를 완료하는 데 최대 10~30분이 걸릴 수 있습니다.
결과 이미지에는 추가한 최신 패키지가 포함되어 있으며 원래
커밋 ID
가 상위 항목으로 포함되어 있습니다.- 에지 이미지에 대한 결과 RHEL을 다운로드합니다. 자세한 내용은 RHEL 이미지 빌더 명령줄 인터페이스를 사용하여 RHEL for Edge 이미지 다운로드를 참조하십시오.
OSTree 커밋을 추출합니다.
# tar -xf UUID-commit.tar -C upgrade_folder
- httpd를 사용하여 OSTree 커밋을 제공합니다. Edge 이미지용 RHEL을 설치할 웹 서버 설정을 참조하십시오.
OSTree 리포지터리를 업그레이드합니다.
# ostree --repo=/var/www/html/repo pull-local /tmp/ostree-commit/repo # ostree --repo=/var/www/html/repo summary -u
원래 에지 이미지에서 프로비저닝된 RHEL 시스템에서 현재 상태를 확인합니다.
$ rpm-ostree status
새 커밋 ID가 없는 경우 다음 명령을 실행하여 사용 가능한 업그레이드가 있는지 확인합니다.
$ rpm-ostree upgrade --check
명령 출력은 현재 활성 OSTree 커밋 ID를 제공합니다.
OSTree를 업데이트하여 새 OSTree 커밋 ID를 사용할 수 있도록 합니다.
$ rpm-ostree upgrade
ostree에서 리포지토리에 업데이트가 있는지 확인합니다. 예, 새 커밋 업데이트의 배포를 활성화할 수 있도록 업데이트를 가져와서 시스템을 재부팅하도록 요청합니다.
현재 상태를 다시 확인합니다.
$ rpm-ostree status
이제 사용 가능한 커밋이 두 개인지 확인해야 합니다.
- 활성 상위 커밋
- 새 커밋이 활성 상태가 아니며 하나의 추가 차이점이 포함되어 있습니다.
새 배포를 활성화하고 새 커밋을 활성화하려면 시스템을 재부팅합니다.
# systemctl reboot
Anaconda 설치 프로그램이 새 배포로 재부팅됩니다. 로그인 화면에서 부팅할 수 있는 새 배포를 확인할 수 있습니다.
-
최신 배포로 부팅하려는 경우
rpm-ostree upgrade
명령은 새 배포가 목록에 먼저 포함되도록 부팅 항목을 자동으로 주문합니다. 선택적으로 키보드의 화살표 키를 사용하여 GRUB 메뉴 항목을 선택하고 를 누릅니다. - 계정 자격 증명을 사용하여 로그인합니다.
OSTree 상태를 확인합니다.
$ rpm-ostree status
명령 출력은 활성 커밋 ID를 제공합니다.
변경된 패키지를 보려면 상위 커밋과 새 커밋 사이에 diff를 실행합니다.
$ rpm-ostree db diff parent_commit new_commit
업데이트는 설치한 패키지가 사용 가능하고 사용할 준비가 되었음을 보여줍니다.
15.2.5. 네트워크 기반이 아닌 배포를 위해 RHEL for Edge 이미지 업데이트를 수동으로 배포
RHEL for Edge 블루프린트를 편집한 후 해당 업데이트로 RHEL for Edge 커밋 이미지를 업데이트할 수 있습니다. 예를 들어 VM에 이미 배포된 RHEL for Edge 이미지를 업데이트하기 위해 RHEL 이미지 빌더를 사용하여 새 커밋을 생성합니다. 이 새 커밋을 사용하여 최신 패키지 버전 또는 추가 패키지와 함께 이미지를 배포합니다.
에지 이미지 업데이트를 위해 RHEL을 배포하려면 사전 요구 사항을 충족해야 하며 절차를 따르십시오.
사전 요구 사항
- 호스트에서 브라우저에서 웹 콘솔에서 RHEL 이미지 빌더 앱을 열었습니다.
- RHEL for Edge 시스템이 프로비저닝되어 실행 중입니다.
- HTTP를 통해 제공되는 OSTree 리포지토리가 있습니다.
- 이전에 생성된 RHEL for Edge 이미지 블루프린트를 편집했습니다.
절차
- 시스템 호스트에서 RHEL 이미지 빌더 대시보드에서 을 클릭합니다.
이미지 생성 창에서 다음 단계를 수행합니다.
이미지 출력 페이지에서 다음을 수행합니다.
- Select a Blueprint dropdown 목록에서 편집한 청사진을 선택합니다.
-
이미지 출력 유형 드롭다운 목록에서
에지 컨테이너(.tar)에 대해 RHEL
을 선택합니다. - 을 클릭합니다.
OSTree 설정 페이지에서 다음을 입력합니다.
- 리포지토리 URL 필드에 이미지에 포함할 커밋의 OSTree 리포지토리에 대한 URL을 입력합니다. 예: http://10.0.2.2:8080/repo/. RHEL for Edge 이미지를 설치할 웹 서버 설정을 참조하십시오.
- 이전에 생성된 상위 커밋 ID를 지정합니다. 에지 이미지 커밋용 RHEL 추출 을 참조하십시오.
-
Ref 필드에서 커밋의 이름을 지정하거나 비워 둘 수 있습니다. 기본적으로 웹 콘솔은
Ref
를rhel/9/arch_name/edge
로 지정합니다. - 을 클릭합니다.
검토 페이지에서 사용자 지정을 확인하고 을 클릭합니다.
RHEL 이미지 빌더는 업데이트된 블루프린트에 대한 RHEL for Edge 이미지를 생성합니다.
이미지 탭을 클릭하여 RHEL for Edge 이미지 생성의 진행 상황을 확인합니다.
참고이미지 생성 프로세스를 완료하는 데 몇 분이 걸립니다.
결과 이미지에는 추가한 최신 패키지가 포함되어 있으며 원래
커밋 ID
가 상위 항목으로 포함되어 있습니다.
호스트에서 결과 RHEL for Edge 이미지를 다운로드합니다.
-
이미지 탭에서 클릭하여 RHEL for Edge Container (
.tar
) 이미지를 호스트 시스템에 저장합니다.
-
이미지 탭에서 클릭하여 RHEL for Edge Container (
원래 엣지 이미지에서 프로비저닝된 RHEL 시스템에서 다음 단계를 수행합니다.
에지 컨테이너 이미지의 RHEL을 Podman에 로드하여 이번에 하위 커밋 ID를 제공합니다.
$ cat ./child-commit_ID-container.tar | sudo podman load
Podman
을 실행합니다.# sudo podman run -p 8080:8080 localhost/edge-test
OSTree 리포지터리를 업그레이드합니다.
# ostree --repo=/var/www/html/repo pull-local /tmp/ostree-commit/repo # ostree --repo=/var/www/html/repo summary -u
프로비저닝된 RHEL 시스템의 원래 에지 이미지에서 현재 상태를 확인합니다.
$ rpm-ostree status
새 커밋 ID가 없는 경우 다음 명령을 실행하여 사용 가능한 업그레이드가 있는지 확인합니다.
$ rpm-ostree upgrade --check
사용 가능한 업데이트가 있는 경우 명령 출력은 현재 활성 OSTree 커밋 ID와 같은 OSTree 리포지토리에서 사용 가능한 업데이트에 대한 정보를 제공합니다. 사용 가능한 업데이트가 없음을 알리는 메시지가 표시됩니다.
OSTree를 업데이트하여 새로운 OSTree 커밋 ID를 사용할 수 있도록 합니다.
$ rpm-ostree upgrade
ostree에서 리포지토리에 업데이트가 있는지 확인합니다. yes인 경우 이 새 커밋 업데이트 배포를 활성화할 수 있도록 업데이트를 가져와서 시스템을 재부팅하도록 요청합니다.
현재 시스템 상태를 확인합니다.
$ rpm-ostree status
이제 사용 가능한 두 개의 커밋이 있음을 확인할 수 있습니다.
- 활성 상위 커밋입니다.
- 활성 상태가 아니며 1개의 차이점이 포함된 새 커밋입니다.
새 배포를 활성화하고 새 커밋을 활성화하려면 시스템을 재부팅합니다.
# systemctl reboot
Anaconda 설치 프로그램이 새 배포로 재부팅됩니다. 로그인 화면에서 부팅할 수 있는 새 배포를 확인할 수 있습니다.
최신 커밋으로 부팅하려면 다음 명령을 실행하여 새 배포가 목록의 첫 번째 배포가 되도록 부팅 항목을 자동으로 정렬합니다.
$ rpm-ostree upgrade
선택적으로 키보드의 화살표 키를 사용하여 GRUB 메뉴 항목을 선택하고
키를 누를 수 있습니다.
- 로그인 사용자 계정 자격 증명을 제공합니다.
OSTree 상태를 확인합니다.
$ rpm-ostree status
명령 출력은 활성 커밋 ID를 제공합니다.
변경된 패키지를 보려면 상위 커밋과 새 커밋 사이에 diff를 실행합니다.
$ rpm-ostree db diff parent_commit new_commit
업데이트는 설치한 패키지가 사용 가능하고 사용할 준비가 되었음을 보여줍니다.