Intro
기본적으로 UserData는 EC2생성시에 한 번만 실행되도록 설정되어있습니다. 이는 cloud-init의 cloud_final_modules에서 기본값으로 once로 설정이 되어있기 때문입니다. 실제 EC2에 SSH로 접속하여 아래 경로를 확인해보면 config_scripts_user.once
파일이 기본적으로 구성이 되어있는것을 확인할 수 있습니다.
/var/lib/cloud/sem/config_scripts_user.once
재부팅시에도 UserData 실행하기
EC2가 초기에 생성될 때 뿐만아니라 재시작 될때도 UserData를 동작시키는 방법은 비교적 간단한데요. UserData에 아래와 같이 입력하면됩니다.( #!/bin/bash
에 원하는 bash 스크립트를 작성하면됩니다.)
UserData
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
/bin/echo "Hello World" >> /tmp/testfile.txt
--//-- ##--------------- final
위에서 보여드린 스크립트를 상세하게 설명해보겠습니다.
Content-Type이 multipart/mixed 이고 boubdary가 // 입니다.
즉, 파일과 텍스트가 혼합되어있는 형태라는 것이고 multipart의 구분을 //로 하겠다는 것입니다.
첫 --//
부분은 멀티 파트 1번, 그 다음 --//
은 멀티파트2 번, 마지막 --//--
은 끝남을 의미합니다.
중간에 cloud_final_modules
부분이 키 포인트인데요 scripts-user를 always
로 설정하여 재부팅시에도 UserData를 실행할 수 있도록 할 수 있게 되는 것입니다.
(Content-Type에 대해 궁금하시다면 다음 포스팅을 참고 하시기 바랍니다.)
https://kim-dragon.tistory.com/221
만약에 이미 생성되어있는 EC2에 1번만 UserData를 동작하도록 하고 싶다고 하면 아래와 같이 명령어를 입력하여 user-data.txt와 cloud-config.txt를 초기화하고 config_scripts_user.once파일을 삭제하여 1번만 다시 UserData가 동작하도록 구성할 수 있습니다.
# cat /dev/null > /var/lib/cloud/instances/i-*/user-data.txt
# cat /dev/null > /var/lib/cloud/instances/i-*/cloud-config.txt
# rm -rf /var/lib/cloud/sem/config_scripts_user.once
'IT > AWS' 카테고리의 다른 글
[AWS] 데이터 센터 위치는?믿거나 말거나 (목동/일산/용인/평촌) (0) | 2022.02.19 |
---|---|
[AWS] Distributed Load Testing on AWS 란? (0) | 2022.02.19 |
[Terraform] local, variable, output, data 차이 (0) | 2022.02.06 |
[AWS] Code Deploy 다중 ALB target 트래픽 제어하기 (1) | 2022.02.06 |
[AWS] Code Deploy를 사용하기 전에 꼭 알아야할 것 (feat. Loosely Coupled) (0) | 2022.01.25 |