As a cloud administrator, you can create and manage plug-in based snapshots of Google Cloud Platform (GCP) disks in Automation Assembler.
If you need to create a backup of a disk, you can use the Snapshot resource in your cloud templates. You can attach the Snapshot resource to any type of disk. You can also create a new instance or disk using a snapshot. After the snapshot is created, you can log in to your Google Cloud Console to see the snapshot.
The following section contains some example cloud templates for using snapshots.
Creating a snapshot of a boot disk
The following cloud template shows how you might take a snapshot of a boot disk that is attached to an Instance. In this example, you use a compute helper, a network helper, an image helper, and a flavor helper.
formatVersion: 1
inputs: {}
resources:
Allocations_Image_1:
type: Allocations.Image
properties:
image: ubuntu
Allocations_Network_1:
type: Allocations.Network
properties:
networkType: existing
Allocations_Compute_1:
type: Allocations.Compute
properties:
accountType: gcp
Allocations_Flavor_1:
type: Allocations.Flavor
properties:
flavor: small
mysql:
type: Idem.GCP.COMPUTE.INSTANCE
properties:
name: mysql
zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.id}
account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
project: ${resource.Allocations_Compute_1.selectedCloudAccount.additionalProperties.gcp.project}
network_interfaces:
- name: nic0
stack_type: IPV4_ONLY
subnetwork: ${'/projects/' + resource.Allocations_Compute_1.selectedCloudAccount.additionalProperties.gcp.project + '/regions/' + resource.Allocations_Compute_1.selectedRegion.id + '/subnetworks/' + resource.Allocations_Network_1.selectedSubnet.name}
disks:
- device_name: ${resource.mysql-boot-disk.name}
source: ${resource.mysql-boot-disk.resource_id}
boot: true
- boot: false
device_name: ${resource.mssql-attached-disk.name}
source: ${resource.mssql-attached-disk.resource_id}
machine_type: ${'/projects/' + resource.Allocations_Flavor_1.selectedCloudAccount.additionalProperties.gcp.project + '/zones/' + resource.Allocations_Compute_1.selectedPlacementCompute.id + '/machineTypes/' + resource.Allocations_Flavor_1.selectedInstanceTypeName}
mssql-attached-disk:
type: Idem.GCP.COMPUTE.DISK
properties:
name: attached-disk
account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
size_gb: 1
project: ${resource.Allocations_Flavor_1.selectedCloudAccount.additionalProperties.gcp.project}
zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.name}
type: ${'/projects/' + resource.Allocations_Flavor_1.selectedCloudAccount.additionalProperties.gcp.project + '/zones/' + resource.Allocations_Compute_1.selectedPlacementCompute.id + '/diskTypes/pd-extreme'}
mysql-boot-disk:
type: Idem.GCP.COMPUTE.DISK
properties:
name: mysql-boot-disk
account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
size_gb: 12
project: ${resource.Allocations_Flavor_1.selectedCloudAccount.additionalProperties.gcp.project}
zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.name}
type: ${'/projects/' + resource.Allocations_Flavor_1.selectedCloudAccount.additionalProperties.gcp.project + '/zones/' + resource.Allocations_Compute_1.selectedPlacementCompute.id + '/diskTypes/pd-balanced'}
mysql-disk-snapshot:
type: Idem.GCP.COMPUTE.SNAPSHOT
dependsOn: ''
properties:
name: mysql-boot-disk-snapshot
account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
source_disk: ${resource.mysql-boot-disk.resource_id}
You use bindings to pass in the resource_id of mysql-boot-disk to the Snapshot resource.
Creating a new nstance from a snapshot
The following cloud template shows how to create a new instance from a snapshot. In this example, you also use a compute helper, image helper, network helper, and flavor helper.
atVersion: 1
inputs:
disk-snapshot-Id:
type: string
title: Disk Snapshot Link id
resources:
Allocations_Image_1:
type: Allocations.Image
properties:
image: ubuntu
Allocations_Network_1:
type: Allocations.Network
properties:
networkType: existing
Allocations_Compute_1:
type: Allocations.Compute
properties:
accountType: gcp
Allocations_Flavor_1:
type: Allocations.Flavor
properties:
flavor: small
mysql:
type: Idem.GCP.COMPUTE.INSTANCE
properties:
name: mysql-from-snapshot
zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.id}
account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
project: ${resource.Allocations_Compute_1.selectedCloudAccount.additionalProperties.gcp.project}
network_interfaces:
- name: nic0
stack_type: IPV4_ONLY
subnetwork: ${'/projects/' + resource.Allocations_Compute_1.selectedCloudAccount.additionalProperties.gcp.project + '/regions/' + resource.Allocations_Compute_1.selectedRegion.id + '/subnetworks/' + resource.Allocations_Network_1.selectedSubnet.name}
disks:
- device_name: ${resource.restored-disk.name}
source: ${resource.restored-disk.resource_id}
boot: true
machine_type: ${'/projects/' + resource.Allocations_Flavor_1.selectedCloudAccount.additionalProperties.gcp.project + '/zones/' + resource.Allocations_Compute_1.selectedPlacementCompute.id + '/machineTypes/' + resource.Allocations_Flavor_1.selectedInstanceTypeName}
restored-disk:
type: Idem.GCP.COMPUTE.DISK
properties:
name: restored
account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
disk_name: restored-boot
zone: ${resource.Allocations_Compute_1.selectedPlacementCompute.id}
source_snapshot: ${input.disk-snapshot-Id}
boot: true
You use input parameters to allow users to input the snapshot-Id of the snapshot they want to use for the boot disk.