AWS EC2 재부팅 시, 사용자 데이터(User Data) 적용

2020. 4. 9. 11:36IT/AWS

728x90

1. 설명

AWS EC2를 시작할 때, 아래와 같이 사용자 데이터 스크립트 및 cloud-init 명령을 넣어 실행하게 만들 수 있다. 

이는 첫 부팅에만 실행된다. 본문에서는 EC2를 재부팅할 때, 사용자 데이터를 적용하고자 한다. 첫 부팅에서 잘 실행되는 사용자 데이터는 재부팅 시에는 실행되지 않는다.

재부팅 시에 사용자 데이터를 적용하려면, MIME 멀티파트 파일을 사용해야 한다. cloud-init 패키지에서 사용자 데이터를 실행하는 빈도를 재정의한 후, 파일에서 사용자 스크립트를 실행해야 적용된다.

 

현재 실행되고 있는 EC2를 중지하고, 다음과 같이 사용자 데이터를 편집한다. EC2를 중지하고 다시 시작하면, EC2 스토어 볼륨은 지워진다. 이점을 유의해서 작업해야 한다.

 

2. 구현

본 스크립트는 EC2가 재부팅 시, 사용자 계정을 생성하고 EFS와 마운트한다. 현재 실행되고 있는 다수의 EC2에 적용하기 위해 사용자 데이터 편집을 사용하였다.

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
sudo useradd test
echo 'test!' | passwd --stdin test
mkdir /home/test/s3-user-data
sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport EFS_IP:/ /home/test/s3-user-data
sudo - test
chmod -R 755 /home/test/s3-user-data
chown -R test:test /home/test/s3-user-data
--//

 

text/cloud-config는 SCRIPTS-USER 파라미터를 ALWAYS로 설정하여 cloud-init 패키지에서 사용자 데이터를 실행하는 빈도를 재정의한다. text/x-shellscript는 cloud-init cloud_final_modules 모듈에서 실행할 실제 사용자 스크립트를 넣는다.

300x250