UNPKG

@pulumi/yandex

Version:

A Pulumi package for creating and managing yandex cloud resources.

209 lines 9.38 kB
"use strict"; // *** 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