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

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

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

先决条件

流程

  1. 按照以下说明创建一个 dockerfile:

    FROM registry.access.redhat.com/ubi8/ubi
    RUN yum -y install httpd && yum clean all
    ADD kickstart.ks /var/www/html/
    ARG commit=commit.tar
    ADD $commit /var/www/html/
    EXPOSE 80
    CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

    其中,

    • Kickstart.ks 是 RHEL for Edge 镜像中的 Kickstart 文件的名称。kickstart 文件包含指令信息。为帮助您稍后管理镜像,建议包含 Greenboot 检查的检查和设置。要做到这一点,您可以更新 Kickstart 文件使其包含以下设置:

      /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
    • The ARG commit=commit.tar 行是容器构建期间用于 提交 参数的默认值。您可以在容器构建 期间将不同的 tar 文件指定为构建参数。
    • ADD $commit /var/www/html 命令复制 commit.tar 文件,并自动将其提取到所选位置。您可以选择其他位置来提取和保存提交。

      OSTree 存储库可以从任何 HTTP 服务托管,并且示例使用容器只是如何执行此操作的一个选项。docker 文件执行以下任务:

      1. 使用最新的通用基础镜像(ubi)
      2. 安装 Web 服务器(httpd)
      3. 将 kickstart 文件添加到服务器
      4. 将 RHEL for Edge 镜像提交添加到服务器

        通过 line ARG commit=commit.tar,您可以使用命令行指定将来的提交。

  2. 构建 docker 容器

    #  podman build -t name-of-container-image --build-arg commit=uuid-commit.tar .
  3. 运行容器

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

    因此,服务器已设置并准备好使用 commit.tar 存储库和 kickstart 文件启动 RHEL 安装程序。