https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/user-data.html
서버 재부팅시 자동으로 서비스 올라가는 스크립트를 작성할 것이다.
ssh password 로그인 활성화
#!/bin/bash
sudo -i
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl restart sshd.service
# Create group 'user01'
groupadd user01
# Create user 'user01' with password '1234'
useradd -g user01 -G wheel -u 1002 user01
echo '1234' | passwd --stdin user01
echo 'user01 ALL=NOPASSWD:ALL' >> /etc/sudoers
Cloud-init
먼저 cloud-init이 ec2에 설치되어야 한다. Amazon-linux2 기준으로 yum list installed | grep cloud-init 명령어로 패키지가 설치되어있는지 확인한다.
EC2의 User data 주의사항
1. sudo 기준이다.
2. root폴더 기준이다. (ec2에 연결하면 home/user01/ 이기 때문에 너무도 당연히 user01 폴더가 기준인줄 알았다.)
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
su - user01 -c "cd /var/www/app/; pm2 start app.js"
--//--
스크립트 누적 폴더( /var/lib/cloud/instances/instance-id/ )
사용자 데이터 스크립트는 처리 시 /var/lib/cloud/instances/instance-id/에서 복사 및 실행됩니다. 스크립트는 실행 후에는 삭제가 되지 않습니다.
즉, EC2의 User Data는 콘솔상에서 지우거나 변경해도 완전히 삭제된 것이 아니라는 것이다.
user01@ip-10-0-10-10 ] $ cd /var/lib/cloud/instances
user01@ip-10-0-10-10 instances] $ ls
i-1111111111111 i-22222222222222
user01@ip-10-0-10-10 instances] $ cd i-22222222222222
user01@ip-10-0-10-10 i-22222222222222] $ ls
cloud-config.txt handlers scripts user-data.txt
user01@ip-10-0-10-10 instances] $ cd scripts
user01@ip-10-0-10-10scripts] $ ls
first_script.txt
서버상에서 캐싱이 되어 있으므로 스크립트를 지우거나 변경할 경우, 서버단에서 직접 접속해서 캐싱을 지워야 한다.
/var/lib/cloud/instances/instance-id/ 경로에 있는 first_script.txt를 반드시 지워야한다.
안그러면 구 버전과 신 버전 스크립트가 동시에 돌아가는 일이 발생한다 ㅠ.ㅠ
'IaC' 카테고리의 다른 글
[Terraform] 배포 및 플래그 (1) | 2024.06.11 |
---|---|
[Terraform] 디렉터리 구조 (0) | 2024.06.11 |
[Terraform] 용어 (0) | 2024.04.02 |
[Terraform] 환경 구성 (1) | 2024.04.02 |
IaC 도구 비교 (1) | 2024.04.02 |