Creating a Deployment Manager-based solution
When creating Service Catalog solutions for users in your organization, you can create a Deployment Manager (DM) solution, which users launch using a Deployment Manager template. After you create a solution, you can share it with your users by adding it to catalogs.
Before you begin
You must have the Catalog Admin (
roles/cloudprivatecatalogproducer.admin
) OR Catalog Manager (roles/cloudprivatecatalogproducer.manager
) role for the Google Cloud organization associated with the Google Cloud project which has Service Catalog enabled. If you don't have this role, contact your Organization Administrator to request access.-
Enable the Cloud Deployment Manager and Compute Engine APIs.
Preparing your deployment template
To create a Deployment Manager solution in Service Catalog, you first prepare a Deployment Manager template zip file to upload, which must contain the following files:
- A Jinja template file ending in the
.jinja
extension or a Python template file ending in the.py
extension. - A
schema file
ending in the
.jinja.schema
extension for a Jinja template or thepy.schema
extension for a Python template.
The name of the zip file must match the names of both the schema and Jinja or
Python files. For example, if the zip file is named
android-dev-environment.zip
, the Jinja schema file inside the zip must be
named android-dev-environment.jinja.schema
and the Jinja template must be
named android-dev-environment.jinja
.
The following code sample illustrates a schema file to create a deployment form:
info:
title: Single Google Compute Engine Machine
author: Google Inc.
description: Creates a virtual machine based on zone and machine type selection.
required:
- machinetype
- zone
properties:
machinetype:
title: Machine type
type: string
enum:
- n2-standard-2
- n2-standard-4
- n2-standard-8
- n2-highmem-2
- n2-highmem-4
- n2-highmem-8
- n2-highcpu-2
- n2-highcpu-4
- n2-highcpu-8
zone:
title: Zone
type: string
enum:
- us-central1-a
- us-central1-c
- us-east1-b
- us-east1-c
- us-west1-a
- us-west1-b
- us-west1-c
The following code sample illustrates a Jinja file to create a persistent VM:
# Creates a Persistent VM
resources:
- type: compute.v1.instance
name: vm-{{ env["deployment"] }}
properties:
zone: {{ properties["zone"] }}
# Note the machineType definition at the end. n2-custom-4-5120 specifies n2 machine family with 4 CPUs and 5GB (5120 MB) of RAM. For custom machine types, refer to https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type
machineType: https://www.googleapis.com/compute/v1/projects/{{ env["project"] }}/zones/{{ properties["zone"] }}/machineTypes/{{ properties["machinetype"] }}
disks:
- deviceName: boot
type: PERSISTENT
boot: true
autoDelete: true
initializeParams:
diskName: disk-{{ env["deployment"] }}
sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-9
networkInterfaces:
- network: https://www.googleapis.com/compute/v1/projects/{{ env["project"] }}/global/networks/default
# Access Config required to give the instance a public IP address
accessConfigs:
- name: External NAT
type: ONE_TO_ONE_NAT
Creating the solution in Service Catalog
To create a Deployment Manager template-based solution:
Go to the Service Catalog Admin Solutions page in the Google Cloud console.
Go to the Solutions pageClick Select to choose the Google Cloud project.
Click CREATE SOLUTION. In the drop-down list, select Create a DM solution.
Enter a name, description, and tagline for your solution. The tagline is a short description of a solution that users see as they browse Service Catalog.
Upload a zip file, containing the files for a deployment configuration.
Optionally, upload an icon for the solution. The recommended dimensions for an icon are 80 by 80 pixels.
Optionally, enter a support link and contact information for the creator.
Optionally, add a link to the documentation for the solution.
Click CREATE.
The following screenshot illustrates creating a DM-based solution:
Next steps
- Assign the solution to a catalog, so that users in your organization can access and deploy the solution.