기본 구성 파일은 간단한 작업 부하의 경우에 충분할 수 있지만, 복잡한 아키텍처 또는 재사용할 계획인 구성의 경우에는 구성을 템플릿으로 세분화할 수 있습니다.
템플릿은 구성에서 하나의 유형으로 가져와서 사용되는 개별 파일입니다. 구성에서 원하는 만큼 템플릿을 사용할 수 있습니다.
템플릿을 사용하면 여러 배포에서 사용 및 재사용할 수 있는 여러 조각으로 구성으로 분할할 수 있습니다. 템플릿은 요구에 따라 일반화하거나 특정화할 수 있습니다. 또한 템플릿을 사용하면 템플릿 속성, 환경 변수, 모듈과 같은 기능과 기타 템플릿 기능을 활용하여 동적 구성 및 템플릿 파일을 만들 수 있습니다.
자체 배포에 사용할 수 있는 템플릿 예시는 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 예시를 참조하세요.
- 템플릿 속성을 사용하여 콘텐츠를 추상화합니다.
- 환경 변수를 사용하여 프로젝트 및 배포에 대한 정보를 채웁니다.
- 프로젝트에 템플릿을 복합 유형으로 영구 추가합니다.