Menu Close

8.2. 에지 이미지용 RHEL을 설치하기 위해 웹 서버 설정

에지 이미지 콘텐츠를 위해 RHEL을 추출한 후 HTTP를 통해 RHEL 설치 프로그램에 이미지 커밋 세부 정보를 제공하도록 웹 서버를 설정합니다.

다음 예제에서는 컨테이너를 사용하여 웹 서버를 설정하는 단계를 보여줍니다.

사전 요구 사항

절차

  1. 다음 지침을 사용하여 nginx 구성 파일을 생성합니다.

    events {
    
    }
    
    http {
        server{
            listen 8080;
            root /usr/share/nginx/html;
                    }
             }
    
    pid /run/nginx.pid;
    daemon off;
  2. nginx 구성 파일을 /etc/nginx.conf 디렉터리에 복사합니다.
  3. 다음 명령을 사용하여 dockerfile을 생성합니다.

    FROM registry.access.redhat.com/ubi8/ubi
    RUN dnf -y install nginx && dnf clean all
    COPY kickstart.ks /var/www/html/
    COPY repo /usr/share/nginx/html/
    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/9/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

      OSTree 리포지토리는 모든 HTTP 서비스에서 호스팅할 수 있으며, 예를 들어 컨테이너를 사용하는 것은 이 작업을 수행하는 방법에 대한 옵션일 뿐입니다. docker 파일은 다음 작업을 수행합니다.

      1. 최신 Universal Base Image (ubi) 사용
      2. 웹 서버 설치(nginx)
      3. 서버에 Kickstart 파일 추가
      4. 서버에 에지 이미지 커밋을 위한 RHEL 추가
  4. Docker 컨테이너 빌드

    #  podman build -t name-of-container-image --build-arg commit=uuid-commit.tar .
  5. 컨테이너 실행

    #  podman run --rm -d -p port:8080 localhost/name-of-container-image

    그 결과 서버는 commit.tar 리포지토리 및 Kickstart 파일을 사용하여 RHEL 설치 프로그램을 시작할 준비가 되었습니다.