第 3 章 在 AWS 上安装 RHEL AI
您可以在 AWS 上安装和部署 Red Hat Enterprise Linux AI。
要使用 RAW 文件安装和部署 RHEL AI,您必须首先将 RHEL AI 镜像转换为 Amazon Machine Image (AMI)。
3.1. 将 RHEL AI 镜像转换为 AWS AMI 复制链接链接已复制到粘贴板!
在 AWS 机器上部署 RHEL AI 之前,您必须设置 S3 存储桶,并将 RHEL AI 镜像转换为 AWS AMI。
在以下过程中,您要创建以下资源:
- 带有 RHEL AI 镜像的 S3 存储桶
- AWS EC2 快照
- AWS AMI
- AWS 实例
先决条件
- 您已在 AWS IAM 帐户管理器中 配置了一个 Access Key ID。
流程
- 按照 AWS 文档安装 AWS命令行工具
您需要创建 S3 存储桶并设置权限,以允许镜像文件转换为 AWS 快照。
运行以下命令来创建所需的环境变量:
export BUCKET=<custom_bucket_name> export RAW_AMI=nvidia-bootc.ami export AMI_NAME="rhel-ai" export DEFAULT_VOLUME_SIZE=1000
$ export BUCKET=<custom_bucket_name> $ export RAW_AMI=nvidia-bootc.ami $ export AMI_NAME="rhel-ai" $ export DEFAULT_VOLUME_SIZE=1000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在 AWS 上,
DEFAULT_VOLUME_SIZE
测量 GB。您可以运行以下命令来创建 S3 存储桶:
aws s3 mb s3://$BUCKET
$ aws s3 mb s3://$BUCKET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须创建
trust-policy.json
文件,其中包含为存储桶生成 S3 角色所需的配置:printf '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }' > trust-policy.json
$ printf '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }' > trust-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为存储桶创建 S3 角色,您可以名称。在以下示例中,
vmiport
是角色的名称。aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
$ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须创建
role-policy.json
文件,其中包含为存储桶生成策略所需的配置:printf '{ "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 > role-policy.json
$ printf '{ "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 > role-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,为您的存储桶创建策略:
aws iam put-role-policy --role-name vmimport --policy-name vmimport-$BUCKET --policy-document file://role-policy.json
$ aws iam put-role-policy --role-name vmimport --policy-name vmimport-$BUCKET --policy-document file://role-policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 现在,您的 S3 存储桶已设置,您需要从 Red Hat Enterprise Linux AI下载页面下载 RAW 镜像
复制 RAW 镜像链接并将其添加到以下命令中:
curl -Lo disk.raw.gz <link-to-raw-file>
$ curl -Lo disk.raw.gz <link-to-raw-file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令解压
raw.gz
文件:gunzip disk.raw.gz
$ gunzip disk.raw.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令将镜像上传到 S3 存储桶:
aws s3 cp disk.raw s3://$BUCKET/$RAW_AMI
$ aws s3 cp disk.raw s3://$BUCKET/$RAW_AMI
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将镜像转换为快照并将其存储在
task_id
变量名称中:printf '{ "Description": "my-image", "Format": "raw", "UserBucket": { "S3Bucket": "%s", "S3Key": "%s" } }' $BUCKET $RAW_AMI > containers.json
$ printf '{ "Description": "my-image", "Format": "raw", "UserBucket": { "S3Bucket": "%s", "S3Key": "%s" } }' $BUCKET $RAW_AMI > containers.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow task_id=$(aws ec2 import-snapshot --disk-container file://containers.json | jq -r .ImportTaskId)
$ task_id=$(aws ec2 import-snapshot --disk-container file://containers.json | jq -r .ImportTaskId)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用以下命令检查磁盘镜像的进度到快照转换作业:
aws ec2 describe-import-snapshot-tasks --filters Name=task-state,Values=active
$ aws ec2 describe-import-snapshot-tasks --filters Name=task-state,Values=active
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 转换作业完成后,您可以通过运行以下命令来获取快照 ID 并将其存储在名为
snapshot_id
的变量中:snapshot_id=$(aws ec2 describe-import-snapshot-tasks | jq -r '.ImportSnapshotTasks[] | select(.ImportTaskId=="'${task_id}'") | .SnapshotTaskDetail.SnapshotId')
$ snapshot_id=$(aws ec2 describe-import-snapshot-tasks | jq -r '.ImportSnapshotTasks[] | select(.ImportTaskId=="'${task_id}'") | .SnapshotTaskDetail.SnapshotId')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,在快照中添加标签名称,以便更轻松地识别:
aws ec2 create-tags --resources $snapshot_id --tags Key=Name,Value="$AMI_NAME"
$ aws ec2 create-tags --resources $snapshot_id --tags Key=Name,Value="$AMI_NAME"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下命令从快照注册 AMI:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以运行以下命令来添加另一个标签名称来识别 AMI:
aws ec2 create-tags --resources $ami_id --tags Key=Name,Value="$AMI_NAME"
$ aws ec2 create-tags --resources $ami_id --tags Key=Name,Value="$AMI_NAME"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow