로컬 CentOS 6.x VM을 AWS EC2로 가져옵니다.

9663 단어 aws-cliAWS

소개



로컬의 CenOS 6.x VMWare VM을 AWS EC2로 가져갑니다.
레거시 로컬 환경이라고 할까, 서버가 흐려지기 때문에 AWS에 올리려고 하는 이야기.

AWSCLI를 이용해 커멘드 라인으로 로컬에 있는 VM 를 이동한다.

거친


  • VMWare VM 내보내기(OVF 형식)
  • 내보낸 (OVF 형식) 파일을 S3에 복사
  • S3에서 EC2로 복사 할 역할을 만들고 정책을 할당합니다.
  • S3에 복사 한 파일을 AMI로 가져옵니다.
  • AMI에서 EC2에 등록

  • 준비


  • AWSCLI를 사용할 수 있습니다
  • S3에서 버킷을 만들 수 있습니다
  • AWSCLI에서 역할 생성 및 정책 할당을 할 수 있도록 되어 있는 것
  • IAM에서 액세스 ID 및 액세스 키로 액세스하는 사용자에게 역할 생성 및 정책 할당을 허용합니다.


  • 절차



    VMWare VM 내보내기(OVF 형식)



    VM을 중지한 후 수행해야 합니다.
    파일 메뉴에서 OVF로 내보내기(E)를 선택하여 파일을 출력합니다.



    이것을 실행하면, 이하의 3개의 파일이 출력된다.
  • test.mf
  • test.ovf
  • test.vmdk

  • 내보낸 (OVF 형식) 파일을 S3에 복사



    S3에서 버킷 만들기



    버킷 만들기를 클릭합니다.



    버킷 이름을 입력하고 '다음'



    특히 아무것도 없기 때문에 아무것도하지 않고 "다음"



    마이그레이션하자마자 지우므로 공개 액세스로 버킷 만들기





    버킷에 OVF 형식 파일 복사



    버킷 선택



    업로드를 클릭하여 내보낸 VM의 세 파일을 업로드합니다.


  • test.mf
  • test.ovf
  • test.vmdk

  • S3에서 EC2로 복사할 역할을 만들고 정책 할당



    역할 만들기



    다음 JSON 파일 준비
    ``json
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Principal": { "Service": "vmie.amazonaws.com"},
    "Action": "sts:AssumeRole",
    "Condition": {
    "StringEquals":{
    "sts:Externalid": "vmimport"
    }
    }
    }
    ]
    }

    위의 JSON 파일을 사용하여 다음 명령을 실행합니다.
    /root/.local/bin/aws iam create-role --role-name vmimport --assume-role-policy-document "file:///tmp/trust-policy.json"
    

    역할을 만들 수 있는 권한이 없으면 다음과 같은 오류가 발생합니다.
    An error occurred (AccessDenied) when calling the PutRolePolicy operation: User: arn:aws:iam::105252861779:user/cliadmin is not authorized to perform:
    

    명령 실행이 정상적으로 끝나면 다음과 같은 것이 표시된다
    ROLE    arn:aws:iam::105252861779:role/vmimport 2020-07-15T10:36:22Z    /       AROARRAMPG5J2MR35GNQ3   vmimport
    ASSUMEROLEPOLICYDOCUMENT        2012-10-17
    STATEMENT       sts:AssumeRole  Allow
    STRINGEQUALS    vmimport
    PRINCIPAL       vmie.amazonaws.com
    

    정책 할당



    다음 JSON 파일을 준비합니다. 「버킷명」에 작성한 버킷명을 기재한다.
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Action":[
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket"
             ],
             "Resource":[
                "arn:aws:s3:::バケット名",
                "arn:aws:s3:::バケット名/*"
             ]
          },
          {
             "Effect":"Allow",
             "Action":[
                "ec2:ModifySnapshotAttribute",
                "ec2:CopySnapshot",
                "ec2:RegisterImage",
                "ec2:Describe*"
             ],
             "Resource":"*"
          }
       ]
    }
    

    위의 JSON 파일을 사용하여 다음 명령을 실행하여 역할에 정책을 할당합니다.
     /root/.local/bin/aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file:///tmp/role-policy.json"
    

    역할을 만들 수 있는 권한이 없으면 다음과 같은 오류가 발생합니다.
    An error occurred (AccessDenied) when calling the PutRolePolicy operation: User: arn:aws:iam::105252861779:user/cliadmin is not authorized to perform:
    

    S3에 복사한 파일을 AMI로 가져오기



    다음 JSON 파일을 준비합니다.
    [
      {
        "Description": "First disk",
        "Format": "vmdk",
        "UserBucket": {
            "S3Bucket": "バケット名",
            "S3Key": "フォルダ名/インポート対象VMDK(test.vmdk)"
        }
      }
    ]
    

    위에서 준비한 JSON 파일을 이용하여 다음 명령을 실행합니다.
    /root/.local/bin/aws ec2 import-image --description "vmec2mig" --disk-containers "file:///tmp/containers.json"
    

    역할이 없으며 역할에 정책이 할당되지 않으면 다음 오류가 발생합니다.
    An error occurred (InvalidParameter) when calling the ImportImage operation: The service role vmimport provided does not exist or does not have sufficient permissions
    

    실행할 수 있으면 가져오기가 시작되므로 잠시 기다립니다.
    /root/.local/bin/aws ec2 import-image --description "vmec2mig" --disk-containers "file:///tmp/containers.json"
    vmec2mig        import-ami-0746702dcd8ae0ba4    1       active  pending
    SNAPSHOTDETAILS First disk      0.0     VMDK
    USERBUCKET      testlink-vm     TestLink_CentOS6.6_extl0104ce6-disk1.vmdk
    
    /root/.local/bin/aws ec2 describe-import-image-tasks --import-task-ids import-ami-0746702dcd8ae0ba4
    IMPORTIMAGETASKS        vmec2mig        import-ami-0746702dcd8ae0ba4    4       active  validated
    
    # /root/.local/bin/aws ec2 describe-import-image-tasks --import-task-ids import-ami-0746702dcd8ae0ba4
    IMPORTIMAGETASKS        x86_64  vmec2mig        ami-019afc5f9ae98ab03   import-ami-0746702dcd8ae0ba4    BYOL    Linux   completed
    

    상태가 completed가 되면 AMI에 사용되고 있다

    AMI에서 EC2에 등록



    등록한 AMI를 선택하고 「액션」에서 「기동」을 클릭하면 EC2로 기동합니다.

    좋은 웹페이지 즐겨찾기