다음을 통해 공유


cloud-init에 대해 자세히 알아보기

적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합

cloud-init에 대해 자세히 알아보거나 더 깊은 수준에서 문제를 해결하려면 작동 방식을 이해해야 합니다. 이 문서에서는 중요한 부분을 강조 표시하고 Azure 세부 정보를 설명합니다.

cloud-init가 일반화된 이미지에 포함되고 해당 이미지에서 VM이 만들어지면 구성을 처리하고 초기 부팅 중에 5단계를 통해 실행됩니다. 이러한 단계에서는 cloud-init에서 해당 구성을 적용하는 시점을 보여 줍니다.

Cloud-Init 구성 이해

플랫폼에서 실행되도록 VM을 구성하려면 cloud-init를 사용하여 여러 구성을 적용합니다. 상호 작용하는 기본 구성은 User data 여러 형식을 지원하는 (customData)입니다. 자세한 내용은 User-Data Formats 및 cloud-init 21.2 설명서를 참조하세요. 또한 다른 구성에 대한 스크립트(/var/lib/cloud/scripts)를 추가하고 실행할 수 있습니다.

미리 구성된 Azure Marketplace 이미지

일부 구성은 cloud-init와 함께 제공되는 Azure Marketplace 이미지에 이미 적용되어 있습니다.

  • 클라우드 데이터 원본 - cloud-init에는 클라우드 플랫폼과 상호 작용할 수 있는 코드가 포함되어 있으며, 이러한 코드를 'datasources'라고 합니다. 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 이미지에는 cloud-init에서 사용해야 하는 데이터 원본을 알려주는 Azure 데이터 원본 지시문이 있는 것이 일반적입니다. 이 구성은 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개의 구성 부팅 단계가 있습니다. 이러한 단계의 출력은 로그에 표시됩니다.

  1. 생성기 단계: cloud-init 시스템 생성기가 시작되고 cloud-init가 부팅 목표에 포함되어야 하며, 그렇다면 cloud-init를 사용하도록 설정합니다.

  2. Cloud-init 로컬 단계: 여기서 cloud-init는 cloud-init에서 Azure와 인터페이스하고 대체를 비롯한 네트워킹 구성을 적용할 수 있는 로컬 "Azure" 데이터 원본을 찾습니다.

  3. Cloud-init init Stage(네트워크): 네트워킹은 온라인 상태여야 하며 NIC 및 경로 테이블 정보를 생성해야 합니다. 이 단계에서는 나열된 cloud_init_modules/etc/cloud/cloud.cfg 모듈이 실행됩니다. 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 플랫폼에 보냅니다. 일부 모듈이 실패했을 수 있지만 모든 모듈 오류가 자동으로 프로비저닝 실패로 이어지지는 않습니다.

  4. Cloud-init 구성 단계: 이 단계에서는 .cfg에 cloud_config_modules 정의되고 나열된 모듈이 /etc/cloud/cloud실행됩니다.

  5. Cloud-init 최종 단계: 이 마지막 단계에서는 에 cloud_final_modules/etc/cloud/cloud.cfg나열된 모듈이 실행됩니다. 여기서는 패키지 설치 및 스크립트 실행 등 부팅 프로세스 실행에서 늦게 실행해야 하는 모듈입니다.

    • 이 단계에서는 아래의 디렉터리에 배치하여 스크립트를 실행할 수 있습니다./var/lib/cloud/scripts
      • per-boot - 이 디렉터리 내의 스크립트, 다시 부팅할 때마다 실행
      • per-instance - 새 인스턴스가 처음 부팅될 때 이 디렉터리 내의 스크립트가 실행됩니다.
      • per-once - 이 디렉터리 내의 스크립트는 한 번만 실행됩니다.

다음 단계

cloud-init 문제 해결