애플리케이션 디자인 센터를 사용하면 코드를 개별 구성요소 모듈로 재구성하거나 먼저 카탈로그에 게시하지 않고도 기존 멀티 제품Google Cloud Terraform 구성을 애플리케이션 템플릿으로 있는 그대로 가져올 수 있습니다.
카탈로그 구성요소로 가져와 디자인 캔버스에서 연결하는 단일 제품 Terraform 모듈과 달리, 다중 제품 Terraform 구성은 여러 Google Cloud 제품에서 리소스를 프로비저닝하는 루트 모듈입니다. 단일 제품 모듈을 구성요소로 가져오려면 구성요소 가져오기를 참고하세요.
기존 Terraform 구성을 App Design Center로 가져오면 다음을 수행할 수 있습니다.
- 기존 Terraform 구성을 App Design Center 애플리케이션 수명 주기 관리로 가져오고 배포된 리소스를 App Hub에 자동으로 등록합니다.
- 변경 불가능한 애플리케이션 템플릿 버전을 만들어 Terraform 구성의 버전을 지정합니다.
- Infrastructure Manager를 사용하여 애플리케이션을 미리 보고 배포하거나 Terraform 파일을 Cloud Storage로 내보냅니다.
템플릿 버전을 만든 후에는 다음 방법 중 하나로 사용할 수 있습니다.
- 직접 배포: 버전에서 애플리케이션을 만들고 미리보기하여 평가 보고서를 가져온 후 배포합니다. 템플릿을 카탈로그에 게시하거나 공유하거나 공유 템플릿을 먼저 찾을 필요가 없습니다.
- 카탈로그를 통해 재사용: 버전을 카탈로그에 게시하고 복합 애플리케이션 템플릿에 구성요소로 추가한 후 복합 템플릿의 Terraform을 내보냅니다. 자세한 내용은 카탈로그에 애플리케이션 템플릿 게시를 참조하세요.
시작하기 전에
이 문서의 태스크를 수행하려면 관리자에게 다음 표에 나열된 대로 앱 지원 폴더 또는 관리 프로젝트에 필요한 역할을 부여해 달라고 요청하세요.
| 작업 | 필요한 역할 |
|---|---|
| 애플리케이션 템플릿 및 템플릿 버전 만들기, 가져오기, 스냅샷 만들기, 내보내기 | 애플리케이션 디자인 센터 관리자 (roles/designcenter.admin) 또는애플리케이션 디자인 센터 사용자 ( roles/designcenter.user) |
| 애플리케이션 만들기, 배포, 내보내기 | 애플리케이션 관리자 (roles/designcenter.applicationAdmin) 또는애플리케이션 편집자 ( roles/designcenter.applicationEditor) |
역할에 대한 자세한 내용은 Identity and Access Management로 액세스 제어를 참조하세요.
Terraform 루트 모듈 (.tf 파일 및 .json 파일과 같은 지원 파일)을 다음 소스 중 하나에 저장합니다.
- Cloud Storage 버킷
- Developer Connect 저장소입니다.
- 공개 Git 저장소
- 파일이 포함된 로컬 YAML 또는 JSON 파일입니다.
Terraform을 애플리케이션 템플릿으로 가져오기
Google Cloud CLI를 사용하여 다음 단계를 완료하여 애플리케이션 템플릿을 만들고, 기존 Terraform 구성을 가져오고, 변경 불가능한 템플릿 버전을 만듭니다.
스페이스에서 애플리케이션 템플릿을 만듭니다.
gcloud design-center spaces application-templates create APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --display-name=DISPLAY_NAME다음을 바꿉니다.
APPLICATION_TEMPLATE: 만들려는 애플리케이션 템플릿의 ID입니다.PROJECT: 관리 프로젝트 ID입니다.LOCATION: 위치 ID입니다.SPACE: 스페이스 ID입니다.DISPLAY_NAME: 애플리케이션 템플릿의 표시 이름입니다.
자세한 내용은 gcloud design-center spaces application-templates create를 참조하세요.
다음 소스 중 하나에서 애플리케이션 템플릿으로 Terraform 구성을 가져옵니다.
Cloud Storage 버킷에서 가져오려면 다음 명령어를 실행합니다.
gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --gcs-uri=GCS_URI \ --raw-terraform-import-enabledDeveloper Connect 저장소에서 가져오려면 다음 명령어를 실행합니다.
gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --developer-connect-repo-uri=DEVELOPER_CONNECT_REPO_URI \ --developer-connect-branch=DEVELOPER_CONNECT_BRANCH \ --developer-connect-dir=DEVELOPER_CONNECT_DIR \ --raw-terraform-import-enabled공개 Git 저장소에서 가져오려면 다음 명령어를 실행합니다.
gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --git-source-repo=GIT_SOURCE_REPO \ --git-source-ref-tag=GIT_SOURCE_REF_TAG \ --git-source-dir=GIT_SOURCE_DIR \ --raw-terraform-import-enabledIaCModule페이로드가 포함된 로컬 YAML 또는 JSON 파일에서 가져오려면 다음 명령어를 실행합니다.gcloud design-center spaces application-templates ingest-iac APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --iac-module-from-file=IAC_MODULE_FILE \ --raw-terraform-import-enabled
다음을 바꿉니다.
APPLICATION_TEMPLATE: 애플리케이션 템플릿 ID입니다.PROJECT: 관리 프로젝트 ID입니다.LOCATION: 위치 ID입니다.SPACE: 스페이스 ID입니다.GCS_URI: Terraform 파일이 포함된 Cloud Storage URI입니다(gs://BUCKET_NAME/FOLDER_PATH형식).DEVELOPER_CONNECT_REPO_URI: Developer Connect 저장소 링크 URI입니다(projects/PROJECT/locations/LOCATION/connections/CONNECTION/gitRepositoryLinks/REPO_LINK형식).DEVELOPER_CONNECT_BRANCH: Developer Connect 저장소의 브랜치 이름입니다. 또는--developer-connect-ref-tag또는--developer-connect-commit-sha를 지정합니다.DEVELOPER_CONNECT_DIR: Developer Connect 저장소의 디렉터리 경로입니다.GIT_SOURCE_REPO: 공개 Git 저장소의 HTTPS URL입니다.GIT_SOURCE_REF_TAG: 공개 Git 저장소의 Git 참조 또는 태그입니다.GIT_SOURCE_DIR: 공개 Git 저장소의 디렉터리 경로입니다.IAC_MODULE_FILE: Terraform 파일이 포함된 로컬 YAML 또는 JSON 파일의 경로입니다.
애플리케이션 템플릿의 스냅샷을 만들어 애플리케이션을 만들고 배포하는 데 사용할 수 있는 변경 불가능한 애플리케이션 템플릿 버전을 만듭니다.
gcloud design-center spaces application-templates snapshot APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE다음을 바꿉니다.
APPLICATION_TEMPLATE: 애플리케이션 템플릿 ID입니다.PROJECT: 관리 프로젝트 ID입니다.LOCATION: 위치 ID입니다.SPACE: 스페이스 ID입니다.
출력에는 생성된 애플리케이션 템플릿 버전 URI가
projects/PROJECT/locations/LOCATION/spaces/SPACE/applicationTemplates/APPLICATION_TEMPLATE/revisions/REVISION형식으로 포함됩니다.
템플릿에서 애플리케이션 만들기 및 배포
가져온 Terraform 템플릿의 스냅샷 버전을 만든 후 애플리케이션 초안을 만들고 입력 변수 값을 제공하고 애플리케이션을 배포할 수 있습니다.
애플리케이션 템플릿 버전에서 애플리케이션 초안을 만듭니다.
gcloud design-center spaces applications create APPLICATION \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --source-application-template-revision=SOURCE_APPLICATION_TEMPLATE_REVISION \ --deployment-project=DEPLOYMENT_PROJECT \ --deployment-region=DEPLOYMENT_REGION \ --app-parameters=APP_PARAMETERS \ --scope-type=SCOPE_TYPE다음을 바꿉니다.
APPLICATION: 만들려는 애플리케이션의 ID입니다.PROJECT: 관리 프로젝트 ID입니다.LOCATION: 위치 ID입니다.SPACE: 스페이스 ID입니다.SOURCE_APPLICATION_TEMPLATE_REVISION:snapshot명령어로 반환된 애플리케이션 템플릿 버전 URI입니다.DEPLOYMENT_PROJECT: Terraform 리소스가 배포되는 대상 프로젝트 ID입니다.DEPLOYMENT_REGION: Terraform 리소스가 배포되는 대상 리전입니다.APP_PARAMETERS: 선택사항. Terraform 루트 모듈의 입력 변수 키-값 쌍 (예:key=KEY,value=VALUE) 또는 애플리케이션 매개변수가 포함된 YAML 또는 JSON 파일의 경로입니다.SCOPE_TYPE: 애플리케이션의 범위(regional또는global)입니다.
애플리케이션 관리에 대한 자세한 내용은 애플리케이션 관리를 참조하세요.
애플리케이션을 미리 보고 배포합니다. 단계별 안내는 애플리케이션 배포를 참조하세요.
Cloud Storage로 Terraform 코드 내보내기
애플리케이션 템플릿, 애플리케이션 템플릿 버전 또는 애플리케이션에서 Cloud Storage 버킷으로 Terraform 파일을 내보낼 수 있습니다. 자체 CI/CD 도구로 Terraform을 실행하거나 버전 제어에 사본을 보관하려면 내보내세요.
애플리케이션 템플릿 초안에서 Terraform 파일을 내보내려면 다음 명령어를 실행합니다.
gcloud design-center spaces application-templates export APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI애플리케이션 템플릿 버전에서 Terraform 파일을 내보내려면 다음 명령어를 실행합니다.
gcloud design-center spaces application-templates revisions export REVISION \ --application-template=APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI애플리케이션에서 Terraform 파일을 내보내려면 (구성된 애플리케이션 매개변수로 채워진
zz_adc_inputs.auto.tfvars.json포함) 다음 명령어를 실행합니다.gcloud design-center spaces applications export APPLICATION \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --artifact-location-gcs-uri=ARTIFACT_LOCATION_GCS_URI
다음을 바꿉니다.
APPLICATION_TEMPLATE: 애플리케이션 템플릿 ID입니다.REVISION: 애플리케이션 템플릿 버전 ID입니다.APPLICATION: 애플리케이션 ID입니다.PROJECT: 관리 프로젝트 ID입니다.LOCATION: 위치 ID입니다.SPACE: 스페이스 ID입니다.ARTIFACT_LOCATION_GCS_URI:gs://BUCKET_NAME/EXPORT_FOLDER형식의 대상 Cloud Storage URI입니다.
다음 단계
- 애플리케이션 관리
- 애플리케이션 배포
- Terraform을 다운로드하고 배포.
- Google Cloud 콘솔에서 Terraform 코드 내보내기
- 카탈로그에 애플리케이션 템플릿 게시
- 구성요소를 가져옵니다.