Cloud-Init 인스턴스의 아키텍처 개요
Cloud-Init Instance는 클라우드 플랫폼에서 생성된 Linux 인스턴스가 부팅될 때 자동으로 초기화되는 시스템입니다. 이는 클라우드 메타데이터, 사용자 제공 데이터(user-data), 공급업체 데이터(vendor-data)를 읽어 네트워킹, 스토리지, SSH 키, 패키지 설치 등을 자동으로 구성합니다.
5단계 부팅 프로세스
Cloud-Init는 Detect, Local, Network, Config, Final 단계를 순차 실행합니다. Detect 단계에서는 ds-identify 도구가 실행되어 인스턴스가 실행 중인 플랫폼을 식별합니다. Local 단계는 최대한 빨리 실행되며 네트워크 구성을 결정하고(메타데이터 또는 fallback DHCP), 첫 부팅인 경우 이전 설정을 제거합니다. Network 단계에서는 사용자 데이터를 전체 처리하고 디스크 설정 및 마운트 작업을 수행하므로 네트워크가 필수입니다. Config 단계는 설정 모듈만 실행하고, Final 단계에서는 패키지 설치, 설정 관리 플러그인, 사용자 정의 스크립트가 실행됩니다.
데이터소스 추상화 레이어
Cloud-Init는 데이터소스 추상화 기반 클래스를 통해 AWS EC2, Azure, Google Cloud, OpenStack, Oracle 등 30개 이상 플랫폼을 지원합니다. 각 플랫폼은 고유한 메타데이터 전달 방식(링크-로컬 웹서버, DMI 데이터, 설정 드라이브 등)을 사용하지만, Cloud-Init는 통일된 인터페이스로 이를 처리합니다.
첫 부팅 판별 메커니즘과 실무 주의점
Cloud-Init는 내부 캐시(인스턴스 ID 저장)를 통해 첫 부팅 여부를 판단합니다. 부팅 시 저장된 인스턴스 ID와 현재 실행 중인 인스턴스 ID가 일치하지 않으면 첫 부팅으로 간주하고 per-instance 설정을 실행하며, 일치하면 per-boot 설정만 실행합니다. 이미지 복제 후 인스턴스 재사용, 메타데이터 서비스 불안정, 물리 기기 공격 등의 경우 예기치 않은 동작이 발생할 수 있으므로 manual_cache_clean 옵션으로 동작 방식을 조정해야 합니다.