Insights of Deployment Manager
Insights of Deployment Manager
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
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 []
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