Menu Close
Settings Close

Language and Page Formatting Options

8.2. 设置 web 服务器以安装 RHEL for Edge 镜像

提取 RHEL for Edge 镜像内容后,设置 web 服务器以通过 HTTP 向 RHEL 安装程序提供镜像提交详情。

以下示例提供了使用容器设置 Web 服务器的步骤:

先决条件

步骤

  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 /usr/share/nginx/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. 使用最新的通用基础镜像 (ubi)
      2. 安装 Web 服务器(nginx)
      3. 将 kickstart 文件添加到服务器
      4. 将 RHEL for Edge 镜像提交添加到服务器
  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 安装程序。