aws 에서 cloud-init 을 이용해서 ebs attach
aws 에서 ebs block 을 attach 하는 경우, instance 가 생성된 후 로그인을 하고, mkfs 를 해줘야 한다.
이것을 cloud-init 을 통해 해보려 했다.
ref. 2 에서 이야기처럼, 문제는 instance 가 run 되고 나서 ebs 가 인식되는 듯 하다. 그래서 cloud-init 시점에 mount 나 mkfs 명령어가 제대로 동작하지 않았다.
그래서 결론은 runcmd
에 sleep 을 주는 것으로
해결했다.
첫번째 시도,
disk_setup
, fs_setup
fs_setup
을 통한 방법은 ref.1 을 보면, 이제 amazon linux
에서도 지원한다고 한다. 그래서 일단 시도해봤다. 아래 cloud-config 에서
‘2nd Attempt’ 대신 1st Attempt
를 사용했다.
이 경우에는 처음 실행후, 다시 cloud-init 을 하는 경우에 mount 가 됐다.
- instance running
- login
- sudo cloud-init clean
- reboot
#cloud-config
packages:
- curl
bootcmd:
- mkdir -p /services
# ----------------
#
# 1st Attempt
#
# ----------------
# disk_setup:
# /dev/nvme1n1:
# table_type: gpt
# layout: true
# overwrite: false
#
# fs_setup:
# - label: fs1
# filesystem: ext4
# device: /dev/nvme1n1
# partition: auto
# cmd: mkfs -t %(filesystem)s -L %(label)s %(device)s
#
# mounts:
# - [ "/dev/nvme1n1", "/services"]
# ----------------
#
# 2nd Attempt
#
# ----------------
runcmd:
- chown -R admin:admin /home/admin/
- sleep 1m
- test -z "$(blkid /dev/nvme1n1)" && mkfs -t ext4 -L fds1 /dev/nvme1n1
- mount /dev/nvme1n1 /services
- echo '/dev/nvme1n1 /services auto defaults,nofail,comment=cloudconfig 0 2' >> /etc/fstab
2번째 시도, sleep 1m
약 1분 정도 sleep 을 줬다. 참고로 sleep 중에도 ssh login 은 가능했다.
이 경우 정상적으로 mount 를 완료했다.
See Also
- cloud init debugging 방법 : Debugging cloud-init — cloud-init 22.2.2 documentation
Reference
- amazon linux 2023 에서
fs_setup
이 가능한 듯 보인다.
- Customized cloud-init - Amazon Linux 2023
- 이전 amazone linux 에선
fs_setup
을 지원하지 않았다, 참고: linux - How To Use Cloud Init To mount an unformatted EBS volume - Stack Overflow
- amazon
ec2 - cloud-init: delay disk_setup and fs_setup - Stack Overflow :
volume attachment 가 instance 가 완전히 실행이 된 이후에 되는 경우가
있다. 그 경우에 대한
fs_setup
을 위해서 reboot 을 하게 하는 cloud-config 를 보여준다. sleep 에 대한 이야기도 여기에 있다.
댓글 없음:
댓글 쓰기