favicon Jay Lee DevLog

📚 목차

정말 오랜만에 글을 쓴다.

최근에 회사 일이 너무 바빠서 글을 쓸 시간이 없었다.

 

다행히 이제 마무리되고 있어서 여유가 좀 생기기도 했다.

 

오늘은

1. aws cli를 통한 인스턴스 정보 가져오기

2. 가져온 인스턴스 정보를 활용하여 EBS volume ID 가져오기

3. 해당 EBS를 사용 중인 EC2에 mount 하기

 

해당 방법에 대해 알아보고,

내가 짠 스크립트의 일부 내용을 공개해보려 한다.

 


1. aws cli를 통한 인스턴스 정보 가져오기

해당 방법은 인터넷에서 검색만해도 찾을 수 있는데, 쉽게 찾기 위해서는 인스턴스를 만들때 tag를 활용하는게 좋다.

인스턴스를 만들 때, 추가 태그 추가를 눌러서

해당 화면으로 바뀌면 키 값과 값을 넣을 수 있는데, 이 부분을 잘 넣어줘야한다.

왜냐하면 인스턴스를 조회할 때 해당 키 값과 값을 사용하기 때문이다.

 

예를들어 설명해보면,

키(key) 값은 'Name'

값(value) 값은 'test111' 이라고 설정해서 인스턴스를 만들었다고 가정해보자.

aws ec2 describe-instances --filters "Name=tag:Name,Values="test111 "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].[InstanceId]" --output text

 

위의 커맨드를 실행하면 현재 tag:Name(key)이 test111(value)이면서, 인스턴스 상태가 running(실행 중)인 인스턴스의 인스턴스 ID를 가져오게 된다.


2. 가져온 인스턴스 정보를 활용하여 EBS volume ID 가져오기

위에서 인스턴스 정보를 알았다면, 해당 인스턴스에 volume이 있는지 가져올 수 있다. 여기서도 volume을 만들때, 태그를 활용하면 위와 똑같은 방식으로 검색을 할 수 있다.

volume을 만들 때, 태그를 만들면 인스턴스와 똑같은 선택항목이 나오니 참고해서 만들자.

 

예를들면,

키(key) 값은 'Name'

값(value) 값은 'test222' 이라고 설정해서 volume을 만들었다고 가정해보자.

aws ec2 describe-volumes --region us-east-2 --filters "Name=tag:Name,Values=test222" "Name=attachment.instance-id,Values=${INSTANCE_ID}" --query "Volumes[*].{ID:VolumeId}" --output text

${INSTANCE_ID}에는 1번에서 가져온 인스턴스ID를 넣어주면 된다.

 

위의 명령을 실행하면, 인스턴스에 붙어 있으면서 tag:Name이 test222인 리전이 us-east-2인 volume ID를 가져오게 된다.

 


3. 해당 EBS를 사용 중인 EC2에 mount 하기

2번에서 가져온 EBS를 인스턴스에 mount하기 위해서는 사전 설치할게 필요한데, nvme라는 패키지이다.

yum install -y nvme-cli

대강 EBS 목록 가져오는 패키지라고 생각하면 된다.

일단 위의 패키지를 인스턴스에 설치한 후에

nvme list

명령을 실행하면, 현재 인스턴스에 붙어있는 EBS의 정보가 출력된다.

위와 같이 나오고, 딱 보면 알겠지만, SN항목이 2번에서 찾은 volume ID이다.

 

그러니 우리는 volume ID를 이용해서 해당 EBS의 정보를 가져올 수 있고,

그 정보를 사용하여 mount 해주면 된다.

 

마운트하기 전에 알아야할 사항이 있는데, 파일시스템은 parted하여 사용해야 한다는 것이다.

다만..이 부분은 설명하기도 복잡하기 때문에 그냥 넘어가도록 하겠다.

 

해당 항목을 확인하려면 아래의 명령어를 실행해보면 된다.

lsblk -f

위의 nvme0n1을 parted 한게 nvme0n1p1이고 파일시스템은 xfs를 사용한다.

 

그리고 해당 파일 시스템을 내가 원하는 경로에 마운트해주면 끝이다.

mount -t xfs /dev/nvme0n1p1 /TEST

xfs 파일시스템인 /dev/nvme0n1p1(EBS)를 /TEST 경로에 mount.

 


 

위의 과정을 스크립트로 짜면 아래와 같다.

 

INSTANCE_ID=`aws ec2 describe-instances --filters "Name=tag:Name,Values=test111" "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].[InstanceId]" --output text`

 

result=`/usr/local/bin/aws ec2 describe-volumes --region us-east-2 --filters "Name=tag:Name,Values=test222" "Name=attachment.instance-id,Values=${INSTANCE_ID}" --query "Volumes[*].{ID:VolumeId}" --output text`

 

vol_name=$result
parsing_vol_name=${vol_name:4}
l_dev_name=`nvme list | grep $parsing_vol_name | awk '{print $1}' | head -n 1`
dev_name="${l_dev_name}p1"
mount -t xfs ${l_dev_name} /TEST # 마운트가 안되는 경우가 있는데 이 경우엔 포멧해주고 하면 된다. mkfs.xfs -f 'devicename'

 

위의 스크립트를 잘 활용하면, 태그를 이용해 손쉽게 인스턴스에 EBS를 연결해 사용할 수 있다.

오늘은 여기까지.

 

 

 

 

 

 

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.