@pulumi/yandex
Version:
A Pulumi package for creating and managing yandex cloud resources.
209 lines • 9.38 kB
JavaScript
;
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataprocCluster = void 0;
const pulumi = require("@pulumi/pulumi");
const utilities = require("./utilities");
/**
* Manages a Data Proc cluster. For more information, see [the official documentation](https://cloud.yandex.com/docs/data-proc/).
*
* ## Example Usage
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as yandex from "@pulumi/yandex";
* import * from "fs";
*
* const fooVpcNetwork = new yandex.VpcNetwork("fooVpcNetwork", {});
* const fooVpcSubnet = new yandex.VpcSubnet("fooVpcSubnet", {
* zone: "ru-central1-b",
* networkId: fooVpcNetwork.id,
* v4CidrBlocks: ["10.1.0.0/24"],
* });
* const dataprocIamServiceAccount = new yandex.IamServiceAccount("dataprocIamServiceAccount", {description: "service account to manage Dataproc Cluster"});
* const fooResourcemanagerFolder = yandex.getResourcemanagerFolder({
* folderId: "some_folder_id",
* });
* const dataprocResourcemanagerFolderIamBinding = new yandex.ResourcemanagerFolderIamBinding("dataprocResourcemanagerFolderIamBinding", {
* folderId: fooResourcemanagerFolder.then(fooResourcemanagerFolder => fooResourcemanagerFolder.id),
* role: "mdb.dataproc.agent",
* members: [pulumi.interpolate`serviceAccount:${dataprocIamServiceAccount.id}`],
* });
* // required in order to create bucket
* const bucket_creator = new yandex.ResourcemanagerFolderIamBinding("bucket-creator", {
* folderId: fooResourcemanagerFolder.then(fooResourcemanagerFolder => fooResourcemanagerFolder.id),
* role: "editor",
* members: [pulumi.interpolate`serviceAccount:${dataprocIamServiceAccount.id}`],
* });
* const fooIamServiceAccountStaticAccessKey = new yandex.IamServiceAccountStaticAccessKey("fooIamServiceAccountStaticAccessKey", {serviceAccountId: dataprocIamServiceAccount.id});
* const fooStorageBucket = new yandex.StorageBucket("fooStorageBucket", {
* bucket: "foo",
* accessKey: fooIamServiceAccountStaticAccessKey.accessKey,
* secretKey: fooIamServiceAccountStaticAccessKey.secretKey,
* }, {
* dependsOn: [bucket_creator],
* });
* const fooDataprocCluster = new yandex.DataprocCluster("fooDataprocCluster", {
* bucket: fooStorageBucket.bucket,
* description: "Dataproc Cluster created by Terraform",
* labels: {
* created_by: "terraform",
* },
* serviceAccountId: dataprocIamServiceAccount.id,
* zoneId: "ru-central1-b",
* clusterConfig: {
* hadoop: {
* services: [
* "HDFS",
* "YARN",
* "SPARK",
* "TEZ",
* "MAPREDUCE",
* "HIVE",
* ],
* properties: {
* "yarn:yarn.resourcemanager.am.max-attempts": 5,
* },
* sshPublicKeys: [fs.readFileSync("~/.ssh/id_rsa.pub")],
* },
* subclusterSpecs: [
* {
* name: "main",
* role: "MASTERNODE",
* resources: {
* resourcePresetId: "s2.small",
* diskTypeId: "network-hdd",
* diskSize: 20,
* },
* subnetId: fooVpcSubnet.id,
* hostsCount: 1,
* },
* {
* name: "data",
* role: "DATANODE",
* resources: {
* resourcePresetId: "s2.small",
* diskTypeId: "network-hdd",
* diskSize: 20,
* },
* subnetId: fooVpcSubnet.id,
* hostsCount: 2,
* },
* {
* name: "compute",
* role: "COMPUTENODE",
* resources: {
* resourcePresetId: "s2.small",
* diskTypeId: "network-hdd",
* diskSize: 20,
* },
* subnetId: fooVpcSubnet.id,
* hostsCount: 2,
* },
* {
* name: "compute_autoscaling",
* role: "COMPUTENODE",
* resources: {
* resourcePresetId: "s2.small",
* diskTypeId: "network-hdd",
* diskSize: 20,
* },
* subnetId: fooVpcSubnet.id,
* hostsCount: 2,
* autoscalingConfig: {
* maxHostsCount: 10,
* measurementDuration: 60,
* warmupDuration: 60,
* stabilizationDuration: 120,
* preemptible: false,
* decommissionTimeout: 60,
* },
* },
* ],
* },
* }, {
* dependsOn: [dataprocResourcemanagerFolderIamBinding],
* });
* ```
*
* ## Import
*
* A cluster can be imported using the `id` of the resource, e.g.
*
* ```sh
* $ pulumi import yandex:index/dataprocCluster:DataprocCluster foo cluster_id
* ```
*/
class DataprocCluster extends pulumi.CustomResource {
constructor(name, argsOrState, opts) {
let resourceInputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState;
resourceInputs["bucket"] = state ? state.bucket : undefined;
resourceInputs["clusterConfig"] = state ? state.clusterConfig : undefined;
resourceInputs["createdAt"] = state ? state.createdAt : undefined;
resourceInputs["deletionProtection"] = state ? state.deletionProtection : undefined;
resourceInputs["description"] = state ? state.description : undefined;
resourceInputs["folderId"] = state ? state.folderId : undefined;
resourceInputs["hostGroupIds"] = state ? state.hostGroupIds : undefined;
resourceInputs["labels"] = state ? state.labels : undefined;
resourceInputs["name"] = state ? state.name : undefined;
resourceInputs["securityGroupIds"] = state ? state.securityGroupIds : undefined;
resourceInputs["serviceAccountId"] = state ? state.serviceAccountId : undefined;
resourceInputs["uiProxy"] = state ? state.uiProxy : undefined;
resourceInputs["zoneId"] = state ? state.zoneId : undefined;
}
else {
const args = argsOrState;
if ((!args || args.clusterConfig === undefined) && !opts.urn) {
throw new Error("Missing required property 'clusterConfig'");
}
if ((!args || args.serviceAccountId === undefined) && !opts.urn) {
throw new Error("Missing required property 'serviceAccountId'");
}
resourceInputs["bucket"] = args ? args.bucket : undefined;
resourceInputs["clusterConfig"] = args ? args.clusterConfig : undefined;
resourceInputs["deletionProtection"] = args ? args.deletionProtection : undefined;
resourceInputs["description"] = args ? args.description : undefined;
resourceInputs["folderId"] = args ? args.folderId : undefined;
resourceInputs["hostGroupIds"] = args ? args.hostGroupIds : undefined;
resourceInputs["labels"] = args ? args.labels : undefined;
resourceInputs["name"] = args ? args.name : undefined;
resourceInputs["securityGroupIds"] = args ? args.securityGroupIds : undefined;
resourceInputs["serviceAccountId"] = args ? args.serviceAccountId : undefined;
resourceInputs["uiProxy"] = args ? args.uiProxy : undefined;
resourceInputs["zoneId"] = args ? args.zoneId : undefined;
resourceInputs["createdAt"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(DataprocCluster.__pulumiType, name, resourceInputs, opts);
}
/**
* Get an existing DataprocCluster 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, id, state, opts) {
return new DataprocCluster(name, state, Object.assign(Object.assign({}, opts), { id: id }));
}
/**
* Returns true if the given object is an instance of DataprocCluster. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj) {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === DataprocCluster.__pulumiType;
}
}
exports.DataprocCluster = DataprocCluster;
/** @internal */
DataprocCluster.__pulumiType = 'yandex:index/dataprocCluster:DataprocCluster';
//# sourceMappingURL=dataprocCluster.js.map