3.4. 将 Red Hat Enterprise Linux 镜像上传到 AWS
为了能够在 Amazon Web Services (AWS)上运行 RHEL 实例,您必须首先将 RHEL 镜像上传到 AWS。
3.4.1. 安装 AWS CLI
在 AWS 中使用 AWS CLI 管理 HA 集群需要许多流程。
先决条件
- 您已创建了 AWS Access Key ID 和 AWS Secret Access Key,并可以访问它们。具体说明和详情,请参考 快速配置 AWS CLI。
步骤
使用
dnf
命令安装 AWS 命令行工具。# dnf 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 命令参考。
3.4.3. 创建 vmimport 角色
要使用 VM Import 服务将 RHEL 虚拟机(VM)导入到 Amazon Web Services (AWS),您需要创建 vmimport
角色。
如需更多信息,请参阅 Amazon 文档中的 VM Import/Export 将虚拟机导入为镜像。
流程
创建名为
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
通过使用 qemu-img
命令,您可以转换您的镜像,以便您可以将其推送到 S3。示例具有代表性;它们将格式为 qcow2
文件格式的镜像转换为 raw
格式的文件。Amazon 接受 OVA
、VHD
、VHDX
、VMDK
和 raw
格式的镜像。如需有关 Amazon 接受的镜像格式的更多信息,请参阅 VM 导入/导出是如何工作的。
步骤
运行
qemu-img
命令来转换您的镜像。例如:# qemu-img convert -f qcow2 -O raw rhel-9.0-sample.qcow2 rhel-9.0-sample.raw
将镜像推送到 S3。
$ aws s3 cp rhel-9.0-sample.raw s3://s3-bucket-name
注意这个过程可能需要几分钟时间。完成后,您可以使用 AWS S3 控制台 检查您的镜像是否成功上传到 S3 存储桶。
其它资源
3.4.5. 将您的镜像导入为快照
要在 Amazon Elastic Cloud Compute (EC2)服务中启动 RHEL 实例,您需要 Amazon Machine Image (AMI)。要创建系统的 AMI,您必须首先将 RHEL 系统镜像的快照上传到 EC2。
流程
创建文件来指定镜像的存储桶和路径。将文件命名为
containers.json
。在下面的示例中,将s3-bucket-name
替换为您 的存储桶名称,将s3-key
替换为您的密钥。您可以使用 Amazon S3 控制台获取镜像的密钥。{ "Description": "rhel-9.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-9.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
要在 Amazon Elastic Cloud Compute (EC2)服务中启动 RHEL 实例,您需要 Amazon Machine Image (AMI)。要创建系统的 AMI,您可以使用之前上传的 RHEL 系统快照。
流程
- 进入 AWS EC2 仪表板。
- 在 Elastic Block Store 下,选择 Snapshots。
-
搜索快照 ID(例如,
snap-0e718930bd72bcda0
)。 - 右键点击快照并选择 Create image。
- 为您的镜像命名。
- 在 Virtualization type 中,选择 Hardware-assisted virtualization。
- 点 Create。在关于镜像创建的备注中,有一个到您镜像的链接。
点击镜像链接。您的镜像显示在 Images>AMIs 下。
注意另外,您可以使用 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\"}}"
您必须将根设备卷
/dev/sda1
指定为root-device-name
。有关 AWS 设备映射的概念信息,请参阅 块设备映射示例。
3.4.7. 从 AMI 启动实例
要启动并配置 Amazon Elastic Compute Cloud (EC2)实例,请使用 Amazon Machine Image (AMI)。
流程
- 在 AWS EC2 Dashboard 中选择 Images,然后选择 AMI。
- 右键点击您的镜像并选择 Launch。
选择一个满足或超过工作负载要求的 Instance Type。
有关实例类型的信息,请参阅 Amazon EC2 实例类型。
点 Next: Configure Instance Details。
- 输入您要创建的实例数量。
- 对于 Network,选择您在设置 AWS 环境时创建的 VPC。为实例选择子网或创建新子网。
为 Auto-assign Public IP 选择 Enable。
注意这些是创建基本实例所需的最小配置选项。根据您的应用程序要求查看其他选项。
- 点击 Next: Add Storage。验证默认存储是否足够。
点击 Next: Add Tags。
注意标签可帮助您管理 AWS 资源。有关标记的信息,请参阅 标记您的 Amazon EC2 资源。
- 点 Next: 配置安全组。选择设置 AWS 环境时创建的安全组。
- 点 Review and Launch。验证您的选择。
点 Launch。此时会提示您选择现有密钥对或创建新密钥对。选择设置 AWS 环境时创建的密钥对。
注意验证您的私钥权限是否正确。如有必要,使用命令选项
chmod 400 <keyname>.pem
来更改权限。- 点 Launch Instances。
点 View Instances。您可以命名实例。
现在,您可以通过选择一个实例并单击 Connect 来启动与实例的 SSH 会话。使用为 独立的 SSH 客户端 提供的示例。
注意另外,您可以使用 AWS CLI 启动实例。如需更多信息,请参阅 Amazon 文档中的启动、列出和终止 Amazon EC2 实例。
3.4.8. 附加红帽订阅
使用 subscription-manager
命令,您可以注册并附加红帽订阅到 RHEL 实例。
先决条件
- 您必须已启用您的订阅。
流程
注册您的系统。
# subscription-manager register --auto-attach
附加您的订阅。
- 您可以使用激活码来附加订阅。如需更多信息,请参阅创建红帽客户门户网站激活码。
- 或者,您可以使用订阅池(池 ID)的 ID 手动附加订阅。请参阅 将基于主机的订阅附加到 hypervisor。
可选: 要在 Red Hat Hybrid Cloud Console 中收集有关实例的各种系统指标,您可以使用 Red Hat Insights 注册实例。
# insights-client register --display-name <display-name-value>
有关 Red Hat Insights 进一步配置的详情,请参考 Red Hat Insights 的客户端配置指南。
3.4.9. 对 AWS 黄金镜像设置自动注册
要在 Amazon Web Services (AWS)上更快、更适地部署 RHEL 9 虚拟机,您可以将 RHEL 9 的黄金镜像设置为自动注册到 Red Hat Subscription Manager (RHSM)。
先决条件
您已下载了 AWS 的最新 RHEL 9 黄金镜像。具体步骤请参阅 在 AWS 上使用黄金镜像。
注意一个 AWS 帐户一次只能附加到一个红帽帐户。因此,在将其附加到您的红帽帐户之前,请确保其他用户不需要访问 AWS 帐户。
步骤
- 将黄金镜像上传到 AWS。具体步骤请参阅将 Red Hat Enterprise Linux 镜像上传到 AWS。
- 使用上传的镜像创建虚拟机。他们将自动订阅 RHSM。
验证
在使用上述说明创建的 RHEL 9 虚拟机中,通过执行
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