3.3.3. 使用命令行管理 AWS 上的 RHEL 虚拟机
您可以使用 Amazon Web Services (AWS)命令行界面 awscli2 实用程序,通过命令行管理 AWS 上的 Red Hat Enterprise Linux (RHEL) Elastic Cloud Compute (EC2)虚拟机。您可以导入 RHEL EC2 镜像快照,创建 Amazon Machine Image (AMI),启动并连接到 RHEL EC2 实例。
先决条件
- 您已创建了红帽帐户。
- 您已注册并配置了 AWS 帐户。
-
您已为您的帐户安装了
awscli2软件包并配置了 AWS 凭证。
流程
使用
vmimport角色:$ aws iam create-role --role-name vmimport \ --assume-role-policy-document file://<example_vmimport_trust_policy_file>使用
vmimport角色策略文件嵌入内联策略文档:$ aws iam put-role-policy --role-name vmimport \ --policy-name vmimport-access \ --policy-document file://<example_vmimport_role_policy_file>另外,您可以通过创建一个 IAM 角色(通常称为
vmimport)来授予 VM Import/Export 权限,并带有vmie.amazonaws.com的信任策略,并从 AWS 指南附加 JSON 策略。将 RHEL 镜像导入为快照:
$ aws ec2 import-snapshot --disk-container file://<example_containers_json_file>确认快照导入成功完成并状态为
completed:$ aws ec2 describe-import-snapshot-tasks --import-task-ids <example_import_task_id>您可以从 Amazon S3 将 RHEL 虚拟机镜像作为快照导入到 Amazon EC2。准备
<example_containers_json_file>指向 S3 存储桶和对象键的文件,然后启动导入并监控命令返回的任务 ID。从完成的快照中注册 RHEL AMI:
$ aws ec2 register-image \ --name <example_rhel_custom_ami_name> \ --architecture x86_64 \ --virtualization-type hvm \ --root-device-name /dev/sda1 \ --block-device-mappings "[{\"DeviceName\": \"/dev/sda1\",\"Ebs\": {\"SnapshotId\": \"<example_snapshot_id>\"}}]" \ --ena-support为 RHEL EC2 实例创建密钥对:
$ aws ec2 create-key-pair --key-name <example_key_pair_name> \ --query 'KeyMaterial' --output text > <example_key_file>.pem这个密钥对是每个区域,并保存一个
.pem文件。限制密钥文件的权限:
$ chmod 400 <example_key>.pem从注册的 AMI 启动 RHEL EC2 实例:
$ aws ec2 run-instances \ --image-id <example_registered_ami_id> \ --instance-type <example_instance_type> \ --key-name <example_key_pair_name>连接到默认用户为
ec2-user的 RHEL EC2 实例:$ ssh -i <example_key>.pem ec2-user@<instance_public_dns_or_ip>
验证
验证快照导入是否已成功完成,状态为
completed:$ aws ec2 describe-import-snapshot-tasks --import-task-ids <example_import_task_id>验证 AMI 是否处于
available状态:$ aws ec2 describe-images --image-ids <example_registered_ami_id>验证实例是否在
running状态运行:$ aws ec2 describe-instances --instance-ids <example_instance_id>当实例完成时,
State.Name值正在运行。验证 SSH 连接是否正常工作:
$ ssh -i <example_key>.pem ec2-user@<instance_public_dns_or_ip> 'echo connected'