MachineImageArgs

data class MachineImageArgs(val description: Output<String>? = null, val guestFlush: Output<Boolean>? = null, val machineImageEncryptionKey: Output<MachineImageMachineImageEncryptionKeyArgs>? = null, val name: Output<String>? = null, val project: Output<String>? = null, val sourceInstance: Output<String>? = null) : ConvertibleToJava<MachineImageArgs>

Example Usage

Machine Image Basic

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.Instance;
import com.pulumi.gcp.compute.InstanceArgs;
import com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;
import com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;
import com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;
import com.pulumi.gcp.compute.MachineImage;
import com.pulumi.gcp.compute.MachineImageArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new Instance("vm", InstanceArgs.builder()
.machineType("e2-medium")
.bootDisk(InstanceBootDiskArgs.builder()
.initializeParams(InstanceBootDiskInitializeParamsArgs.builder()
.image("debian-cloud/debian-11")
.build())
.build())
.networkInterfaces(InstanceNetworkInterfaceArgs.builder()
.network("default")
.build())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
var image = new MachineImage("image", MachineImageArgs.builder()
.sourceInstance(vm.selfLink())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
}
}

Compute Machine Image Kms

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.Instance;
import com.pulumi.gcp.compute.InstanceArgs;
import com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;
import com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;
import com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;
import com.pulumi.gcp.kms.KeyRing;
import com.pulumi.gcp.kms.KeyRingArgs;
import com.pulumi.gcp.kms.CryptoKey;
import com.pulumi.gcp.kms.CryptoKeyArgs;
import com.pulumi.gcp.organizations.OrganizationsFunctions;
import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
import com.pulumi.gcp.projects.IAMMember;
import com.pulumi.gcp.projects.IAMMemberArgs;
import com.pulumi.gcp.compute.MachineImage;
import com.pulumi.gcp.compute.MachineImageArgs;
import com.pulumi.gcp.compute.inputs.MachineImageMachineImageEncryptionKeyArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var vm = new Instance("vm", InstanceArgs.builder()
.machineType("e2-medium")
.bootDisk(InstanceBootDiskArgs.builder()
.initializeParams(InstanceBootDiskInitializeParamsArgs.builder()
.image("debian-cloud/debian-11")
.build())
.build())
.networkInterfaces(InstanceNetworkInterfaceArgs.builder()
.network("default")
.build())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
var keyRing = new KeyRing("keyRing", KeyRingArgs.builder()
.location("us")
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
var cryptoKey = new CryptoKey("cryptoKey", CryptoKeyArgs.builder()
.keyRing(keyRing.id())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
final var project = OrganizationsFunctions.getProject();
var kms_project_binding = new IAMMember("kms-project-binding", IAMMemberArgs.builder()
.project(project.applyValue(getProjectResult -> getProjectResult.projectId()))
.role("roles/cloudkms.cryptoKeyEncrypterDecrypter")
.member(String.format("serviceAccount:service-%s@compute-system.iam.gserviceaccount.com", project.applyValue(getProjectResult -> getProjectResult.number())))
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.build());
var image = new MachineImage("image", MachineImageArgs.builder()
.sourceInstance(vm.selfLink())
.machineImageEncryptionKey(MachineImageMachineImageEncryptionKeyArgs.builder()
.kmsKeyName(cryptoKey.id())
.build())
.build(), CustomResourceOptions.builder()
.provider(google_beta)
.dependsOn(kms_project_binding)
.build());
}
}

Import

MachineImage can be imported using any of these accepted formats

$ pulumi import gcp:compute/machineImage:MachineImage default projects/{{project}}/global/machineImages/{{name}}
$ pulumi import gcp:compute/machineImage:MachineImage default {{project}}/{{name}}
$ pulumi import gcp:compute/machineImage:MachineImage default {{name}}

Constructors

Link copied to clipboard
fun MachineImageArgs(description: Output<String>? = null, guestFlush: Output<Boolean>? = null, machineImageEncryptionKey: Output<MachineImageMachineImageEncryptionKeyArgs>? = null, name: Output<String>? = null, project: Output<String>? = null, sourceInstance: Output<String>? = null)

Functions

Link copied to clipboard
open override fun toJava(): MachineImageArgs

Properties

Link copied to clipboard
val description: Output<String>? = null

A text description of the resource.

Link copied to clipboard
val guestFlush: Output<Boolean>? = null

Specify this to create an application consistent machine image by informing the OS to prepare for the snapshot process. Currently only supported on Windows instances using the Volume Shadow Copy Service (VSS).

Link copied to clipboard

Encrypts the machine image using a customer-supplied encryption key. After you encrypt a machine image with a customer-supplied key, you must provide the same key if you use the machine image later (e.g. to create a instance from the image) Structure is documented below.

Link copied to clipboard
val name: Output<String>? = null

Name of the resource.

Link copied to clipboard
val project: Output<String>? = null

The ID of the project in which the resource belongs. If it is not provided, the provider project is used.

Link copied to clipboard
val sourceInstance: Output<String>? = null

The source instance used to create the machine image. You can provide this as a partial or full URL to the resource.