Red Hat Training
A Red Hat training course is available for RHEL 8
3.4. Red Hat Enterprise Linux イメージの AWS へのアップロード
このセクションの手順に従って、イメージを AWS にアップロードします。
3.4.1. AWS CLI のインストール
AWS で HA クラスターを管理するために必要な手順の多くには、AWS CLI の使用が含まれます。AWS CLI をインストールするには、以下の手順を実行します。
前提条件
- AWS アクセスキー ID および AWS シークレットアクセスキーを作成し、それらにアクセスできるようになりました。手順と詳細は、AWS CLI のクイック設定 を参照してください。
手順
yum
コマンドを使用して AWS コマンドラインツール をインストールします。# yum install awscli
aws --version
コマンドを使用して、AWS CLI をインストールしたことを確認します。$ aws --version aws-cli/1.19.77 Python/3.6.15 Linux/5.14.16-201.fc34.x86_64 botocore/1.20.77
AWS アクセスの詳細に従って、AWS コマンドラインクライアントを設定します。
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
3.4.2. S3 バケットの作成
AWS にインポートするには、Amazon S3 バケットが必要です。Amazon S3 バケットは、オブジェクトを格納する Amazon リソースです。イメージのアップロードプロセスの一環として、S3 バケットを作成し、イメージをバケットに移動します。以下の手順に従って、バケットを作成します。
手順
- Amazon S3 コンソール を起動します。
- Create Bucket をクリックします。Create Bucket ダイアログが表示されます。
Name and region ビューで、以下を行います。
- Bucket name を入力します。
- Region を入力します。
- Next をクリックします。
- Configure options ビューでは、目的のオプションを選択し、Next をクリックします。
- Set permissions ビューで、デフォルトのオプションを変更または受け入れ、Next をクリックします。
- バケットの設定を確認します。
Create bucket をクリックします。
注記AWS CLI を使用してバケットを作成することもできます。たとえば、
aws s3 mb s3://my-new-bucket
コマンドは、my-new-bucket
という名前の S3 バケットを作成します。mb
コマンドの詳細は AWS CLI Command Reference を参照してください。
3.4.3. vmimport ロールの作成
仮想マシンのインポートに必要な vmimport
ロールを作成するには、以下の手順を実行します。詳細は、Amazon ドキュメントの VM Import Service Role を参照してください。
手順
trust-policy.json
という名前のファイルを作成し、以下のポリシーを追加します。システムの任意の場所にファイルを保存し、その場所を書き留めます。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }
create role
コマンドを実行してvmimport
ロールを作成します。trust-policy.json
ファイルの場所への完全なパスを指定します。file://
の接頭辞をパスに設定します。以下に例を示します。$ aws iam create-role --role-name vmimport --assume-role-policy-document file:///home/sample/ImportService/trust-policy.json
role-policy.json
という名前のファイルを作成し、以下のポリシーを追加します。s3-bucket-name
を、S3 バケットの名前に置き換えます。{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::s3-bucket-name", "arn:aws:s3:::s3-bucket-name/*" ] }, { "Effect":"Allow", "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource":"*" } ] }
put-role-policy
コマンドを使用して、作成したロールにポリシーを割り当てます。role-policy.json
ファイルの完全パスを指定します。以下に例を示します。$ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file:///home/sample/ImportService/role-policy.json
関連情報
3.4.4. イメージの S3 への変換およびプッシュ
イメージを S3 に変換してプッシュするには、以下の手順を実行します。サンプルは典型的なもので、qcow2
ファイル形式でフォーマットされたイメージを raw
形式に変換します。Amazon では、OVA
、VHD
、VHDX
、VMDK
、および raw
の形式のイメージを利用できます。Amazon で利用できるイメージ形式の詳細は、VM import/Export の仕組み を参照してください。
手順
qemu-img
コマンドを実行してイメージを変換します。以下に例を示します。# qemu-img convert -f qcow2 -O raw rhel-8.0-sample.qcow2 rhel-8.0-sample.raw
イメージを S3 にプッシュします。
$ aws s3 cp rhel-8.0-sample.raw s3://s3-bucket-name
注記この手順では数分かかる場合があります。完了したら、AWS S3 コンソール を使用して、イメージが S3 バケットに正常にアップロードされたことを確認できます。
3.4.5. イメージのスナップショットとしてのインポート
イメージをスナップショットとしてインポートするには、以下の手順を実行します。
手順
イメージのバケットとパスを指定するファイルを作成します。
container.json
ファイルに名前を付けます。以下の例では、s3-bucket-name
をバケット名に置き換え、s3-key
を鍵に置き換えます。Amazon S3 コンソールを使用して、イメージの鍵を取得できます。{ "Description": "rhel-8.0-sample.raw", "Format": "raw", "UserBucket": { "S3Bucket": "s3-bucket-name", "S3Key": "s3-key" } }
イメージをスナップショットとしてインポートします。この例では、パブリックの Amazon S3 ファイルを使用しています。Amazon S3 コンソール を使用して、バケットのパーミッション設定を変更できます。
aws ec2 import-snapshot --disk-container file://containers.json
端末は以下のようなメッセージを表示します。メッセージ内の
ImportTaskID
を書き留めます。{ "SnapshotTaskDetail": { "Status": "active", "Format": "RAW", "DiskImageSize": 0.0, "UserBucket": { "S3Bucket": "s3-bucket-name", "S3Key": "rhel-8.0-sample.raw" }, "Progress": "3", "StatusMessage": "pending" }, "ImportTaskId": "import-snap-06cea01fa0f1166a8" }
describe-import-snapshot-tasks
コマンドを使用して、インポートの進行状況を追跡します。ImportTaskID
を含めます。$ aws ec2 describe-import-snapshot-tasks --import-task-ids import-snap-06cea01fa0f1166a8
返されるメッセージには、タスクの現在の状態が表示されます。完了したら、
Status
はcompleted
になります。ステータスに記載されているスナップショット ID を書き留めます。
3.4.6. アップロードしたスナップショットからの AMI の作成
EC2 では、インスタンスの起動時に Amazon Machine Image (AMI) を選択する必要があります。アップロードしたスナップショットから AMI を作成するには、以下の手順を行います。
手順
- AWS EC2 Dashboard に移動します。
- Elastic Block Store で スナップショット を選択します。
-
スナップショット ID (例:
snap-0e718930bd72bcda0
) を検索します。 - スナップショットを右クリックして、イメージの作成 を選択します。
- イメージに名前を付けます。
- 仮想化のタイプ で、ハードウェア仮想化支援機能 を選択します。
- 作成 をクリックします。イメージ作成に関する注意事項に、イメージへのリンクがあります。
イメージリンクをクリックします。Images>AMI の下にイメージが表示されます。
注記また、AWS CLI の
register-image
コマンドを使用して、スナップショットから AMI を作成できます。詳細は、register-image を参照してください。以下に例を示します。$ aws ec2 register-image \ --name "myimagename" --description "myimagedescription" --architecture x86_64 \ --virtualization-type hvm --root-device-name "/dev/sda1" --ena-support \ --block-device-mappings "{\"DeviceName\": \"/dev/sda1\",\"Ebs\": {\"SnapshotId\": \"snap-0ce7f009b69ab274d\"}}"
root デバイスボリューム
/dev/sda1
をroot-device-name
として指定する必要があります。AWS のデバイスマッピングの概念情報は、ブロックデバイスマッピングの例 を参照してください。
3.4.7. AMI からのインスタンスの起動
AMI からインスタンスを起動して設定するには、以下の手順を行います。
手順
- AWS EC2 Dashboard から、Images を選択して、AMI を選択します。
- イメージを右クリックして、Launch を選択します。
ワークロードの要件を満たす、もしくは超過する Instance Type を選択します。
インスタンスタイプに関する情報は、Amazon EC2 Instance Types を参照してください。
Next:Configure Instance Details をクリックします。
- 作成する インスタンス数 を入力します。
- Network で、AWS 環境でのセットアップ の際に作成した VPC を選択します。インスタンスのサブネットを選択するか、新しいサブネットを作成します。
自動割り当てパブリック IP では、Enable を選択します。
注記これらは、基本インスタンスの作成に必要な最小限の設定オプションです。アプリケーション要件に応じて追加オプションを確認します。
- Next: Add Storage をクリックします。デフォルトのストレージが十分であることを確認してください。
Next: Add Tags をクリックします。
注記タグを使用すると、AWS リソースの管理に役立ちます。タグ付けの詳細は、Amazon EC2 リソースにタグを付ける を参照してください。
- Next:Configure Security Group をクリックします。AWS 環境でのセットアップ の際に作成したセキュリティーグループを選択します。
- Review and Launch をクリックします。選択内容を確認します。
Launch をクリックします。既存の鍵のペアの選択、または新しい鍵のペアの作成に関するダイアログが表示されます。AWS 環境でのセットアップ 時に作成した鍵のペアを選択します。
注記秘密鍵のパーミッションが正しいことを確認します。必要に応じて
chmod 400 <keyname>.pem
コマンドオプションを使用してパーミッションを変更します。- Launch Instances をクリックします。
View Instances をクリックします。インスタンスに名前を付けることができます。
インスタンスを選択して Connect をクリックすると、インスタンスへの SSH セッションを開始できます。A standalone SSH client に記載されている例を使用してください。
注記または、AWS CLI を使用してインスタンスを起動することもできます。詳細は、Amazon 社のドキュメントの Launching, Listing, and Terminating Amazon EC2 Instances を参照してください。
3.4.8. Red Hat サブスクリプションの割り当て
Red Hat Cloud Access プログラムで有効になっているサブスクリプションを割り当てるには、以下の手順を行います。
前提条件
- サブスクリプションが有効になっている。
手順
システムを登録します。
# subscription-manager register --auto-attach
サブスクリプションを割り当てます。
- アクティベーションキーを使用して、サブスクリプションを割り当てることができます。詳細は、カスタマーポータルのアクティベーションキーを作成する を参照してください。
- または、サブスクリプションプール (Pool ID) の ID を使用してサブスクリプションを手動で割り当てることができます。コマンドラインでのサブスクリプションのアタッチと削除 を参照してください。
3.4.9. AWS Gold Image の自動登録の設定
Amazon Web Services (AWS) 上に RHEL 8 の仮想マシンをより早く、より快適にデプロイするために、RHEL 8 の Gold Image を Red Hat Subscription Manager(RHSM) に自動的に登録するように設定することができます。
前提条件
最新の AWS 用 RHEL 8 Gold Image をダウンロードしている。手順については、AWS のゴールドイメージの使用 を参照してください。
注記AWS アカウントは、一度に 1 つの Red Hat アカウントにしか割り当てできません。そのため、Red Hat アカウントにアタッチする前に、他のユーザーが AWS アカウントへのアクセスを必要としていないことを確認してください。
手順
- Gold Image を AWS にアップロードします。手順については、Uploading the Red Hat Enterprise Linux image to AWS を参照してください。
- アップロードされたイメージを使って仮想マシンを作成します。自動的に RHSM に登録されます。
検証
上記の手順で作成した RHEL 8 仮想マシンで、
subscription-manager identity
コマンドを実行して、システムが RHSM に登録されていることを確認します。登録に成功したシステムでは、システムの UUID が表示されます。以下に例を示します。# subscription-manager identity system identity: fdc46662-c536-43fb-a18a-bbcb283102b7 name: 192.168.122.222 org name: 6340056 org ID: 6340056