Notice
Recent Posts
Recent Comments
Link
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

Strata

VMware를 통한 Amazon Linux 2 맛보기 본문

AWS

VMware를 통한 Amazon Linux 2 맛보기

Strata 2018. 1. 18. 00:49

어쩔 수 없는(?) 사유로 "Amazon Linux"라는 Linux 배포판을 검토해야하는 상황에 처하게 되었습니다..!!


AWS 프리티어도 끝난 마당에 Amazon EC2 인스턴스를 구동해야하나 고민하고 있을 때


"Amazon Linux 2"라는 한줄기 빛을 발견했습니다.


이에 지금부터 VMware를 통해 Amazon Linux 2 가상 머신을 만들고 구동하는 방법에 대해 정리하고자 합니다.


자, 우선 공식 가이드를 보고자 하시는 분들은 바로 https://aws.amazon.com/ko/amazon-linux-2/를 참조하세요.


제가 쓰고 있는 이 글은 단지 개인적인 삽질의 기록입니다.


저는 가난한 VMware Workstation Player 사용자이므로 이를 대상으로 설명합니다.


준비물은 아래와 같습니다.

  • Amazon Linux 2 VMware ESX image
  • 기본 계정 및 환경 설정을 위한 cloud-init 설정 파일
하나씩 준비해보도록 합시다.

1. Amazon Linux 2 VMware ESX image

위 잡설에서 언급한 Amazon Linux 2 공식 페이지를 방문하시면 제일 마지막에 매우 매우 유용한(!?) 링크들이 있습니다. 
그 중에 이 링크(Amazon Linux 2 virtual machine images)를 발견하셨다면 이미 반은 끝났습니다.
바로 이 곳에서 Amazon Linux 2 VMware ESX image를 다운받습니다.


2. 기본 계정 및 환경 설정을 위한 cloud-init 설정 파일

Amazon Linux 2 VMware ESX image를 통해 가상머신 생성 후 최초 구동시 cloud-init을 통해 초기 설정이 진행됩니다.

이를 위한 설정 파일을 작성해보도록 합시다.

첫 번째 준비물을 다운로드 받기 위한 과정 중에 유심히 보신 분이라면 아래와 같은 파일이 눈에 들어왔을 수 있습니다.

README 파일을 참조하여 설정 파일을 만들어 보겠습니다.

그 이상의 cloud-init에 대한 자세한 설명은 생략합니다.(저도 잘 모릅니다.)

혹시나 자세한 내용이 궁금하신 분들은 이 링크를 참조하세요(https://cloudinit.readthedocs.io)


전체 과정은 총 3가지 부분으로 이루어져 있습니다.

  • Hostname, Network 등의 설정을 위한 meta-data 파일
  • User, Group 등의 설정을 위한 user-data 파일
  • 위 두 파일(meta-data, user-data)을 포함하는 iso 이미지 생성
이 과정들을 하나씩 보도록 합시다.

2.1 meta-data

local-hostname: amazonlinux.onprem
# eth0 is the default network interface enabled in the image. You can
# configure static network settings with an entry like below.
#network-interfaces: |
#  iface eth0 inet static
#  address 192.168.1.10
#  network 192.168.1.0
#  netmask 255.255.255.0
#  broadcast 192.168.1.255
#  gateway 192.168.1.254

감이 오시나요?

전 그냥 NAT Network Adapter를 사용하고 OS에서는 DHCP를 통해 자동 IP를 할당받을 것이므로 그냥 sample 파일 그대로 사용하겠습니다. 

2.2 user-data

#cloud-config
# vim:syntax=yaml
users:
# A user by the name ec2-user is created in the image by default.
  - default
# Following entry create user1 and assigns password specified in plain text.
# Please not use of plain text password is not recommended from security best
# practises standpoint
  - name: user1
    groups: sudo
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    plain_text_passwd: < plain text password here >
    lock_passwd: false
# Following entry creates user2 and attaches a hashed passwd to the user. Hashed
# passwords can be generated with:
# python -c 'import crypt,getpass; print crypt.crypt(getpass.getpass())'
  - name: user2
    passwd: < hashed password here >
    lock_passwd: false
# Following entry creates user3, disables password based login and enables an SSH public key
  - name: user3
    ssh-authorized-keys:
      - < ssh public key here >
    lock_passwd: true
chpasswd:
  list: |
    ec2-user:< plain text password here >

자 sample을 보면 다양한 방식의 유저 및 비밀번호 지정에 대한 예시가 있습니다.
하지만 저는 단지 기본 계정(ec2-user)에 plain text 비밀번호를 지정하는 것으로 진행하겠습니다.

#cloud-config
# vim:syntax=yaml
users:
# A user by the name ec2-user is created in the image by default.
  - default
chpasswd:
  list: |
    ec2-user:idontknow

2.3 iso 이미지 생성

meta-data와 user-data 파일을 작성했으면, 가상 머신 최초 부팅시 CD-ROM에서 인식할 iso 이미지를 생성해주어야합니다.
리눅스 환경의 경우 아래와 같은 명령어로 생성할 수 있습니다.

genisoimage  -output seed.iso -volid cidata -joliet -rock user-data meta-data



3. 가상 머신 생성

드디어 위에서 열심히(?) 만든 준비물들을 이용하여 가상머신을 생성해보도록 하겠습니다.
VMware Workstation Player를 열고 Amazon Linux 2 VMware ESX image(ova 파일)을 Open 합니다.
가상 머신을 저장할 경로를 지정하면 VMware ESX image 파일을 VMware Workstation image로 변환하는 과정이 진행됩니다.


변환이 완료되면 최초 부팅 전에 CD/DVD Drive로 위에서 준비한 seed.iso 파일을 추가합니다



자, 모든 준비는 끝났습니다.

드디어 부팅을 해봅시다.


아름다운 부팅 과정이 지나가고 user-data에서 지정한 사용자 계정(ec2-user)와 비밀번호로 로그인을 해봅시다.


Amazon Linux 2 환경에 입성하였습니다.


Amazon yum repository를 통해 yum update도 매우 잘 수행되는 것을 볼 수 있습니다.



이제 Amazon Linux 2 가상 환경에서 필요한 사항들을 테스트하면 되겠습니다.


마치며...

블로그를 생성하고 방치하고 있었는데 첫번째 포스팅으로 이런 것(?)을 작성하게 될 줄은 몰랐습니다.
앞으로 어떤 주제로 포스팅을 할지는 모르겠습니다만 개발 과정에서 기록이 필요한 다양한 사항들을 최대한 기록해보도록 하겠습니다.

감사합니다.



Comments