Getting started with Deployment Manager

You can use Deployment Manager to create a set of
Google Cloud Platform (GCP) resources and manage them as a unit, called a
deployment. For example, if your team's development environment needs two
virtual machines (VMs) and a BigQuery database, you can define these
resources in a configuration file, and use Deployment Manager to create,
change, or delete these resources. You can make the configuration file part of
your team's code repository, so that anyone can create the same environment
with consistent results.

In this tutorial, you'll use Google Cloud Deployment Manager to create a virtual machine (VM)
instance. You'll define the VM in a basic configuration file, and use that
configuration file to create a deployment.

To complete this tutorial, you must be comfortable running commands in a Linux,
macOS, or Windows terminal.

For an interactive version of this tutorial, open it in Cloud Shell, where you
can edit the sample configuration and deploy your resources without installing
anything on your workstation. If you want to follow the tutorial on your own
computer, skip to the next section.

Before you begin

Note: If you don't plan to keep the
resources that you create in this procedure, create a project instead of
selecting an existing project. After you finish these steps, you can
delete the project, removing all resources associated with the project.

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Put all your resources under `resources:`. For each resource, you need:
# - The type of resource. In this example, the type is a Compute VM instance.
# - An internal name for the resource.
# - The properties for the resource. In this example, for VM instances, you add
# the machine type, a boot disk, network information, and so on.
#
# For a list of supported resources,
# see https://cloud.google.com/deployment-manager/docs/configuration/supported-resource-types.
resources:
- type: compute.v1.instance
name: quickstart-deployment-vm
properties:
# The properties of the resource depend on the type of resource. For a list
# of properties, see the API reference for the resource.
zone: us-central1-f
# Replace [MY_PROJECT] with your project ID
machineType: https://www.googleapis.com/compute/v1/projects/[MY_PROJECT]/zones/us-central1-f/machineTypes/f1-micro
disks:
- deviceName: boot
type: PERSISTENT
boot: true
autoDelete: true
initializeParams:
# See a full list of image families at https://cloud.google.com/compute/docs/images#os-compute-support
# The format of the sourceImage URL is: https://www.googleapis.com/compute/v1/projects/[IMAGE_PROJECT]/global/images/family/[FAMILY_NAME]
sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-9
# Replace [MY_PROJECT] with your project ID
networkInterfaces:
- network: https://www.googleapis.com/compute/v1/projects/[MY_PROJECT]/global/networks/default
# Access Config required to give the instance a public IP address
accessConfigs:
- name: External NAT
type: ONE_TO_ONE_NAT

This basic configuration file describes a deployment that contains one
virtual machine instance with the following properties:

Machine type: f1-micro

Image family: debian-9

Zone: us-central1-f

Root persistent disk: boot

A randomly assigned external IP address

Replace [MY_PROJECT] with your project ID

Save the file as vm.yaml.

Deploy the resources

To deploy your resources, use the gcloud command-line tool to create a new
deployment, using your configuration file: