[컴] aws 에서 cloud-init 을 이용해서 ebs attach

 

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

  1. cloud init debugging 방법 : Debugging cloud-init — cloud-init 22.2.2 documentation

Reference

  1. amazon linux 2023 에서 fs_setup이 가능한 듯 보인다.
  1. amazon ec2 - cloud-init: delay disk_setup and fs_setup - Stack Overflow : volume attachment 가 instance 가 완전히 실행이 된 이후에 되는 경우가 있다. 그 경우에 대한 fs_setup을 위해서 reboot 을 하게 하는 cloud-config 를 보여준다. sleep 에 대한 이야기도 여기에 있다.

댓글 없음:

댓글 쓰기