5.7. bootc-image-builder を使用した AMI イメージの作成および AWS へのアップロード
bootc-image-builder ツールを使用して、Red Hat Enterprise Linux の bootc イメージから Amazon Machine Image (AMI) を生成します。これにより、コンテナーネイティブなオペレーティングシステムを Amazon Web Services (AWS) 内の標準 EC2 インスタンスとしてデプロイすることが可能になります。
-
registry.redhat.io/rhel10/bootc-image-builder:latestなどのレジストリーからコンテナーイメージを使用する場合は、ローカルストレージをマウントする必要があります。 -
ローカルでビルドしたコンテナーイメージを使用する場合は、
-v /var/lib/containers/storage:/var/lib/containers/storage引数を含める必要があります。
前提条件
- ホストマシンに Podman がインストールされている。
-
AWS アカウント内に既存の
AWS S3バケットがある。 -
bootc-image-builderツールを実行し、コンテナーを--privilegedモードで実行して、イメージをビルドするための root アクセスがある。 -
AMI を AWS アカウントにインポートするために、アカウントに
vmimportサービスロールが設定されている。
手順
bootc イメージからディスクイメージを作成します。
- Containerfile でユーザーの詳細を設定します。このユーザーには、必ず sudo アクセス権限を割り当ててください。
- Containerfile で設定したユーザーを使用して、カスタマイズされたオペレーティングシステムイメージをビルドします。パスワードなしの sudo アクセス権限を持つデフォルトユーザーが作成されます。
オプション:
cloud-initを使用してマシンイメージを設定します。Image Mode for RHEL でのファイルシステムの管理 を参照してください。以下に例を示します。FROM quay.io/<namespace>/<image>:latest RUN dnf -y install cloud-init && \ ln -s ../cloud-init.target /usr/lib/systemd/system/default.target.wants && \ rm -rf /var/{cache,log} /var/lib/{dnf,rhsm}注記cloud-initにより、インスタンスメタデータを使用してユーザーや設定を追加することもできます。bootc イメージをビルドします。たとえば、イメージを
x86_64AWS マシンにデプロイするには、次のコマンドを使用します。$ podman build -t quay.io/<namespace>/<image>:<tag> . $ podman push quay.io/<namespace>/<image>:<tag> .コンテナーを実行する前に、
outputディレクトリーを初期化します。ディレクトリーがすでに存在する場合にコマンドが失敗しないようにするには、-p引数を使用します。$ mkdir -p ./outputbootc-image-builderツールを使用して、bootc コンテナーイメージからパブリックな AMI イメージを作成します。このイメージは、registry.redhat.io/rhel10/bootc-image-builder:latestなどのレジストリーからアクセスできる必要があります。$ sudo podman run \ --rm \ --it \ --privileged \ --pull=newer \ -v ./config.toml:/config.toml \ -v /var/home/<user>/.aws:/root/.aws \ --env AWS_PROFILE=default \ registry.redhat.io/rhel10/bootc-image-builder:latest \ --type ami \ --config /config.toml \ --aws-ami-name rhel-bootc-x86 \ --aws-bucket rhel-bootc-bucket \ --aws-region us-east-1 \ quay.io/<namespace>/<image>:<tag>以下のフラグはすべてまとめて指定する必要があります。フラグを指定しない場合、AMI は出力ディレクトリーにエクスポートされます。
-
--aws-ami-name- AWS の AMI イメージの名前 -
--aws-bucket- AMI を作成する際の中間ストレージのターゲット S3 バケット名 --aws-region- AWS アップロードのターゲットリージョンbootc-image-builderツールは、お客様の AWS 認証情報を使用して、AMI イメージをビルドおよびアップロードし、AWS S3 バケットに登録します。
-
次のステップ
- イメージをデプロイできます。AMI ディスクイメージを使用したコンテナーイメージの AWS へのデプロイ を参照してください。
- イメージを更新し、変更をレジストリーにプッシュできます。RHEL bootc イメージの管理 を参照してください。
トラブルシューティング
AWS イメージの要件の設定に問題がある場合は、次のドキュメントを参照してください。