기본 구성 파일은 간단한 작업 부하의 경우에 충분할 수 있지만, 복잡한 아키텍처 또는 재사용할 계획인 구성의 경우에는 구성을 템플릿으로 세분화할 수 있습니다.
템플릿은 구성에서 하나의 유형으로 가져와서 사용되는 개별 파일입니다. 구성에서 원하는 만큼 템플릿을 사용할 수 있습니다.
템플릿을 사용하면 여러 배포에서 사용 및 재사용할 수 있는 여러 조각으로 구성으로 분할할 수 있습니다. 템플릿은 요구에 따라 일반화하거나 특정화할 수 있습니다. 또한 템플릿을 사용하면 템플릿 속성, 환경 변수, 모듈과 같은 기능과 기타 템플릿 기능을 활용하여 동적 구성 및 템플릿 파일을 만들 수 있습니다.
자체 배포에 사용할 수 있는 템플릿 예시는 Deployment Manager GitHub 저장소를 참조하세요.
시작하기 전에
- 이 가이드의 명령줄 예시를 사용하려면 'gcloud' 명령줄 도구를 설치합니다.
- 이 가이드의 API 예시를 사용하려면 API 액세스를 설정합니다.
- 기본 구성을 만드는 방법을 확인합니다.
템플릿 구문
Jinja 2.10.x 또는 Python 3.x로 템플릿을 작성할 수 있습니다. Jinja는 YAML 구문과 더 밀접하게 연결되므로, YAML에 익숙한 경우에는 Jinja로 템플릿을 작성하는 것이 더 쉬울 수 있습니다.
또한 Python으로 템플릿 파일을 작성하고 Python을 활용해서 템플릿의 일부를 프로그래매틱 방식으로 생성할 수 있습니다. 예를 들어 Python 라이브러리를 사용하여 템플릿 정의 형식을 지정할 수 있습니다. Python에 익숙한 경우 이 형식이 더 적합할 수 있습니다.
Deployment Manager에서는 Jinja 및 Python 템플릿을 모두 사용할 수 있습니다. 동일한 구성에서 두 언어로 템플릿을 가져올 수 있습니다.
기본 템플릿 만들기
템플릿은 Jinja 또는 Python으로 작성된 개발자가 생성하는 파일입니다. 다음 구성 파일을 예시로 들어 보겠습니다.
이 구성도 유효하지만, 여러 파트를 재사용 가능한 개별 템플릿 파일로 세분화하여 구성을 더 단순화할 수 있습니다. 위 구성을 기준으로 템플릿을 만들려면, 문제의 리소스 섹션을 꺼내서 새로운 Jinja 또는 Python 파일로 만듭니다.
다음 스니펫은 배포를 간소화할 수 있는 템플릿 섹션을 보여줍니다. 템플릿을 모두 보려면 GitHub에서 보기를 클릭하세요.
Jinja
Python
Python 템플릿은 다음과 같은 요구사항을 충족해야 합니다.
템플릿에서
GenerateConfig(context)또는generate_config(context)라는 메서드를 정의해야 합니다. 동일한 템플릿에서 두 메서드 이름을 모두 사용하면generate_config()메서드가 우선 시 됩니다.context객체에는 배포에 대한 메타데이터와 배포 이름, 현재 프로젝트 등의 환경이 포함됩니다. 배포 관련 환경 변수 사용 자세히 알아보기메서드가 Python 사전을 반환해야 합니다.
그 외에는 템플릿 콘텐츠를 생성하는 개발자의 몫입니다.
예시
전체 Python 예는 Deployment Manager GitHub 저장소를 참조하세요.
템플릿 가져오기
템플릿을 만든 후 사용하려면 구성 파일로 가져옵니다.
템플릿을 가져오려면 현재 디렉터리의 상대 또는 절대 경로로 이어지는 구성에 imports 섹션을 추가합니다. 예를 들어 구성 맨 위에 다음 줄을 추가하여 이전 단계의 가상 머신 템플릿을 가져올 수 있습니다.
imports:
- path: path/to/my_vm_template.jinja
파일 경로가 길면 파일 별칭으로 선택적인 name 속성을 제공할 수 있습니다. 이 이름을 사용하면 나중에 템플릿을 참조할 수 있습니다. 이름을 제공하지 않으면 path를 사용하여 템플릿을 참조할 수 있습니다.
imports:
- path: path/to/my_vm_template.jinja
name: my_renamed_template.jinja
템플릿이 Jinja 또는 Python인지 여부에 관계없이 여러 템플릿의 가져오기를 혼합하여 사용할 수 있습니다.
imports:
- path: path/to/my_vm_template.jinja
name: my_renamed_template.jinja
- path: special_vm.py
템플릿이 다른 템플릿을 종속 항목으로 사용할 경우, 구성에서 종속 템플릿도 가져옵니다.
imports:
- path: path/to/my_vm_template.jinja
- path: special_vm.py
- path: base_vm.jinja
또한 콘텐츠를 인라인하기 위해 텍스트 파일을 가져올 수도 있습니다. 예를 들어 다음 문자열로 resource_type.txt라는 파일을 만들 수 있습니다.
compute.v1.instance
이를 구성으로 가져와서 다음과 같이 콘텐츠 인라인을 제공합니다.
imports: - path: resource_type.txt resources: - name: my-vm type: {{ imports["resource_type.txt"] }} # Resolves to "compute.v1.instance" properties: zone: us-central1-a machineType: zones/us-central1-a/machineTypes/f1-micro disks: - deviceName: boot type: PERSISTENT boot: true autoDelete: true initializeParams: sourceImage: projects/debian-cloud/global/images/family/debian-9 networkInterfaces: - network: global/networks/default accessConfigs: - name: External NAT type: ONE_TO_ONE_NAT
템플릿 배포
템플릿을 가져온 후에는 이를 구성에서 유형으로 사용합니다.
Jinja
Python
템플릿 이름을 제공하지 않은 경우, 템플릿 경로를 사용하여 템플릿을 호출합니다.
imports:
- path: path/to/my_vm_template.jinja
resources:
- name: my-first-virtual-machine
type: path/to/my_vm_template.jinja
명령줄 도구를 사용하여 직접 템플릿 배포
최상위 구성 파일을 만드는 대신 Deployment Manager는 Google Cloud CLI에서 직접 템플릿을 배포할 수 있습니다.
예를 들어 다음 요청은 vm-template.jinja라는 템플릿을 배포합니다.
gcloud deployment-manager deployments create a-single-vm --template vm-template.jinja
템플릿에 템플릿 속성이 있으면 명령줄에서 --properties 플래그를 사용하여 이러한 속성을 설정할 수도 있습니다.
gcloud deployment-manager deployments create my-igm \
--template vm-template.jinja \
--properties zone:us-central1-a
다음 사항에 유의하세요.
모든 값은 YAML 값으로 파싱됩니다. 예를 들어
version: 3은 정수로 전달됩니다. 문자열로 지정하려면version: \'3\'값을 이스케이프 처리된 작은 따옴표로 묶습니다.불리언 값은 대소문자를 구분하지 않으므로
TRUE,true,True는 모두 동일하게 취급됩니다.템플릿으로 정의된 모든 필수 속성을 전달해야 합니다. 속성의 하위 집합만 제공할 수는 없습니다. 특정 속성에 기본값이 포함된 경우, 명령줄에서 해당 속성을 생략할 수 있습니다.
여러 속성을 지정하려면 쉼표로 구분된 키:값 쌍을 제공합니다. 쌍을 지정하는 순서는 중요하지 않습니다. 예를 들면 다음과 같습니다.
gcloud deployment-manager deployments create my-igm
--template vm-template.jinja
--properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9
이 명령어를 실행하면 Deployment Manager는 개발자가 제공한 템플릿을 사용하여 배포를 만듭니다. Google Cloud 콘솔 또는 gcloud CLI를 사용하여 만든 배포를 확인할 수 있습니다. 배포 보기에 대한 자세한 내용은 매니페스트 보기를 참조하세요.
다음 단계
- 프로덕션에 즉시 사용할 수 있는 템플릿 예시는 GitHub의 Cloud Foundation Toolkit 예시를 참조하세요.
- 템플릿 속성을 사용하여 콘텐츠를 추상화합니다.
- 환경 변수를 사용하여 프로젝트 및 배포에 대한 정보를 채웁니다.
- 프로젝트에 템플릿을 복합 유형으로 영구 추가합니다.