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.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. 
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 
.jinjaextension or a Python template file ending in the.pyextension. - A
schema file 
ending in the 
.jinja.schemaextension for a Jinja template or thepy.schemaextension 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.