외부 호스트에 템플릿 저장

이 문서에서는 로컬 머신 대신 인터넷의 다른 위치에서 호스팅된 외부 템플릿을 배포에서 사용하는 방법을 설명합니다.

템플릿을 인터넷의 외부 호스트에 저장하고 구성 내에서 이러한 템플릿을 호출할 수 있습니다. 템플릿을 외부에서 호스팅하면 로컬로 템플릿을 저장하는 것에 비해 몇 가지 이점이 있습니다.

  • 템플릿을 다른 사람과 쉽게 공유할 수 있습니다.
  • 구성에 항상 최신 템플릿이 사용되도록 보장할 수 있습니다.
  • 관련 가져오기 및 스키마를 자동으로 관리할 수 있습니다.

Deployment Manager는 개발자가 구성을 다시 배포할 때마다 항상 외부 템플릿의 최신 버전을 가져옵니다. 개발자가 템플릿을 유지 관리하는 경우, 해당 배포는 항상 최신 상태여야 합니다. Deployment Manager는 또한 다른 종속 템플릿이 외부 템플릿에서 참조될 경우 이러한 템플릿의 가져오기 작업을 처리합니다.

예시

이 구성은 외부 템플릿을 가져옵니다.

resources:
- name: my-frontend
  type: gs://my-frontend-templates/webserver-frontend.jinja

시작하기 전에

외부 템플릿 호스팅

Google Cloud Storage 또는 GitHub와 같은 공개적으로 액세스 가능한 위치에서 외부 템플릿을 호스팅할 수 있습니다. 파일에 대한 URL이 있고 템플릿에 대한 액세스 권한이 있는 한, Deployment Manager가 이를 다운로드할 수 있습니다. 파일이 스키마를 사용하여 다른 템플릿을 가져오는 경우, 동일한 기본 URL에서 해당 템플릿을 호스팅해야 합니다.

Google Cloud Storage

Google Cloud Storage에서 템플릿을 호스팅하려면 다음 안내를 따르세요.

  1. 템플릿에 대한 버킷을 만들거나 기존 버킷을 사용합니다.
  2. 템플릿 및 관련 템플릿 파일(예: 스키마)을 버킷에 업로드합니다.
  3. 템플릿이 속해 있는 프로젝트 대신 다른 Google Cloud Platform 프로젝트의 템플릿을 사용하려면, 이러한 액세스를 허용하도록 액세스 제어를 설정합니다.

Google Cloud Storage에서 템플릿을 호스팅할 경우, 해당 Cloud Storage 버킷 또는 특정 템플릿에서 액세스 제어 옵션을 설정할 수 있기 때문에 템플릿에 액세스할 수 있는 사용자를 제어할 수 있습니다.

반면에, 다른 공개적으로 액세스 가능한 URL에서 템플릿을 호스팅하기 위해서는 템플릿의 액세스 범위를 넓게 지정해야 합니다.

공개적으로 액세스 가능한 URL

또는 템플릿이 공개적으로 액세스 가능한 경우, Google Cloud Storage 외부에 있는 외부 템플릿을 호스팅할 수 있습니다. 예를 들어 GitHub에서 템플릿을 호스팅하고 GitHub URL을 사용하여 템플릿을 참조할 수 있습니다.

특히 GitHub의 경우, Deployment Manager가 HTML GitHub 페이지 대신 템플릿을 가져오도록 원시 GitHub URL을 제공해야 합니다. 예를 들어 원시 URL은 다음과 같습니다.

https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/jinja/vm_template.jinja

외부 템플릿 호출

로컬 템플릿을 호출할 때와 같이 외부 템플릿을 호출하지만, 템플릿 파일에 대한 전체 URL을 유형으로 제공합니다. 예를 들면 다음과 같습니다.

resources:
- name: my-salt-cluster
  type: gs://v2/saltstack/salt_cluster.jinja

GitHub URL의 경우:

resources:
- name: my-salt-cluster
  type: https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/vm_template.jinja

외부 템플릿이 다른 템플릿을 가져오는 경우 또는 동반된 스키마가 있는 경우에는 동일 디렉터리 또는 상대 하위 디렉터리에 관련 파일을 저장하고, 상대 URL과 함께 이러한 다른 템플릿을 포함할 수 있습니다. Deployment Manager는 기본 URL 기준의 상대 경로를 사용해서 이러한 다른 템플릿을 찾습니다.

예를 들어 다음과 같은 구성이 사용될 수 있습니다.

resources:
- name: my-salt-cluster
  type: gs://v2/saltstack/salt_cluster.jinja

그리고 이 파일을 가져온 salt_cluster.jinja.schema라는 스키마 파일이 존재합니다.

imports:
- path: minion.py
- path: master.py
- path: examples/source/example.py

이 경우 Deployment Manager는 이 템플릿의 모든 필수 파일을 자동으로 다운로드하고 가져옵니다.