7. Orchestration Document (YAML) Version
Orchestration Document (YAML) Description
구성하고자 하는 Orchestration에 필요한
파라미터 값들
구성하고자 하는 Orchestration 내용 정의
오케스트레이션이 끝나고 리턴할 데이터 정의
YAML (YAML Ain’t Markup Language)
데이터 표현을 중심으로 한 가벼운 마크업 언어
공백문자를 이용한 들여쓰기로 구조체 구분
콜론(:) 기호를 이용하여 키:값 구분
오케스트레이션이라는 단어 엄청 낯이 익은 단어일텐데요
음악에서 협연을 할 때 쓰이는 단어입니다.
실제 네이버 영어사전에서 검색하면 보시는 바와 같은 내용이 나오구요.
두번째 줄에 있는 뜻에 주목하시면 될 것 같습니다.
이해를 돕기 위해 오케스트라 구성도를 좀 가져와봤는데요
기본적으로 앞에 바이올린, 비올라, 첼로 구성을 앞에 가져가고 뒤에는 관악기, 그리고 타악기, 피아노로 쭉 구성하게 됩니다.
이때 연주하는 음악이나 지휘자의 음악을 해석하는 방식에 따라 각각의 요소, 즉, 악기들의 구성이 달라지는데요.
이런 방식으로 서비스를 하는데 필요한 모든 요소들을 정의하고 이를 바탕으로 환경을 구성하는 것을
클라우드에서도 똑같이 오케스트레이션이라고 합니다.
Heat은 오픈스택 플랫폼에서 이 오케스트레이션을 담당하는 서비스이구요.
이 오케스트레이션의 내용을 정의한 것을 템플릿이라고 하고
이 템플릿에 정의된 리소스들의 모음을 스택이라고 합니다.
이는 아마존 웹서비스나 오픈스택에서도 동일하게 사용되는 용어입니다.
그럼 이 템플릿이 어떻게 구성되는지 한번 보시겠습니다.
먼저 오픈스택에서 이 템플릿파일은 YAML 파일로 정의되는데요
YAML파일의 특징은 보시는 바와 같습니다
(YAML 언급)
크게 히트 템플릿 버전, 그리고 템플릿 설명, 파라메터들, 리소스, 결과값으로 정의를 합니다.
히트 템플릿 버전은 연월일 형식으로 정의를 하는데 이 버전은 사용자가 막 정의하는게 아니라
몇개가 사전에 정의되어 있습니다.
바로 오픈스택 버전에 따라 사전에 정의 되어 있는되요. 이유는 오픈스택의 버전에 따라 히트에서 제공하는 함수가 조금씩 달라지기 때문입니다.
오픈스택의 버전에 따른 히트 템플릿 버전은 다음 페이지에서 설명을 하겠습니다.
다음 디스크립션에 템플릿에 대한 간단한 설명이 나오구요.
파라미터에서는 이 템플릿을 실행할 때 동적으로 받을 데이터값들입니다.
이 예제에서는 이미지 이름, Flavor 종류, 그리고 SSL 공개키, 인스턴스를 연결할 프라이빗 네트워크 입니다.
파라미터로 값을 넘겨주지 않으면 각각의 파라미터에 선언된 디폴트값으로 셋팅이 되게 돕니다.
다음 리소스에는 실질적으로 이 템플릿을 이용해 구성할 구성 요소들이 정의가 되는데요.
화면에서 보이는 템플릿파일은 싱글 인스턴스를 하나 그냥 띄워보는 예제이기 때문에 인스턴스만 정의되어 있습니다.
각각의 리소스는 처음 리소스에 대한 타입을 선언하구, 그 다음은 리소스에 필요한 파라미터를 전달하는 방식으로 정의합니다.
화면의 예제는 Nova의 Server 타입, VM이 정의되어 있는 타입이구 인스턴스를 생성할 때 사용할 OS 이미지, Flavor, SSL키, 그리고 네트워크를 파라미터에서 전달받은 값으로 넘겨주고 있습니다.
마지막으로 아웃풋에서는 리소스들이 성공적으로 생성된 후 리턴할 데이터를 선언합니다.
여기서는 인스턴스의 IP 값을 리턴해주고 있네요.
리턴값이 왜 필요한지 의아하실 수 있는데
지금은 간단한 템플릿이여서 하나의 템플릿에서 끝나지만
실제로는 리소스의 내용이 너무 길어진다던지 아니면 재사용을 위해 구성요소를 별도의 템플릿파일로 떼서 커스텀 타입을 정의할 수 있는데요.
이때 각각의 커스텀타입이 실행이 완료되고 반한된 리턴값을 다른 리소스에서 사용할 때 사용되어 집니다.
오픈 스택 버전별로 정의된 Heat 템플릿 버전입니다.
잠깐 앞으로 돌아가서 예제를 보면 가장 하단의 get_attr 같은 부분이 Heat에서 제공해주는 함수인데요.
이부분이 버전별로 조금씩 달라지기 때문에 현재 오픈스택의 버전에 따라 화면과 같이 Heat 템플릿 버전도 맞춰서 적용해주어야 합니다.
다음으로 설명할 내용은 앞서 잠깐 언급했던 커스텀 타입들에 대한 내용인데요.
실제 오케스트레이션 구성에 필요한 내용이 정의 되어 있는 오케스트레이션 템플릿 파일들이 있고
lib 폴더 아래에 보시면 이 오케스트레이션 템플릿을 실행하는데 필요한 환경변수 파일과 따로 모듈화한 커스텀 타입들이 들어있습니다.
env.yaml 파일 내에 커스텀 타입명들과 그리고 파일들의 위치가 정의되어있는데 오케스트레이션 템플릿은 이 환경 파일을 바탕으로 필요한 커스텀 타입들을 찾아 사용합니다.
세번째 항목은 리소스에서 커스텀 타입을 사용하는 부분이구요.
Heat 오케스트레이션 템플릿은 Horizon 웹 UI나 CLI 를 통해서 실행할 수 있습니다.
다만 웹상에서는 environment 내용과 parameter 내용이 하단의 Environment Source를 통해 선언되어야 하는 반면
CLI 상에서는 environment와 parameter를 구별해서 정의해줄 수 있습니다.
두번째 CLI 스크린샷을 보시면 Heat stack-create 를 통해 practice-autoscaling 이라는 스택을 생성하구요.
-f 옵션으로 템플릿 파일 위치를 그리고 –e 파일로 Environment 파일의 위치, 마지막으로 –P 옵션을 이용해 파라미터를 넘겨주고 있습니다.
Heat 오케스트레이션 템플릿은 Horizon 웹 UI나 CLI 를 통해서 실행할 수 있습니다.
다만 웹상에서는 environment 내용과 parameter 내용이 하단의 Environment Source를 통해 선언되어야 하는 반면
CLI 상에서는 environment와 parameter를 구별해서 정의해줄 수 있습니다.
두번째 CLI 스크린샷을 보시면 Heat stack-create 를 통해 practice-autoscaling 이라는 스택을 생성하구요.
-f 옵션으로 템플릿 파일 위치를 그리고 –e 파일로 Environment 파일의 위치, 마지막으로 –P 옵션을 이용해 파라미터를 넘겨주고 있습니다.
실제 제가 작성한 템플릿 파일들을 한번 보시겠습니다.
싱글 인스턴스 생성과 로드 밸런싱, 그리고 오토 스케일링 세개의 예제파일을 보시겠습니다.