@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
614 lines • 25.4 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
* Represents long-lasting resources that are dedicated to users to runs custom
* workloads. A PersistentResource can have multiple node pools and each node
* pool can have its own machine spec.
*
* To get more information about PersistentResource, see:
*
* * [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.persistentResources)
*
* ## Example Usage
*
* ### Vertex Ai Persistent Resource
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const persistentResource = new gcp.vertex.AiPersistentResource("persistent_resource", {
* name: "example-persistent-resource",
* location: "us-central1",
* displayName: "Example persistent resource",
* resourcePools: [{
* machineSpec: {
* machineType: "n1-standard-4",
* },
* replicaCount: "1",
* }],
* });
* ```
* ### Vertex Ai Persistent Resource Autoscaling
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const persistentResource = new gcp.vertex.AiPersistentResource("persistent_resource", {
* name: "example-persistent-resource",
* location: "us-central1",
* displayName: "Example persistent resource",
* resourcePools: [{
* machineSpec: {
* machineType: "n1-standard-4",
* },
* replicaCount: "1",
* autoscalingSpec: {
* minReplicaCount: "1",
* maxReplicaCount: "2",
* },
* }],
* });
* ```
* ### Vertex Ai Persistent Resource Machine Spec
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* const persistentResource = new gcp.vertex.AiPersistentResource("persistent_resource", {
* name: "example-persistent-resource",
* location: "us-central1",
* resourcePools: [{
* machineSpec: {
* machineType: "a3-highgpu-8g",
* acceleratorCount: 8,
* acceleratorType: "NVIDIA_H100_80GB",
* },
* replicaCount: "1",
* diskSpec: {
* bootDiskSizeGb: 200,
* bootDiskType: "pd-ssd",
* },
* }],
* });
* ```
* ### Vertex Ai Persistent Resource Network
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
* import * as time from "@pulumiverse/time";
*
* // VPC network for Vertex AI peering
* const vertexNetwork = new gcp.compute.Network("vertex_network", {
* name: "vertex-network",
* autoCreateSubnetworks: false,
* });
* // Reserved IP range for Vertex AI peering
* const vertexRange = new gcp.compute.GlobalAddress("vertex_range", {
* name: "vertex-ip-range",
* purpose: "VPC_PEERING",
* addressType: "INTERNAL",
* prefixLength: 24,
* network: vertexNetwork.id,
* });
* // Service networking connection for Vertex AI
* const vertexVpcConnection = new gcp.servicenetworking.Connection("vertex_vpc_connection", {
* network: vertexNetwork.id,
* service: "servicenetworking.googleapis.com",
* reservedPeeringRanges: [vertexRange.name],
* });
* // Subnetwork for the network attachment
* const pscSubnetwork = new gcp.compute.Subnetwork("psc_subnetwork", {
* name: "psc-subnetwork",
* region: "us-central1",
* ipCidrRange: "10.0.0.0/16",
* network: vertexNetwork.id,
* });
* // Network attachment for PSC-I
* const pscAttachment = new gcp.compute.NetworkAttachment("psc_attachment", {
* name: "psc-attachment",
* region: "us-central1",
* connectionPreference: "ACCEPT_MANUAL",
* subnetworks: [pscSubnetwork.id],
* });
* const waitForDeletion = new time.Sleep("wait_for_deletion", {destroyDuration: "300s"}, {
* dependsOn: [
* pscAttachment,
* vertexVpcConnection,
* ],
* });
* const project = gcp.organizations.getProject({});
* // Grant Vertex AI service agent access to the KMS key
* const cryptoKey = new gcp.kms.CryptoKeyIAMMember("crypto_key", {
* cryptoKeyId: "example-key",
* role: "roles/cloudkms.cryptoKeyEncrypterDecrypter",
* member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),
* });
* const persistentResource = new gcp.vertex.AiPersistentResource("persistent_resource", {
* name: "example-persistent-resource",
* location: "us-central1",
* displayName: "test-persistent-resource-full",
* labels: {
* env: "test",
* },
* network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) => `projects/${project.number}/global/networks/${name}`),
* reservedIpRanges: [vertexRange.name],
* encryptionSpec: {
* kmsKeyName: "example-key",
* },
* pscInterfaceConfig: {
* networkAttachment: pscAttachment.id,
* dnsPeeringConfigs: [{
* domain: "example.com.",
* targetProject: project.then(project => project.projectId),
* targetNetwork: vertexNetwork.name,
* }],
* },
* resourcePools: [{
* id: "vpr-resource-pool",
* replicaCount: "1",
* machineSpec: {
* machineType: "n1-standard-4",
* },
* diskSpec: {
* bootDiskSizeGb: 200,
* bootDiskType: "pd-ssd",
* },
* }],
* resourceRuntimeSpec: {
* serviceAccountSpec: {
* enableCustomServiceAccount: true,
* },
* },
* }, {
* dependsOn: [
* vertexVpcConnection,
* cryptoKey,
* waitForDeletion,
* ],
* });
* ```
*
* ## Import
*
* PersistentResource can be imported using any of these accepted formats:
*
* * `projects/{{project}}/locations/{{location}}/persistentResources/{{name}}`
* * `{{project}}/{{location}}/{{name}}`
* * `{{location}}/{{name}}`
*
* When using the `pulumi import` command, PersistentResource can be imported using one of the formats above. For example:
*
* ```sh
* $ pulumi import gcp:vertex/aiPersistentResource:AiPersistentResource default projects/{{project}}/locations/{{location}}/persistentResources/{{name}}
* $ pulumi import gcp:vertex/aiPersistentResource:AiPersistentResource default {{project}}/{{location}}/{{name}}
* $ pulumi import gcp:vertex/aiPersistentResource:AiPersistentResource default {{location}}/{{name}}
* ```
*/
export declare class AiPersistentResource extends pulumi.CustomResource {
/**
* Get an existing AiPersistentResource resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: AiPersistentResourceState, opts?: pulumi.CustomResourceOptions): AiPersistentResource;
/**
* Returns true if the given object is an instance of AiPersistentResource. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj: any): obj is AiPersistentResource;
/**
* Time when the PersistentResource was created.
*/
readonly createTime: pulumi.Output<string>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
readonly deletionPolicy: pulumi.Output<string>;
/**
* The display name of the PersistentResource.
* The name can be up to 128 characters long and can consist of any UTF-8
* characters.
*/
readonly displayName: pulumi.Output<string | undefined>;
/**
* All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
*/
readonly effectiveLabels: pulumi.Output<{
[key: string]: string;
}>;
/**
* Represents a customer-managed encryption key specification that can be
* applied to a Vertex AI resource.
* Structure is documented below.
*/
readonly encryptionSpec: pulumi.Output<outputs.vertex.AiPersistentResourceEncryptionSpec | undefined>;
/**
* The `Status` type defines a logical error model that is suitable for
* different programming environments, including REST APIs and RPC APIs. It is
* used by [gRPC](https://github.com/grpc). Each `Status` message contains
* three pieces of data: error code, error message, and error details.
* You can find out more about this error model and how to work with it in the
* [API Design Guide](https://cloud.google.com/apis/design/errors).
* Structure is documented below.
*/
readonly errors: pulumi.Output<outputs.vertex.AiPersistentResourceError[]>;
/**
* The labels with user-defined metadata to organize PersistentResource.
* Label keys and values can be no longer than 64 characters
* (Unicode codepoints), can only contain lowercase letters, numeric
* characters, underscores and dashes. International characters are allowed.
* See https://goo.gl/xmQnxf for more information and examples of labels.
* **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
* Please refer to the field `effectiveLabels` for all of the labels present on the resource.
*/
readonly labels: pulumi.Output<{
[key: string]: string;
} | undefined>;
/**
* The location of the PersistentResource. eg us-central1
*/
readonly location: pulumi.Output<string | undefined>;
/**
* The ID to use for the PersistentResource, which become the final component
* of the PersistentResource's resource name.
* The maximum length is 63 characters, and valid characters
* are `/^a-z?$/`.
*/
readonly name: pulumi.Output<string>;
/**
* The full name of the Compute Engine
* [network](https://www.terraform.io/compute/docs/networks-and-firewalls#networks) to peered with
* Vertex AI to host the persistent resources.
* For example, `projects/12345/global/networks/myVPC`.
* [Format](https://www.terraform.io/compute/docs/reference/rest/v1/networks/insert)
* is of the form `projects/{project}/global/networks/{network}`.
* Where {project} is a project number, as in `12345`, and {network} is a
* network name.
* To specify this field, you must have already [configured VPC Network
* Peering for Vertex
* AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering).
* If this field is left unspecified, the resources aren't peered with any
* network.
*/
readonly network: pulumi.Output<string | undefined>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
readonly project: pulumi.Output<string>;
/**
* Configuration for PSC-I.
* Structure is documented below.
*/
readonly pscInterfaceConfig: pulumi.Output<outputs.vertex.AiPersistentResourcePscInterfaceConfig | undefined>;
/**
* The combination of labels configured directly on the resource
* and default labels configured on the provider.
*/
readonly pulumiLabels: pulumi.Output<{
[key: string]: string;
}>;
/**
* A list of names for the reserved IP ranges under the VPC network
* that can be used for this persistent resource.
* If set, we will deploy the persistent resource within the provided IP
* ranges. Otherwise, the persistent resource is deployed to any IP
* ranges under the provided VPC network.
* Example: ['vertex-ai-ip-range'].
*/
readonly reservedIpRanges: pulumi.Output<string[] | undefined>;
/**
* The spec of the pools of different resources.
* Structure is documented below.
*/
readonly resourcePools: pulumi.Output<outputs.vertex.AiPersistentResourceResourcePool[]>;
/**
* Configuration for the runtime on a PersistentResource instance.
* Structure is documented below.
*/
readonly resourceRuntimeSpec: pulumi.Output<outputs.vertex.AiPersistentResourceResourceRuntimeSpec | undefined>;
/**
* Persistent Cluster runtime information as output
* Structure is documented below.
*/
readonly resourceRuntimes: pulumi.Output<outputs.vertex.AiPersistentResourceResourceRuntime[]>;
/**
* Reserved for future use.
*/
readonly satisfiesPzi: pulumi.Output<boolean>;
/**
* Reserved for future use.
*/
readonly satisfiesPzs: pulumi.Output<boolean>;
/**
* Time when the PersistentResource for the first time entered the `RUNNING`
* state.
*/
readonly startTime: pulumi.Output<string>;
/**
* The detailed state of a PersistentResource.
* Possible values:
* PROVISIONING
* RUNNING
* STOPPING
* ERROR
* REBOOTING
* UPDATING
*/
readonly state: pulumi.Output<string>;
/**
* Time when the PersistentResource was most recently updated.
*/
readonly updateTime: pulumi.Output<string>;
/**
* Create a AiPersistentResource resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: AiPersistentResourceArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering AiPersistentResource resources.
*/
export interface AiPersistentResourceState {
/**
* Time when the PersistentResource was created.
*/
createTime?: pulumi.Input<string | undefined>;
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
deletionPolicy?: pulumi.Input<string | undefined>;
/**
* The display name of the PersistentResource.
* The name can be up to 128 characters long and can consist of any UTF-8
* characters.
*/
displayName?: pulumi.Input<string | undefined>;
/**
* All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
*/
effectiveLabels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
} | undefined>;
/**
* Represents a customer-managed encryption key specification that can be
* applied to a Vertex AI resource.
* Structure is documented below.
*/
encryptionSpec?: pulumi.Input<inputs.vertex.AiPersistentResourceEncryptionSpec | undefined>;
/**
* The `Status` type defines a logical error model that is suitable for
* different programming environments, including REST APIs and RPC APIs. It is
* used by [gRPC](https://github.com/grpc). Each `Status` message contains
* three pieces of data: error code, error message, and error details.
* You can find out more about this error model and how to work with it in the
* [API Design Guide](https://cloud.google.com/apis/design/errors).
* Structure is documented below.
*/
errors?: pulumi.Input<pulumi.Input<inputs.vertex.AiPersistentResourceError>[] | undefined>;
/**
* The labels with user-defined metadata to organize PersistentResource.
* Label keys and values can be no longer than 64 characters
* (Unicode codepoints), can only contain lowercase letters, numeric
* characters, underscores and dashes. International characters are allowed.
* See https://goo.gl/xmQnxf for more information and examples of labels.
* **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
* Please refer to the field `effectiveLabels` for all of the labels present on the resource.
*/
labels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
} | undefined>;
/**
* The location of the PersistentResource. eg us-central1
*/
location?: pulumi.Input<string | undefined>;
/**
* The ID to use for the PersistentResource, which become the final component
* of the PersistentResource's resource name.
* The maximum length is 63 characters, and valid characters
* are `/^a-z?$/`.
*/
name?: pulumi.Input<string | undefined>;
/**
* The full name of the Compute Engine
* [network](https://www.terraform.io/compute/docs/networks-and-firewalls#networks) to peered with
* Vertex AI to host the persistent resources.
* For example, `projects/12345/global/networks/myVPC`.
* [Format](https://www.terraform.io/compute/docs/reference/rest/v1/networks/insert)
* is of the form `projects/{project}/global/networks/{network}`.
* Where {project} is a project number, as in `12345`, and {network} is a
* network name.
* To specify this field, you must have already [configured VPC Network
* Peering for Vertex
* AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering).
* If this field is left unspecified, the resources aren't peered with any
* network.
*/
network?: pulumi.Input<string | undefined>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string | undefined>;
/**
* Configuration for PSC-I.
* Structure is documented below.
*/
pscInterfaceConfig?: pulumi.Input<inputs.vertex.AiPersistentResourcePscInterfaceConfig | undefined>;
/**
* The combination of labels configured directly on the resource
* and default labels configured on the provider.
*/
pulumiLabels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
} | undefined>;
/**
* A list of names for the reserved IP ranges under the VPC network
* that can be used for this persistent resource.
* If set, we will deploy the persistent resource within the provided IP
* ranges. Otherwise, the persistent resource is deployed to any IP
* ranges under the provided VPC network.
* Example: ['vertex-ai-ip-range'].
*/
reservedIpRanges?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* The spec of the pools of different resources.
* Structure is documented below.
*/
resourcePools?: pulumi.Input<pulumi.Input<inputs.vertex.AiPersistentResourceResourcePool>[] | undefined>;
/**
* Configuration for the runtime on a PersistentResource instance.
* Structure is documented below.
*/
resourceRuntimeSpec?: pulumi.Input<inputs.vertex.AiPersistentResourceResourceRuntimeSpec | undefined>;
/**
* Persistent Cluster runtime information as output
* Structure is documented below.
*/
resourceRuntimes?: pulumi.Input<pulumi.Input<inputs.vertex.AiPersistentResourceResourceRuntime>[] | undefined>;
/**
* Reserved for future use.
*/
satisfiesPzi?: pulumi.Input<boolean | undefined>;
/**
* Reserved for future use.
*/
satisfiesPzs?: pulumi.Input<boolean | undefined>;
/**
* Time when the PersistentResource for the first time entered the `RUNNING`
* state.
*/
startTime?: pulumi.Input<string | undefined>;
/**
* The detailed state of a PersistentResource.
* Possible values:
* PROVISIONING
* RUNNING
* STOPPING
* ERROR
* REBOOTING
* UPDATING
*/
state?: pulumi.Input<string | undefined>;
/**
* Time when the PersistentResource was most recently updated.
*/
updateTime?: pulumi.Input<string | undefined>;
}
/**
* The set of arguments for constructing a AiPersistentResource resource.
*/
export interface AiPersistentResourceArgs {
/**
* Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
* When a 'terraform destroy' or 'pulumi up' would delete the resource,
* the command will fail if this field is set to "PREVENT" in Terraform state.
* When set to "ABANDON", the command will remove the resource from Terraform
* management without updating or deleting the resource in the API.
* When set to "DELETE", deleting the resource is allowed.
*/
deletionPolicy?: pulumi.Input<string | undefined>;
/**
* The display name of the PersistentResource.
* The name can be up to 128 characters long and can consist of any UTF-8
* characters.
*/
displayName?: pulumi.Input<string | undefined>;
/**
* Represents a customer-managed encryption key specification that can be
* applied to a Vertex AI resource.
* Structure is documented below.
*/
encryptionSpec?: pulumi.Input<inputs.vertex.AiPersistentResourceEncryptionSpec | undefined>;
/**
* The labels with user-defined metadata to organize PersistentResource.
* Label keys and values can be no longer than 64 characters
* (Unicode codepoints), can only contain lowercase letters, numeric
* characters, underscores and dashes. International characters are allowed.
* See https://goo.gl/xmQnxf for more information and examples of labels.
* **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
* Please refer to the field `effectiveLabels` for all of the labels present on the resource.
*/
labels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
} | undefined>;
/**
* The location of the PersistentResource. eg us-central1
*/
location?: pulumi.Input<string | undefined>;
/**
* The ID to use for the PersistentResource, which become the final component
* of the PersistentResource's resource name.
* The maximum length is 63 characters, and valid characters
* are `/^a-z?$/`.
*/
name?: pulumi.Input<string | undefined>;
/**
* The full name of the Compute Engine
* [network](https://www.terraform.io/compute/docs/networks-and-firewalls#networks) to peered with
* Vertex AI to host the persistent resources.
* For example, `projects/12345/global/networks/myVPC`.
* [Format](https://www.terraform.io/compute/docs/reference/rest/v1/networks/insert)
* is of the form `projects/{project}/global/networks/{network}`.
* Where {project} is a project number, as in `12345`, and {network} is a
* network name.
* To specify this field, you must have already [configured VPC Network
* Peering for Vertex
* AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering).
* If this field is left unspecified, the resources aren't peered with any
* network.
*/
network?: pulumi.Input<string | undefined>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string | undefined>;
/**
* Configuration for PSC-I.
* Structure is documented below.
*/
pscInterfaceConfig?: pulumi.Input<inputs.vertex.AiPersistentResourcePscInterfaceConfig | undefined>;
/**
* A list of names for the reserved IP ranges under the VPC network
* that can be used for this persistent resource.
* If set, we will deploy the persistent resource within the provided IP
* ranges. Otherwise, the persistent resource is deployed to any IP
* ranges under the provided VPC network.
* Example: ['vertex-ai-ip-range'].
*/
reservedIpRanges?: pulumi.Input<pulumi.Input<string>[] | undefined>;
/**
* The spec of the pools of different resources.
* Structure is documented below.
*/
resourcePools: pulumi.Input<pulumi.Input<inputs.vertex.AiPersistentResourceResourcePool>[]>;
/**
* Configuration for the runtime on a PersistentResource instance.
* Structure is documented below.
*/
resourceRuntimeSpec?: pulumi.Input<inputs.vertex.AiPersistentResourceResourceRuntimeSpec | undefined>;
}
//# sourceMappingURL=aiPersistentResource.d.ts.map