第10章 RHEL Image Builder を使用したクラウドイメージの準備とアップロード
RHEL Image Builder は、さまざまなクラウドプラットフォームですぐに使用できるカスタムシステムイメージを作成できます。カスタマイズした RHEL システムイメージをクラウドで使用するには、指定の出力タイプを使用して RHEL Image Builder でシステムイメージを作成し、イメージをアップロードするようにシステムを設定し、クラウドアカウントへイメージをアップロードします。RHEL Web コンソールの Image Builder
アプリケーションを介して、カスタマイズされたイメージクラウドをプッシュできます。これは、AWS や Microsoft Azure クラウドなど、Red Hat サポート対象のサービスプロバイダーの一部で利用できます。AWS Cloud AMI に直接イメージを作成して自動的にアップロードする および Microsoft Azure クラウドに直接 VHD イメージを作成して自動的にアップロードする を参照してください。
10.1. AMI イメージの準備と AWS へのアップロード
RHEL Image Builder を使用してカスタムイメージを作成し、そのイメージを手動または自動で AWS クラウドにアップロードできます。
10.1.1. AWS AMI イメージを手動でアップロードする準備
AWS AMI イメージをアップロードする前に、イメージをアップロードするためのシステムを設定する必要があります。
前提条件
- AWS IAM アカウントマネージャー にアクセスキー ID を設定している。
- 書き込み可能な S3 バケット を準備している。
手順
Python 3 および
pip
ツールをインストールします。# dnf install python3 python3-pip
pip で
AWS コマンドラインツール
をインストールします。# pip3 install awscli
プロファイルを設定します。ターミナルで、認証情報、リージョン、および出力形式を指定するように求められます。
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
バケットの名前を定義し、バケットを作成します。
$ BUCKET=bucketname $ aws s3 mb s3://$BUCKET
bucketname
は、実際のバケット名に置き換えます。この名前は、グローバルで一意となるように指定する必要があります。上記で、バケットが作成されます。S3 バケットへのアクセス許可を付与するには、AWS Identity and Access Management (IAM) で
vmimport
S3 ロールを作成します (まだ作成していない場合)。信頼ポリシーの設定で、JSON 形式で
trust-policy.json
ファイルを作成します。以下に例を示します。{ "Version": "2022-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:Externalid": "vmimport" } } }] }
ロールポリシーの設定を含む
role-policy.json
ファイルを JSON 形式で作成します。以下に例を示します。{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket"], "Resource": ["arn:aws:s3:::%s", "arn:aws:s3:::%s/"] }, { "Effect": "Allow", "Action": ["ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe"], "Resource": "*" }] } $BUCKET $BUCKET
trust-policy.json
ファイルを使用して、Amazon Web Services アカウントのロールを作成します。$ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
role-policy.json
ファイルを使用して、インラインポリシードキュメントを埋め込みます。$ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json
10.1.2. CLI を使用して AMI イメージを AWS に手動でアップロードする
RHEL Image Builder を使用して ami
イメージをビルドし、CLI を使用して Amazon AWS Cloud サービスプロバイダーに直接手動でアップロードすることができます。
手順
テキストエディターを使用して、次の内容の設定ファイルを作成します。
provider = "aws" [settings] accessKeyID = "AWS_ACCESS_KEY_ID" secretAccessKey = "AWS_SECRET_ACCESS_KEY" bucket = "AWS_BUCKET" region = "AWS_REGION" key = "IMAGE_KEY"
フィールドの値を
accessKeyID
、secretAccessKey
、bucket
、およびregion
の認証情報に置き換えます。IMAGE_KEY
値は、EC2 にアップロードする仮想マシンイメージの名前です。- ファイルを CONFIGURATION-FILE.toml として保存し、テキストエディターを閉じます。
Compose を開始して AWS にアップロードします。
# composer-cli compose start blueprint-name image-type image-key configuration-file.toml
以下を置き換えます。
- blueprint-name は、作成したブループリントの名前に置き換えます。
-
blueprint-name は、
ami
イメージタイプに置き換えます。 - image-key は、EC2 にアップロードする仮想マシンイメージの名前に置き換えます。
configuration-file.toml は、クラウドプロバイダーの設定ファイルの名前に置き換えます。
注記カスタマイズしたイメージの送信先となるバケットの正しい AWS Identity and Access Management (IAM) 設定が必要です。イメージをアップロードする前にバケットにポリシーを設定しておく必要があります。
イメージビルドのステータスを確認します。
# composer-cli compose status
イメージのアップロードプロセスが完了すると、"FINISHED" ステータスが表示されます。
検証
イメージのアップロードが成功したことを確認するには、以下を行います。
-
メニューで EC2 にアクセスし、AWS コンソールで正しいリージョンを選択します。イメージが正常にアップロードされたことを示すには、イメージが
available
ステータスになっている必要があります。 - Dashboard でイメージを選択し、 をクリックします。
10.1.3. イメージを作成して AWS Cloud AMI に自動的にアップロードする
RHEL Image Builder を使用して (.raw)
イメージを作成し、Upload to AWS チェックボックスをオンにして、作成した出力イメージを Amazon AWS Cloud AMI サービスプロバイダーに直接自動的にプッシュすることができます。
前提条件
-
root
またはwheel
グループでシステムにアクセスできる。 - ブラウザーで、RHEL Web コンソールの RHEL Image Builder インターフェイスを開いている。
- ブループリントを作成している。Web コンソールインターフェイスでのブループリントの作成 を参照してください。
- AWS IAM アカウントマネージャーにアクセスキー ID を設定している。
- 書き込み可能な S3 バケット を準備している。
手順
- RHEL Image Builder のダッシュボードで、以前に作成した ブループリント名 をクリックします。
- タブを選択します。
Create Image ウィンドウが開きます。
-
Type ドロップダウンメニューから、
Amazon Machine Image Disk (.raw)
を選択します。 - イメージを AWS Cloud にアップロードするには、Upload to AWS チェックボックスをオンして、 をクリックします。
AWS へのアクセスを認証するには、対応するフィールドに
AWS access key ID
およびAWS secret access key
を入力します。 をクリックします。注記新規アクセスキー ID を作成する場合にのみ、AWS シークレットアクセスキーを表示できます。秘密鍵が分からない場合は、新しいアクセスキー ID を生成します。
-
Image name
フィールドにイメージ名を、Amazon S3 bucket name
フィールドに Amazon バケット名を入力して、カスタマイズイメージを追加するバケットのAWS region
フィールドを入力します。 をクリックします。 情報を確認し、
をクリックします。必要に応じて、
をクリックして誤った情報を変更します。注記カスタマイズイメージを送信するバケットの正しい IAM 設定が必要です。この手順では IAM のインポートとエクスポートを使用するため、バケットにイメージをアップロードする前にバケットに ポリシー を設定する必要があります。詳細は、IAM ユーザーの必要なパーミッション を参照してください。
-
Type ドロップダウンメニューから、
右上のポップアップで、保存の進行状況が通知されます。イメージ作成の開始、イメージ作成の進捗、およびその後の AWS Cloud にアップロードに関する情報も通知されます。
プロセスが完了すると、Image build complete のステータスが表示されます。
ブラウザーで、Service→EC2 にアクセスします。
-
AWS コンソールのダッシュボードメニューで、正しいリージョン を選択します。イメージのステータスは、アップロードされていることを示す
Available
でなければなりません。 - AWS ダッシュボードでイメージを選択し、 をクリックします。
-
AWS コンソールのダッシュボードメニューで、正しいリージョン を選択します。イメージのステータスは、アップロードされていることを示す
- 新しいウィンドウが開きます。イメージを開始するために必要なリソースに応じて、インスタンスタイプを選択します。 をクリックします。
- インスタンスの開始の詳細を確認します。変更が必要な場合は、各セクションを編集できます。 をクリックします。
インスタンスを起動する前に、インスタンスにアクセスするための公開鍵を選択します。
既存のキーペアを使用するか、キーペアーを新規作成します。
次の手順に従って、EC2 で新規キーペアを作成し、新規インスタンスにアタッチします。
- ドロップダウンメニューリストから、Create a new key pair を選択します。
- 新しいキーペアに名前を入力します。新しいキーペアが生成されます。
- Download Key Pair をクリックして、新しいキーペアをローカルシステムに保存します。
Initializing と表示されるインスタンスのステータスを確認できます。
- インスタンスのステータスが running になると、 ボタンが有効になります。
- 優先する接続方法として スタンドアロン SSH クライアント を選択し、ターミナルを開きます。
秘密鍵を保存する場所で、SSH が機能するために鍵が公開されていることを確認してください。これには、以下のコマンドを実行します。
$ chmod 400 <_your-instance-name.pem_>
パブリック DNS を使用してインスタンスに接続します。
$ ssh -i <_your-instance-name.pem_> ec2-user@<_your-instance-IP-address_>
yes
と入力して、接続の続行を確定します。その結果、SSH 経由でインスタンスに接続されます。
検証
- SSH でインスタンスに接続している間にアクションが実行できるかどうかを確認します。