cloud-init 실습 예제 — Ubuntu 24.04 LTS amd64 + QEMU NoCloud

목적별 최소 예제 7개는 minimal/ 디렉터리에 있습니다.
hostname, 고정 IP, SSH 공개 키, 시간대, 패키지, 파일 생성, 첫 부팅 명령을 각각 나눴습니다.
minimal/README.txt의 환경·접속 전제와 확인 범위를 먼저 읽습니다.

user-data의 REPLACE_WITH_YOUR_SSH_PUBLIC_KEY를 본인의 .pub 파일 한 줄로 교체합니다.
개인 키는 넣지 않습니다. 이 예제의 ops는 비밀번호 없이 전체 sudo 권한을 갖습니다.
nginx 설치에는 게스트에서 Ubuntu 저장소로의 DNS와 HTTP/HTTPS 연결이 필요합니다.

기본 실습: cloud-localds seed.img user-data meta-data
네트워크 지정: cloud-localds --network-config=network-config seed.img user-data meta-data
network-config.dhcp 또는 network-config.static을 network-config로 복사해 사용합니다.
정적 IP 예제는 QEMU 기본 user 네트워크(10.0.2.0/24) 전용입니다.
브리지/AHV/VMware 등에서는 MAC, IP, 접두사, 게이트웨이, DNS를 환경에 맞춥니다.
VM의 첫 부팅 전에 cloud image와 seed.img를 연결합니다.

runcmd는 인스턴스별 한 번 실행합니다. user-data 수정과 재부팅만으로 다시 적용되지 않습니다.
재시험은 원본 이미지에서 새 부팅 디스크와 고유 instance-id로 진행합니다.
cloud-init clean은 운영 서버에서 실행하지 않습니다.
이 압축 파일에 개인 키나 실행 결과는 포함하지 않습니다.

참고: https://docs.cloud-init.io/en/latest/reference/datasources/nocloud.html
