2.4. Image Mode for RHEL を使用して RHEL for Edge イメージとの同等性を実現する
Image Mode for RHEL を使用して RHEL for Edge イメージを作成するには、OSTree コミットと共通のパッケージで足りないものを手動でインストールする必要があります。これらのパッケージのほとんどは bootc イメージに含まれており、不足しているパッケージをインストールすることで、RHEL for Edge イメージと同様のイメージを作成できます。
以下は、不足しているパッケージの例です。
-
clevis -
clevis-dracut -
clevis-luks -
greenboot -
greenboot-default-health-checks -
fdo-client -
fdo-owner-cli
前提条件
-
既存の RHEL for Edge
rpm-ostree-basedのデプロイ済みシステム。
手順
次の内容の
Containerfileを作成します。FROM registry.io.redhat.com/rhel10/rhel-bootc:latest RUN dnf install -y \ clevis \ clevis-dracut \ clevis-luks \ greenboot \ greenboot-default-health-checks \ fdo-client \ fdo-owner-cli # (Optional) Extra packages often used in edge # RUN dnf install -y # dracut-config-generic \ # platform-python \ # pinentry \ # firewalld \ # iptables \ # NetworkManager-wifi \ # NetworkManager-wwan \ # wpa_supplicant \ # traceroute \ # rootfiles \ # policycoreutils-python-utils \ # setools-console \ # rsync \ # usbguard RUN systemctl enable NetworkManager.service \ greenboot-grub2-set-counter.service \ greenboot-grub2-set-success.service \ greenboot-healthcheck.service \ greenboot-rpm-ostree-grub2-check-fallback.service \ greenboot-status.service \ greenboot-task-runner.service redboot-auto-reboot.service \ redboot-task-runner.service"同様の RHEL for Edge のカスタマイズされた bootc イメージを構築します。
$ podman build -t quay.io/<namespace>/<image>:<tag> .オプション: イメージをプッシュします。
$ podman push quay.io/<namespace>/<image>:<tag>
検証
すべてのイメージをリスト表示します。
$ podman images
2.4.1. イメージモードを使用して Edge イメージ用の RHEL 9.6 以降を構築する リンクのコピーリンクがクリップボードにコピーされました!
RHEL 9.6 以降では、イメージモードを使用して起動可能なコンテナーイメージを構成したり、エッジデプロイメント用のディスクイメージを生成したりできます。エッジホスト用の Image Mode for RHEL を作成するには、Containerfile で設定を定義し、bootc-image-builder を使用してデプロイ可能なアーティファクトを出力します。
イメージモードはコンテナーネイティブなワークフローに推奨される方法ですが、引き続き従来の RHEL Image Builder を使用して、標準的な RHEL 9.6 以降のエッジアーティファクトを作成することもできます。RHEL for Edge イメージの作成、インストール、および管理 を参照してください。
前提条件
- ホストマシンに Podman がインストールされている。
-
bootc-image-builderツールを実行し、コンテナーを--privilegedモードで実行して、イメージをビルドするための root アクセスがある。
手順
Containerfileを作成します。例:$ cat Containerfile FROM registry.redhat.io/rhel9/rhel-bootc:9.6 # Packages RUN dnf install -y zsh && dnf clean all # Group install RUN dnf group -y install "Development Tools" # Hostname RUN echo "rock.paper.scissor" > /etc/hostname # Kernel RUN mkdir -p /usr/lib/bootc/kargs.d RUN cat <<EOF >> /usr/lib/bootc/kargs.d/console.toml kargs = ["console=ttyS0,114800n8","kernel-debug"] match-architectures = ["x86_64"] EOF # Subscription-manager RUN dnf install subscription-manager # RPM config RUN mkdir -p /etc/pki/rpm-gpg/ COPY <host_path>/gpg_key /etc/pki/rpm-gpg/gpg_key # Timezones RUN cat <<EOF >> /etc/localtime Asia/Bangkok EOF # Locale RUN cat <<EOF >> /etc/locale.conf LANG="en_US.UTF-8" EOF && \ cat <<EOF >> /etc/vconsole.conf KEYMAP=us EOF # firewall RUN dnf install -y firewalld && \ mkdir -p /etc/firewalld/zones RUN cat <<EOF >> /etc/firewalld/zones/customzone.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Customzone</short> <description>Custom firewall rules for the container.</description> <!-- Allowed services --> <service name="ftp"/> <service name="ntp"/> <service name="dhcp"/> <!-- Blocked services (not explicitly listed) --> <!-- Removing telnet explicitly is unnecessary if it is not included --> <!-- Open specific ports --> <port protocol="tcp" port="22"/> <port protocol="tcp" port="80"/> <port protocol="tcp" port="53"/> <port protocol="udp" port="53"/> <port protocol="tcp" port="30000-32767"/> <port protocol="udp" port="30000-32767"/> </zone> EOF RUN firewall-offline-cmd --set-default-zone=customzone # systemd services RUN systemctl enable sshd #ignition RUN mkdir -p /usr/lib/bootc/kargs.d && \ cat <<EOF >> /usr/lib/bootc/kargs.d/console.toml kargs = ["ignition.config.url=http://192.168.122.1/fiot.ign","rd.neednet=1"] EOF #fdo RUN dnf install -y fdo-init fdo-client && \ systemctl enable fdo-client-linuxapp.service #Repositories RUN mkdir -p /etc/yum.repos.d COPY custom.repo /etc/yum.repos.d/custom.repo #fips RUN mkdir -p /usr/lib/bootc/kargs.d && \ cat <<EOF >> /usr/lib/bootc/kargs.d/01-fips.toml kargs = ["fips=1"] EOF RUN dnf install -y crypto-policies-scripts && update-crypto-policies --no-reload --set FIPS現在のディレクトリーの
Containerfileを使用して、<image>イメージをビルドします。$ podman build -t quay.io/<namespace>/<image>:<tag> .
検証
すべてのイメージをリスト表示します。
$ podman images REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/<namespace>/<image> latest b28cd00741b3 About a minute ago 2.1 GB