第10章 RHEL Image Builder を使用したクラウドイメージの準備とアップロード

RHEL Image Builder は、さまざまなクラウドプラットフォームですぐに使用できるカスタムシステムイメージを作成できます。カスタマイズした RHEL システムイメージをクラウドで使用するには、指定の出力タイプを使用して RHEL Image Builder でシステムイメージを作成し、イメージをアップロードするようにシステムを設定し、クラウドアカウントへイメージをアップロードします。RHEL Web コンソールの Image Builder アプリケーションを介して、カスタマイズされたイメージクラウドをプッシュできます。これは、AWSMicrosoft Azure クラウドなど、Red Hat サポート対象のサービスプロバイダーの一部で利用できます。イメージを AWS クラウド AMI にプッシュする および VHD イメージを Microsoft Azure クラウドにプッシュするを 参照してください。

10.1. AWS AMI イメージのアップロードの準備

AWS AMI イメージをアップロードする前に、イメージをアップロードするためのシステムを設定する必要があります。

前提条件

手順

  1. Python 3 および pip ツールをインストールします。

    # dnf install python3 python3-pip
  2. pipAWS コマンドラインツール をインストールします。

    # pip3 install awscli
  3. 以下のコマンドを実行してプロファイルを設定します。ターミナルで、認証情報、リージョン、および出力形式を指定するように求められます。

    $ aws configure
    AWS Access Key ID [None]:
    AWS Secret Access Key [None]:
    Default region name [None]:
    Default output format [None]:
  4. バケット名を定義し、以下のコマンドを使用してバケットを作成します。

    $ BUCKET=bucketname
    $ aws s3 mb s3://$BUCKET

    bucketname は、バケット名に置き換えます。この名前は、グローバルで一意となるように指定する必要があります。上記で、バケットが作成されます。

  5. S3 バケットへのアクセス許可を付与するには、AWS Identity and Access Management (IAM) で vmimport S3 ロールを作成します (まだ作成していない場合)。

    1. 信頼ポリシーの設定で、JSON 形式で trust-policy.json ファイルを作成します。以下に例を示します。

      {
          "Version": "2022-10-17",
          "Statement": [{
              "Effect": "Allow",
              "Principal": {
                  "Service": "vmie.amazonaws.com"
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "sts:Externalid": "vmimport"
                  }
              }
          }]
      }
    2. ロールポリシーの設定を含む 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
    3. trust-policy.json ファイルを使用して、Amazon Web Services アカウントのロールを作成します。

      $ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
    4. role-policy.json ファイルを使用して、インラインポリシードキュメントを埋め込みます。

      $ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json