Insights of Deployment Manager

tudip-logo

Tudip

25 June 2019

A Deployment Manager template is just like a decorated REST API call. Deployment manager has various providers which you can check in Supported GCP Type Providers.

Most of the time we use DM template to create the resources and to manage the created ones, but besides creating the resources, the DM can perform a lot more tasks i.e many of us don’t even know that we can perform CRUD operations using it. We can use RESTful CRUD API as DM’s type provider and can run it through the YAML configuration.

Take an example of listing the bigquery datasets:

DM template (YAML):

resources:

  • name: ‘datasets’
  • action: ‘gcp-types/bigquery-v2:bigquery.datasets.list’

outputs:

  • name: ‘datasetId’
  • value: “$(ref.datasets.datasets[0].datasetReference.datasetId)”

Sample output:

The fingerprint of the deployment is pxH0OAUgf1t5DJizeKDbog==
Waiting for create [operation-1553968016330-585535f9b0ff0-182923f2-98618d64]…done.
Create operation operation-1553968016330-585535f9b0ff0-182923f2-98618d64 completed successfully.

NAME TYPE STATE ERRORS INTENT

datasets gcp-types/bigquery-v2:bigquery.datasets.list COMPLETED []

OUTPUTS VALUE

datasetId mydataset

listing-the-bigquery-datasets-1024x113

Here I’ve displayed name of one dataset, if you want to display all the datasets you can
modify value in the output as “$(ref.datasets.datasets)”.

You can delete a compute engine instance through a Deployment Manager template:

DM template (YAML):

resources:

  • name: ‘deleteInstance’
  • action: ‘gcp-types/compute-v1:compute.instances.delete’

properties:

  • zone: us-central1-a
  • instance: ‘instance-1’

Sample output:

The fingerprint of the deployment is 27qQSDdH5Yb5Muom5kVIcg==
Waiting for create [operation-1553968492292-585537bf9a90a-705ee8e3-db1d34e6]…done.
Create operation operation-1553968492292-585537bf9a90a-705ee8e3-db1d34e6 completed successfully.

NAME TYPE STATE ERRORS INTENT

‘deleteInstance’ gcp-types/compute-v1:compute.instances.delete COMPLETED []

delete-a-compute-engine-instance-1024x101

Extending the Deployment Manager with Type Providers

What if you want to use an API which is not included in the Supported GCP Type Providers.
You can create a new provider of your own, the following example shows how to create a new provider for Datastore API.

Syntax:

gcloud beta deployment-manager type-providers create  --descriptor-url='

Command:

gcloud beta deployment-manager type-providers create datastore-data-api --descriptor-url='https://datastore.googleapis.com/$discovery/rest?version=v1'

Sample output:

Waiting for insert [operation-1553971666356-58554392a0a99-2d35f571-746e87fa]…done.
Created type_provider [datastore-data-api].

You can check the provider you created by:

Syntax:

gcloud beta deployment-manager types list --provider

Command:

gcloud beta deployment-manager types list --provider datastore-data-api

Sample output:

provider:

  • qwiklabs-gcp-40f1056280b69e21/datastore-data-api

types:

  • projects
  • projects.indexes
  • projects.operations

Extending-Deployment-Manager-with-Type-Providers-1024x165

Request a quote