3장. AWS에 RHEL AI 설치
AWS에 Red Hat Enterprise Linux AI를 설치하고 배포할 수 있는 방법은 여러 가지가 있습니다.
- AWS Marketplace 에서 RHEL AI를 구매할 수 있습니다.
- RHEL AI 다운로드 페이지에서 RHEL AI RAW 파일을 다운로드 하여 AWS 이미지로 변환할 수 있습니다.
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 계정 관리자에 액세스 키 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
는 GBs로 측정됩니다.다음 명령을 실행하여 S3 버킷을 생성할 수 있습니다.
aws s3 mb s3://$BUCKET
$ aws s3 mb s3://$BUCKET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 버킷에 대한 S3 역할을 생성하는 데 필요한 구성으로
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
$ 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