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.