CycleCloud는 VM에서 다른 CycleCloud 특정 구성이 발생하기 전에 첫 번째 부팅 시 VM(가상 머신)을 구성하는 방법으로 cloud-init를 지원합니다. Cloud-init를 사용하는 것은 CycleCloud(HPC 스케줄러)에서 관리하는 소프트웨어를 설치하기 전에 VM의 측면(예: 네트워킹, yum/apt 미러 등)을 구성하는 효과적인 방법입니다.
다음 예제에서는 클러스터 템플릿의 특성을 사용하여 부팅할 때 실행할 bash 스크립트를 CloudInit
지정하는 방법을 보여줍니다.
[node scheduler]
CloudInit = '''#!/bin/bash
echo "cloud-init works" > /tmp/cloud-init.txt
'''
비고
클러스터 템플릿에서 따옴표로 묶은 삼중 문자열을 사용하여 bash 또는 YAML 스크립트와 같은 여러 줄 문자열을 지정합니다.
경고
Azure의 모든 OS 이미지가 cloud-init를 지원하는 것은 아닙니다. Cloud-init를 지원하는 이미지와 광범위한 지원을 위한 타임라인에 대한 자세한 내용은 Azure의 가상 머신에 대한 cloud-init 지원을 참조하세요.
UI를 사용하여 cloud-init 설정
CycleCloud UI는 cloud-init 편집을 지원합니다. 클러스터를 만들거나 편집할 때 Cloud-Init 탭을 사용하여 클러스터의 각 노드에 대한 cloud-init 스크립트를 편집할 수 있습니다. CycleCloud UI의 편집기에서 모든 텍스트 입력을 허용합니다. Python, 셸 스크립트 또는 YAML에 대한 구문 강조 표시를 제공합니다.
Cloud-init 순서 지정 및 오류 처리
지정된 CycleCloud 노드의 CloudInit
경우 CycleCloud는 VM을 프로비전하고 cloud-init 가 완료될 때까지 기다렸다가 다른 구성을 시작합니다. 노드에서 CloudInit
을 지정했지만 CycleCloud가 운영 체제에 대한 cloud-init 지원을 감지하지 않으면, 노드는 오류 상태로 전환되고 CycleCloud에 그 이유를 전달합니다. 스크립트가 CloudInit
실행되지 않는 경우(예: 스크립팅 오류 또는 구문 오류로 인해) 노드는 오류 상태로 전환되고 cloud-init에서 보고한 오류를 CycleCloud에 릴레이합니다.
cloud-init가 오류 없이 완료될 때 CycleCloud는 평소와 같이 VM을 계속 구성합니다.
중요합니다
CycleCloud는 cloud-init 스크립트를 자동으로 병합하지 않습니다. cloud-init 스크립트를 [node defaults]
에 지정하고 기본값에서 파생된 노드가 있을 경우, [node defaults]
의 cloud-init 스크립트가 덮어쓰게 됩니다. 코드를 공유하려면 스크립트를 수동으로 병합하는 것이 좋습니다. 또는 포함 파일 사용자 데이터 형식을 사용하여 cloud-init 에서 처리할 URL 목록을 포함할 수 있습니다.