cloud-init에 대해 자세히 알아보기
적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합
cloud-init에 대해 자세히 알아보거나 심층적으로 문제를 해결하려면 작동 방식을 이해해야 합니다. 이 문서에서는 중요한 부분을 강조하고 Azure 사양에 대해 설명합니다.
cloud-init이 범용 이미지에 포함되고 해당 이미지에서 VM이 생성되면 초기 부팅 중에 구성이 처리되고 5단계를 거쳐 실행됩니다. 이러한 단계는 cloud-init가 해당 구성을 적용하는 시점을 보여 줍니다.
Cloud-Init 구성 이해
플랫폼에서 실행되도록 VM을 구성하려면 cloud-init를 사용하여 여러 구성을 적용합니다. 상호 작용하는 기본 구성은 여러 형식을 지원하는 User data
(customData)입니다. 자세한 내용은 사용자 데이터 형식 및 cloud-init 21.2 문서. 다른 구성을 위해 스크립트(/var/lib/cloud/scripts)를 추가하고 실행할 수도 있습니다.
미리 구성된 Azure Marketplace 이미지
일부 구성은 cloud-init과 함께 제공되는 Azure Marketplace 이미지로 이미 준비되어 있습니다.
클라우드 데이터 원본 - cloud-init에는 클라우드 플랫폼과 상호 작용할 수 있는 코드가 포함되어 있으며 이러한 코드를 ‘데이터 원본’이라고 합니다. Azure의 cloud-init 이미지에서 VM이 생성되면 cloud-init은 Azure 데이터 원본을 로드하며 Azure 메타데이터 엔드포인트와 상호 작용하여 VM별 구성을 가져옵니다.
런타임 구성(/run/cloud-init)
이미지 구성(/etc/cloud)(예:
/etc/cloud/cloud.cfg
/etc/cloud/cloud.cfg.d/*.cfg
) Azure에서 이 구성이 사용되는 경우의 예로, cloud-init이 있는 Linux OS 이미지에는 Azure 데이터 원본 지시문이 있는 것이 일반적입니다. 즉, cloud-init에 사용해야 하는 데이터 원본을 알려주므로 이 구성을 사용하면 cloud-init 시간이 절약됩니다.sudo cat /etc/cloud/cloud.cfg.d/90_dpkg.cfg
# to update this file, run dpkg-reconfigure cloud-init datasource_list: [ Azure ]
Cloud-init 부팅 단계(구성 처리)
cloud-init를 사용하여 VM을 프로비전하는 경우 5개의 구성 부팅 단계가 있습니다. 이러한 단계의 출력은 로그에 표시됩니다.
생성기 단계: cloud-init systemd 생성기가 시작되고, cloud-init이 부팅 목표에 포함되어야 함을 확인한 후 해당하는 경우 cloud-init을 사용합니다.
Cloud-init 로컬 단계: 여기에서 cloud-init은 로컬 “Azure” 데이터 원본을 찾아서 cloud-init이 Azure와 상호 작용할 수 있도록 하며, 대체 항목을 포함한 네트워킹 구성을 적용합니다.
Cloud-init 시작 단계(네트워크): 네트워킹이 온라인 상태여야 하며 NIC 및 경로 테이블 정보가 생성되어야 합니다. 이 단계에서는
/etc/cloud/cloud.cfg
의cloud_init_modules
에 나열된 모듈이 실행됩니다. Azure의 VM이 탑재되고, 사용 후 삭제 디스크가 포맷되며, 호스트 이름이 다른 작업과 함께 설정됩니다.다음은 몇 가지
cloud_init_modules
입니다.- migrator - seed_random - bootcmd - write-files - growpart - resizefs - disk_setup - mounts - set_hostname - update_hostname - ssh
이 단계가 끝나면 cloud-init은 VM이 성공적으로 프로비전되었음을 알리는 신호를 Azure 플랫폼으로 보냅니다. 일부 모듈은 실패했을 수 있지만 일부 모듈 실패로 인해 프로비전 실패가 자동으로 발생하는 것은 아닙니다.
Cloud-init 구성 단계: 이 단계에서는
cloud_config_modules
에 정의되고/etc/cloud/cloud
.cfg에 나열된 모듈이 실행됩니다.Cloud-init 최종 단계: 이 단계에서는
cloud_final_modules
에 정의되고/etc/cloud/cloud.cfg
.cfg에 나열된 모듈이 실행됩니다. 여기에는 패키지 설치 및 스크립트 실행 등 부팅 프로세스를 실행하는 동안 늦게 실행해야 하는 모듈이 있습니다.- 이 단계에서는
/var/lib/cloud/scripts
아래의 디렉터리에 스크립트를 배치하여 실행할 수 있습니다.per-boot
- 이 디렉터리 내의 스크립트는 재부팅할 때마다 실행됩니다.per-instance
- 이 디렉터리 내의 스크립트는 새 인스턴스가 처음 부팅될 때 실행됩니다.per-once
- 이 디렉터리 내의 스크립트는 한 번만 실행됩니다.
- 이 단계에서는