개인적으로 구성해놓은 VM 들에 대해서 AWS에 올려놓고 사용하는 경우가 있습니다.
이에 대해서 순서대로 진행해본 내역에 대해서 남겨보려고 합니다.
일단 첫번째로 AWS 망에 VM 이미지를 import 시키려면 아래와 같은 준비물이 필요합니다.
1. VM OVA template 등과 같은 template
2. VM Import에 대한 IAM Role & Policy
3. VM template을 업로드할 S3
먼저, VM image에 대해 OVA template 또는 OVF template 을 추출해야됩니다. 해당 방법에 대해선 VMWare Workstation 이상의 버전 등에서는 쉽게 추출을 할 수 있는데요
먼저 해당 템플릿을 뜨고자 하는 VM의 전원을 내린 후 우클릭 후 템플릿 -> OVF template 내보내기 등으로 간단하게 추출할 수 있습니다.
# 추후에 작업 스크린샷 추가하도록 하겠습니다.
VMWare workstation 14등에서는 해당 작업 진행에 대해서 OVF template 내보내기를 했을 경우 OVA 또는 OVF 로 바로 변환해서 추출이 가능합니다만, 만일 OVA로 바로 추출하는 과정이 없을 경우에는 따로 OVF tool 등을 활용하여 OVA로 변환하여 추출할 수 있습니다.
만일 ovftool을 이용할 경우 Ovftool <OVF경로> <OVA가 저장될 경로> 와 같은 형식으로 변환하실 수 있습니다.
그런 방식으로 OVA 파일을 추출하셨다면 이제 해당 OVA image를 만들어놓은 S3 버킷에다가 업로드를 진행해주시면 됩니다.
그럼 이제 S3 버킷을 만들어 보겠습니다.
먼저 AWS Console 접근 후 S3 home으로 이동해줍니다.
그 후 버킷 만들기를 누르시면 아래와 같은 화면이 뜨실 겁니다.
여기서 버킷 이름은 고유한 이름으로 어디에서도 중복되지 않은 명칭으로 기입해주시고, 리전은 아시아/태평양-서울 리전으로 선택 후 나머지는 따로 건들이지 않고 기본으로 놔둔 후 버킷 만들기를 하시면 간단하게 S3 버킷을 생성하실 수 있습니다.
위에는 버킷 만들기가 완료된 상태의 버킷 리스트를 확인할 수 있습니다.
이제 여기에 새로 폴더를 지정한 후에 위에서 추출한 OVA 파일등을 업로드 해줍니다.
이와 같이 완료되었다면 이제 VM Import를 하기 위한 권한 및 역할을 만들어주로 가보겠습니다.
AWS Console에서 IAM을 선택한 후 IAM home에 들어가신 후에 먼저 권한부터 작성하도록 하겠습니다 .
여기서 정책을 누르신 후에 정책 생성을 누르시고, JSON을 선택해주시면 아래와 같은 화면이 뜨실 겁니다.
여기에 아래의 JSON 내용을 기입하시고 정책 검토를 누르신 후에 해당 정책의 명칭을 기입하시고 정책생성을 누르시면 아래의 내용에 대한 정책이 생성됩니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:DeleteBucket",
"s3:DeleteObject",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutBucketAcl"
],
"Resource": [
"arn:aws:s3:::'S3 버킷명'",
"arn:aws:s3:::'S3 버킷명'/*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:CancelConversionTask",
"ec2:CancelExportTask",
"ec2:CreateImage",
"ec2:CreateInstanceExportTask",
"ec2:CreateTags",
"ec2:DeleteTags",
"ec2:DescribeConversionTasks",
"ec2:DescribeExportTasks",
"ec2:DescribeExportImageTasks",
"ec2:DescribeImages",
"ec2:DescribeInstanceAttribute",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstances",
"ec2:DescribeSnapshots",
"ec2:DescribeTags",
"ec2:ExportImage",
"ec2:ImportInstance",
"ec2:ImportVolume",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:TerminateInstances",
"ec2:ImportImage",
"ec2:ImportSnapshot",
"ec2:DescribeImportImageTasks",
"ec2:DescribeImportSnapshotTasks",
"ec2:CancelImportTask"
],
"Resource": "*"
}
]
}
그렇게 만들어진 정책을 해당 작업을 진행할 IAM Account에 연결시켜주시면 됩니다.
그리고 차례대로 IAM Role을 만들어야되는데요, 이때도 그에 맞게 Role을 생성해야되기에 콘솔에서가 아닌 AWS CLI를 통해서 생성하려고 합니다.
AWS Security Token Service (AWS STS)에 대한 Role을 정의한 JSON 파일을 생성하고, 그걸 PC에 저장합니다.
첨부파일
trust.json
그리고 AWS CLI에 Access Key 및 Secret key를 통해서 로그인 하신 후에 위의 파일이 있는 경로를 지정해주시면서 Role을 생성해주시면 됩니다.
> aws iam create-role --role-name vmimport --assume-role-policy-document "file://C: \import\trust.json"
이렇게 create-role을 통해 vmimport에 대한 role을 만들고 난 후 추가적으로 필요한 정책들을 추가해주시면 됩니다.
첨부파일
role-policy.json
*여기 내용 중 disk-image-file-bucket은 디스크 이미지를 위한 버킷을 말하고, export-bucket은 내보낸 이미지를 위한 버킷을 말합니다.
그 후에 기존에 생성해놓은 Role에 정책을 추가시키는 작업을 아래와 같이 진행해주시면 vm import에 필요한 기본적인 Role 및 Policy가 준비가 됩니다.
> aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://C:\import\role-policy.json"
이제 위에서 준비해놓은 것을 토대로 VM을 AWS로 import 하면 됩니다.
먼저 CLI를 통해서 import할 VM의 S3 상 위치 등에 대한 정보를 json으로 만들어줍니다.
[
{
"Description": "My Server OVA",
"Format": "ova",
"UserBucket":
{
"S3Bucket": "S3 Bucket",
"S3Key": "IMAGE-UPLOAD-Folder/VM.ova"
}
}
]
이를 json 파일로 만든 후에 아래와 같이 커맨드를 입력해주시면 이제 AWS로 image가 업로드가 되기 시작합니다.
> aws ec2 import-image --description "My server VM" --disk-containers "file://C:\Users\admin\Desktop\import\vm_ova.json"
위와 같이 입력하시면 아래와 같은 JSON 구문을 확인하실 수 있고,
{
"Description": "My server VM",
"ImportTaskId": "import-ami-0779870******",
"Progress": "1",
"SnapshotDetails": [
{
"Description": "My Server OVA",
"DiskImageSize": 0.0,
"Format": "OVA",
"UserBucket": {
"S3Bucket": "S3 Bucket",
"S3Key": "IMAGE-UPLOAD-Folder/VM.ova"
}
}
],
"Status": "active",
"StatusMessage": "pending"
}
여기서 추가적으로 진행되는 상태를 확인하고자 하신다면 아래와 같이 입력해주시면 됩니다.
> aws ec2 describe-import-image-tasks --import-task-ids import-ami-0779870******
그리고 해당 명령어를 통해서 status가 completed가 될 때까지 기다려 주시면 됩니다.
완료되시면 아래와 같이 확인이 가능합니다.
그 후엔 AWS EC2 콘솔 화면에 AMI를 부분에서 생성된 VM Image를 확인하실 수 있습니다.
읽어주셔서 감사합니다.
참고 문서: https://docs.aws.amazon.com/ko_kr/vm-import/latest/userguide/vm-import-ug.pdf
** 지속적으로 해당 내용 주저리 써놓은 내용 수정하도록 하겠습니다.
(AWS)CloudWatch Logs Insight(vpc-flowlog) (0) | 2021.01.03 |
---|---|
(AWS)DataSync 구성하기 (0) | 2021.01.03 |
(AWS)EKS 구성하기-3 (0) | 2021.01.02 |
(AWS)EKS 구성하기-2 (0) | 2021.01.02 |
(AWS)EKS 구성하기-1 (0) | 2021.01.02 |