8.2. 엣지 이미지용 RHEL을 설치하도록 웹 서버 설정
RHEL for Edge 이미지 콘텐츠를 추출한 후 HTTP를 사용하여 RHEL 설치 프로그램에 이미지 커밋 세부 정보를 제공하도록 웹 서버를 설정합니다.
다음 예제에서는 컨테이너를 사용하여 웹 서버를 설정하는 단계를 제공합니다.
사전 요구 사항
- 시스템에 Podman이 설치되어 있어야 합니다. RHEL에 Podman을 설치하는 방법보기
절차
다음 지침을 사용하여
nginx
구성 파일을 생성합니다.events { } http { server{ listen 8080; root /usr/share/nginx/html; } } pid /run/nginx.pid; daemon off;
다음 명령을 사용하여 Dockerfile을 생성합니다.
FROM registry.access.redhat.com/ubi8/ubi RUN yum -y install nginx && yum clean all COPY kickstart.ks /usr/share/nginx/html/ COPY repo /usr/share/nginx/html/ COPY nginx /etc/nginx.conf EXPOSE 8080 CMD ["/usr/sbin/nginx", "-c", "/etc/nginx.conf"] ARG commit ADD ${commit} /usr/share/nginx/html/
다음과 같습니다.
Kickstart.ks
는 RHEL for Edge 이미지의 Kickstart 파일의 이름입니다. Kickstart 파일에는 지시문 정보가 포함되어 있습니다. 나중에 이미지를 관리할 수 있도록 greenboot 검사에 대한 검사 및 설정을 포함하는 것이 좋습니다. 이를 위해 다음 설정을 포함하도록 Kickstart 파일을 업데이트할 수 있습니다.lang en_US.UTF-8 keyboard us timezone Etc/UTC --isUtc text zerombr clearpart --all --initlabel autopart reboot user --name=core --group=wheel sshkey --username=core "ssh-rsa AAAA3Nza…." ostreesetup --nogpg --osname=rhel --remote=edge --url=https://mirror.example.com/repo/ --ref=rhel/8/x86_64/edge %post cat << EOF > /etc/greenboot/check/required.d/check-dns.sh #!/bin/bash DNS_SERVER=$(grep nameserver /etc/resolv.conf | cut -f2 -d" ") COUNT=0 # check DNS server is available ping -c1 $DNS_SERVER while [ $? != '0' ] && [ $COUNT -lt 10 ]; do COUNT++ echo "Checking for DNS: Attempt $COUNT ." sleep 10 ping -c 1 $DNS_SERVER done EOF %end
모든 HTTP 서비스는 OSTree 리포지토리를 호스팅할 수 있으며 컨테이너를 사용하는 예제는 이 작업을 수행하는 방법에 대한 옵션일 뿐입니다. Dockerfile은 다음 작업을 수행합니다.
- 최신 UBI(Universal Base Image) 사용
- 웹 서버(nginx) 설치
- 서버에 Kickstart 파일 추가
- 서버에 Edge 이미지 커밋용 RHEL 추가
Docker 컨테이너 빌드
# podman build -t name-of-container-image --build-arg commit=uuid-commit.tar .
컨테이너 실행
# podman run --rm -d -p port:8080 localhost/name-of-container-image
결과적으로 서버는
commit.tar
리포지토리와 Kickstart 파일을 사용하여 RHEL Installer를 시작할 준비가 되었습니다.