앱 개발 중에는 복잡한 아키텍처가 필요한 경우가 많습니다. 배포의 복제와 문제해결을 쉽게 만들려면 구성을 템플릿으로 분리하는 것이 좋습니다.
템플릿은 일련의 리소스를 정의하는 별도의 파일입니다. 여러 배포에서 템플릿을 재사용할 수 있어 복잡한 배포 사이에서 일관성을 유지할 수 있습니다.
Python 또는 Jinja2를 사용하여 Deployment Manager용 템플릿을 만들 수 있습니다. Python을 사용하면 앱을 확장할 때 유연성과 기능이 향상되므로 Python 템플릿을 사용하는 것이 좋습니다.
Python 템플릿
Python으로 템플릿을 작성할 경우 템플릿이 다음과 같은 요구사항을 충족해야 합니다.
템플릿은 Python 3.x로 작성되어야 합니다.
템플릿에서
GenerateConfig(context)또는generate_config(context)라는 메서드를 정의해야 합니다. 동일한 템플릿에서 두 메서드 이름을 모두 사용하면generate_config()메서드가 우선 적용됩니다.context객체에는 배포에 대한 메타데이터와 배포 이름, 현재 프로젝트 등의 환경이 포함됩니다. 이후 단계에서 이러한 배포 관련 변수를 사용합니다.메서드가 Python 사전을 반환해야 합니다.
샘플 템플릿 살펴보기
샘플 저장소에서 vm-template.py를 엽니다.
cd deploymentmanager-samples/examples/v2/step_by_step_guide/step5_create_a_template/python
nano vm-template.py # use your preferred text editor
이 템플릿은 이전 샘플의 첫 번째 가상 머신(VM)을 정의합니다.
두 번째 VM을 정의하는 두 번째 템플릿 vm-template-2.py를 엽니다.
두 템플릿 모두에서 MY_PROJECT를 프로젝트 ID로 바꿉니다.
템플릿 가져오기
템플릿을 만든 후에 구성으로 가져와야 합니다. 새 two-vms.yaml을 엽니다.
cd deploymentmanager-samples/examples/v2/step_by_step_guide/step5_create_a_template/python
nano two-vms.yaml # use your preferred text editor
이 구성 파일에는 VM 템플릿 두 개(vm-template.py 및 vm-template-2.py)를 호출하는 새로운 imports 섹션이 있습니다.
리소스 이름에 대한 유의사항
템플릿을 사용할 때 리소스 이름은 템플릿에서 제공된 name 필드를 사용하여 정의되며 구성 파일에 있는 이름이 아닙니다.
예를 들어 이 경우 VM 인스턴스는 the-first-vm 및 the-second-vm 템플릿에 있는 이름을 사용하여 생성됩니다. 구성에서 정의된 vm-1 및 vm-2 값은 템플릿의 인스턴스화 이름을 지정하는 데 사용되지만 리소스 이름에는 사용되지 않습니다.
구성 저장 및 배포
구성을 배포하려면 다음 명령어를 실행합니다.
gcloud deployment-manager deployments create deployment-with-templates --config two-vms.yaml
배포를 보려면 다음 명령어를 실행합니다.
gcloud deployment-manager deployments describe deployment-with-templates
미리보기: 여러 템플릿 사용
다음 단계에서 구성이 템플릿 한 개만 호출하여 모든 리소스를 배포할 수 있도록 템플릿을 결합합니다.
배포 삭제
진행하기 전에 비용이 청구되지 않도록 배포를 삭제하는 것이 좋습니다. 다음 단계에는 이 배포가 필요하지 않습니다. 다음 명령어를 실행하여 배포를 삭제합니다.
gcloud deployment-manager deployments delete deployment-with-templates