3.4. bootc-image-builder を使用した AMI イメージの作成および AWS へのアップロード
ブート可能なコンテナーイメージから Amazon Machine Image (AMI) を作成し、それを使用して Amazon Web Services EC2 (Amazon Elastic Compute Cloud) インスタンスを起動します。
前提条件
- ホストマシンに Podman がインストールされている。
-
AWS アカウント内に既存の
AWS S3
バケットがある。 -
bootc-image-builder
ツールを実行し、コンテナーを--privileged
モードで実行して、イメージをビルドするための root アクセスがある。 -
AMI を AWS アカウントにインポートするために、アカウントに
vmimport
サービスロールが設定されている。
手順
ブート可能なコンテナーイメージからディスクイメージを作成します。
- Containerfile でユーザーの詳細を設定します。必ず sudo アクセスを割り当ててください。
- Containerfile で設定したユーザーを使用して、カスタマイズされたオペレーティングシステムイメージをビルドします。これにより、パスワードなしの sudo アクセスを持つデフォルトのユーザーが作成されます。
オプション:
cloud-init
を使用してマシンイメージを設定します。cloud-init を使用したユーザーと SSH キーの注入 を参照してください。以下に例を示します。FROM registry.redhat.io/rhel9/rhel-bootc:9.4 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
により、インスタンスメタデータを使用してユーザーや設定を追加することもできます。ブート可能なコンテナーイメージをビルドします。たとえば、イメージを
x86_64
AWS マシンにデプロイするには、次のコマンドを使用します。$ podman build -t quay.io/<namespace>/<image>:<tag> . $ podman push quay.io/<namespace>/<image>:<tag> .
bootc-image-builder
ツールを使用して、bootc コンテナーイメージから AMI を作成します。$ sudo podman run \ --rm \ -it \ --privileged \ --pull=newer \ -v $HOME/.aws:/root/.aws:ro \ --env AWS_PROFILE=default \ registry.redhat.io/rhel9/bootc-image-builder:latest \ --type ami \ --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
ツールは AMI イメージをビルドし、ビルド後に AWS 認証情報を使用して AMI イメージをプッシュおよび登録することで、AWS s3 バケットにアップロードします。
-
次のステップ
- イメージをデプロイできます。AMI ディスクイメージを使用したコンテナーイメージの AWS へのデプロイ を参照してください。
- イメージを更新し、変更をレジストリーにプッシュできます。RHEL のブート可能なイメージの管理 を参照してください。
関連情報