Cluster Args
Provides a Ehpc Cluster resource. For information about Ehpc Cluster and how to use it, see What is Cluster.
NOTE: Available since v1.173.0.
Example Usage
Basic Usage
import * as pulumi from "@pulumi/pulumi";
import * as alicloud from "@pulumi/alicloud";
const config = new pulumi.Config();
const name = config.get("name") || "tf-example";
const _default = alicloud.getZones({
availableResourceCreation: "VSwitch",
});
const defaultGetImages = alicloud.ecs.getImages({
nameRegex: "^centos_7_6_x64*",
owners: "system",
});
const defaultGetInstanceTypes = _default.then(_default => alicloud.ecs.getInstanceTypes({
availabilityZone: _default.zones?.[0]?.id,
}));
const defaultNetwork = new alicloud.vpc.Network("default", {
vpcName: name,
cidrBlock: "10.0.0.0/8",
});
const defaultSwitch = new alicloud.vpc.Switch("default", {
vswitchName: name,
cidrBlock: "10.1.0.0/16",
vpcId: defaultNetwork.id,
zoneId: _default.then(_default => _default.zones?.[0]?.id),
});
const defaultFileSystem = new alicloud.nas.FileSystem("default", {
storageType: "Performance",
protocolType: "NFS",
});
const defaultMountTarget = new alicloud.nas.MountTarget("default", {
fileSystemId: defaultFileSystem.id,
accessGroupName: "DEFAULT_VPC_GROUP_NAME",
vswitchId: defaultSwitch.id,
});
const defaultCluster = new alicloud.ehpc.Cluster("default", {
clusterName: name,
deployMode: "Simple",
description: name,
haEnable: false,
imageId: defaultGetImages.then(defaultGetImages => defaultGetImages.images?.[0]?.id),
imageOwnerAlias: "system",
volumeProtocol: "nfs",
volumeId: defaultFileSystem.id,
volumeMountpoint: defaultMountTarget.mountTargetDomain,
computeCount: 1,
computeInstanceType: defaultGetInstanceTypes.then(defaultGetInstanceTypes => defaultGetInstanceTypes.instanceTypes?.[0]?.id),
loginCount: 1,
loginInstanceType: defaultGetInstanceTypes.then(defaultGetInstanceTypes => defaultGetInstanceTypes.instanceTypes?.[0]?.id),
managerCount: 1,
managerInstanceType: defaultGetInstanceTypes.then(defaultGetInstanceTypes => defaultGetInstanceTypes.instanceTypes?.[0]?.id),
osTag: "CentOS_7.6_64",
schedulerType: "pbs",
password: "your-password123",
vswitchId: defaultSwitch.id,
vpcId: defaultNetwork.id,
zoneId: _default.then(_default => _default.zones?.[0]?.id),
});
import pulumi
import pulumi_alicloud as alicloud
config = pulumi.Config()
name = config.get("name")
if name is None:
name = "tf-example"
default = alicloud.get_zones(available_resource_creation="VSwitch")
default_get_images = alicloud.ecs.get_images(name_regex="^centos_7_6_x64*",
owners="system")
default_get_instance_types = alicloud.ecs.get_instance_types(availability_zone=default.zones[0].id)
default_network = alicloud.vpc.Network("default",
vpc_name=name,
cidr_block="10.0.0.0/8")
default_switch = alicloud.vpc.Switch("default",
vswitch_name=name,
cidr_block="10.1.0.0/16",
vpc_id=default_network.id,
zone_id=default.zones[0].id)
default_file_system = alicloud.nas.FileSystem("default",
storage_type="Performance",
protocol_type="NFS")
default_mount_target = alicloud.nas.MountTarget("default",
file_system_id=default_file_system.id,
access_group_name="DEFAULT_VPC_GROUP_NAME",
vswitch_id=default_switch.id)
default_cluster = alicloud.ehpc.Cluster("default",
cluster_name=name,
deploy_mode="Simple",
description=name,
ha_enable=False,
image_id=default_get_images.images[0].id,
image_owner_alias="system",
volume_protocol="nfs",
volume_id=default_file_system.id,
volume_mountpoint=default_mount_target.mount_target_domain,
compute_count=1,
compute_instance_type=default_get_instance_types.instance_types[0].id,
login_count=1,
login_instance_type=default_get_instance_types.instance_types[0].id,
manager_count=1,
manager_instance_type=default_get_instance_types.instance_types[0].id,
os_tag="CentOS_7.6_64",
scheduler_type="pbs",
password="your-password123",
vswitch_id=default_switch.id,
vpc_id=default_network.id,
zone_id=default.zones[0].id)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AliCloud = Pulumi.AliCloud;
return await Deployment.RunAsync(() =>
{
var config = new Config();
var name = config.Get("name") ?? "tf-example";
var @default = AliCloud.GetZones.Invoke(new()
{
AvailableResourceCreation = "VSwitch",
});
var defaultGetImages = AliCloud.Ecs.GetImages.Invoke(new()
{
NameRegex = "^centos_7_6_x64*",
Owners = "system",
});
var defaultGetInstanceTypes = AliCloud.Ecs.GetInstanceTypes.Invoke(new()
{
AvailabilityZone = @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id),
});
var defaultNetwork = new AliCloud.Vpc.Network("default", new()
{
VpcName = name,
CidrBlock = "10.0.0.0/8",
});
var defaultSwitch = new AliCloud.Vpc.Switch("default", new()
{
VswitchName = name,
CidrBlock = "10.1.0.0/16",
VpcId = defaultNetwork.Id,
ZoneId = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id)),
});
var defaultFileSystem = new AliCloud.Nas.FileSystem("default", new()
{
StorageType = "Performance",
ProtocolType = "NFS",
});
var defaultMountTarget = new AliCloud.Nas.MountTarget("default", new()
{
FileSystemId = defaultFileSystem.Id,
AccessGroupName = "DEFAULT_VPC_GROUP_NAME",
VswitchId = defaultSwitch.Id,
});
var defaultCluster = new AliCloud.Ehpc.Cluster("default", new()
{
ClusterName = name,
DeployMode = "Simple",
Description = name,
HaEnable = false,
ImageId = defaultGetImages.Apply(getImagesResult => getImagesResult.Images[0]?.Id),
ImageOwnerAlias = "system",
VolumeProtocol = "nfs",
VolumeId = defaultFileSystem.Id,
VolumeMountpoint = defaultMountTarget.MountTargetDomain,
ComputeCount = 1,
ComputeInstanceType = defaultGetInstanceTypes.Apply(getInstanceTypesResult => getInstanceTypesResult.InstanceTypes[0]?.Id),
LoginCount = 1,
LoginInstanceType = defaultGetInstanceTypes.Apply(getInstanceTypesResult => getInstanceTypesResult.InstanceTypes[0]?.Id),
ManagerCount = 1,
ManagerInstanceType = defaultGetInstanceTypes.Apply(getInstanceTypesResult => getInstanceTypesResult.InstanceTypes[0]?.Id),
OsTag = "CentOS_7.6_64",
SchedulerType = "pbs",
Password = "your-password123",
VswitchId = defaultSwitch.Id,
VpcId = defaultNetwork.Id,
ZoneId = @default.Apply(@default => @default.Apply(getZonesResult => getZonesResult.Zones[0]?.Id)),
});
});
package main
import (
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ecs"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/ehpc"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/nas"
"github.com/pulumi/pulumi-alicloud/sdk/v3/go/alicloud/vpc"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
name := "tf-example"
if param := cfg.Get("name"); param != "" {
name = param
}
_default, err := alicloud.GetZones(ctx, &alicloud.GetZonesArgs{
AvailableResourceCreation: pulumi.StringRef("VSwitch"),
}, nil)
if err != nil {
return err
}
defaultGetImages, err := ecs.GetImages(ctx, &ecs.GetImagesArgs{
NameRegex: pulumi.StringRef("^centos_7_6_x64*"),
Owners: pulumi.StringRef("system"),
}, nil)
if err != nil {
return err
}
defaultGetInstanceTypes, err := ecs.GetInstanceTypes(ctx, &ecs.GetInstanceTypesArgs{
AvailabilityZone: pulumi.StringRef(_default.Zones[0].Id),
}, nil)
if err != nil {
return err
}
defaultNetwork, err := vpc.NewNetwork(ctx, "default", &vpc.NetworkArgs{
VpcName: pulumi.String(name),
CidrBlock: pulumi.String("10.0.0.0/8"),
})
if err != nil {
return err
}
defaultSwitch, err := vpc.NewSwitch(ctx, "default", &vpc.SwitchArgs{
VswitchName: pulumi.String(name),
CidrBlock: pulumi.String("10.1.0.0/16"),
VpcId: defaultNetwork.ID(),
ZoneId: pulumi.String(_default.Zones[0].Id),
})
if err != nil {
return err
}
defaultFileSystem, err := nas.NewFileSystem(ctx, "default", &nas.FileSystemArgs{
StorageType: pulumi.String("Performance"),
ProtocolType: pulumi.String("NFS"),
})
if err != nil {
return err
}
defaultMountTarget, err := nas.NewMountTarget(ctx, "default", &nas.MountTargetArgs{
FileSystemId: defaultFileSystem.ID(),
AccessGroupName: pulumi.String("DEFAULT_VPC_GROUP_NAME"),
VswitchId: defaultSwitch.ID(),
})
if err != nil {
return err
}
_, err = ehpc.NewCluster(ctx, "default", &ehpc.ClusterArgs{
ClusterName: pulumi.String(name),
DeployMode: pulumi.String("Simple"),
Description: pulumi.String(name),
HaEnable: pulumi.Bool(false),
ImageId: pulumi.String(defaultGetImages.Images[0].Id),
ImageOwnerAlias: pulumi.String("system"),
VolumeProtocol: pulumi.String("nfs"),
VolumeId: defaultFileSystem.ID(),
VolumeMountpoint: defaultMountTarget.MountTargetDomain,
ComputeCount: pulumi.Int(1),
ComputeInstanceType: pulumi.String(defaultGetInstanceTypes.InstanceTypes[0].Id),
LoginCount: pulumi.Int(1),
LoginInstanceType: pulumi.String(defaultGetInstanceTypes.InstanceTypes[0].Id),
ManagerCount: pulumi.Int(1),
ManagerInstanceType: pulumi.String(defaultGetInstanceTypes.InstanceTypes[0].Id),
OsTag: pulumi.String("CentOS_7.6_64"),
SchedulerType: pulumi.String("pbs"),
Password: pulumi.String("your-password123"),
VswitchId: defaultSwitch.ID(),
VpcId: defaultNetwork.ID(),
ZoneId: pulumi.String(_default.Zones[0].Id),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.alicloud.AlicloudFunctions;
import com.pulumi.alicloud.inputs.GetZonesArgs;
import com.pulumi.alicloud.ecs.EcsFunctions;
import com.pulumi.alicloud.ecs.inputs.GetImagesArgs;
import com.pulumi.alicloud.ecs.inputs.GetInstanceTypesArgs;
import com.pulumi.alicloud.vpc.Network;
import com.pulumi.alicloud.vpc.NetworkArgs;
import com.pulumi.alicloud.vpc.Switch;
import com.pulumi.alicloud.vpc.SwitchArgs;
import com.pulumi.alicloud.nas.FileSystem;
import com.pulumi.alicloud.nas.FileSystemArgs;
import com.pulumi.alicloud.nas.MountTarget;
import com.pulumi.alicloud.nas.MountTargetArgs;
import com.pulumi.alicloud.ehpc.Cluster;
import com.pulumi.alicloud.ehpc.ClusterArgs;
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) {
final var config = ctx.config();
final var name = config.get("name").orElse("tf-example");
final var default = AlicloudFunctions.getZones(GetZonesArgs.builder()
.availableResourceCreation("VSwitch")
.build());
final var defaultGetImages = EcsFunctions.getImages(GetImagesArgs.builder()
.nameRegex("^centos_7_6_x64*")
.owners("system")
.build());
final var defaultGetInstanceTypes = EcsFunctions.getInstanceTypes(GetInstanceTypesArgs.builder()
.availabilityZone(default_.zones()[0].id())
.build());
var defaultNetwork = new Network("defaultNetwork", NetworkArgs.builder()
.vpcName(name)
.cidrBlock("10.0.0.0/8")
.build());
var defaultSwitch = new Switch("defaultSwitch", SwitchArgs.builder()
.vswitchName(name)
.cidrBlock("10.1.0.0/16")
.vpcId(defaultNetwork.id())
.zoneId(default_.zones()[0].id())
.build());
var defaultFileSystem = new FileSystem("defaultFileSystem", FileSystemArgs.builder()
.storageType("Performance")
.protocolType("NFS")
.build());
var defaultMountTarget = new MountTarget("defaultMountTarget", MountTargetArgs.builder()
.fileSystemId(defaultFileSystem.id())
.accessGroupName("DEFAULT_VPC_GROUP_NAME")
.vswitchId(defaultSwitch.id())
.build());
var defaultCluster = new Cluster("defaultCluster", ClusterArgs.builder()
.clusterName(name)
.deployMode("Simple")
.description(name)
.haEnable(false)
.imageId(defaultGetImages.applyValue(getImagesResult -> getImagesResult.images()[0].id()))
.imageOwnerAlias("system")
.volumeProtocol("nfs")
.volumeId(defaultFileSystem.id())
.volumeMountpoint(defaultMountTarget.mountTargetDomain())
.computeCount(1)
.computeInstanceType(defaultGetInstanceTypes.applyValue(getInstanceTypesResult -> getInstanceTypesResult.instanceTypes()[0].id()))
.loginCount(1)
.loginInstanceType(defaultGetInstanceTypes.applyValue(getInstanceTypesResult -> getInstanceTypesResult.instanceTypes()[0].id()))
.managerCount(1)
.managerInstanceType(defaultGetInstanceTypes.applyValue(getInstanceTypesResult -> getInstanceTypesResult.instanceTypes()[0].id()))
.osTag("CentOS_7.6_64")
.schedulerType("pbs")
.password("your-password123")
.vswitchId(defaultSwitch.id())
.vpcId(defaultNetwork.id())
.zoneId(default_.zones()[0].id())
.build());
}
}
configuration:
name:
type: string
default: tf-example
resources:
defaultNetwork:
type: alicloud:vpc:Network
name: default
properties:
vpcName: ${name}
cidrBlock: 10.0.0.0/8
defaultSwitch:
type: alicloud:vpc:Switch
name: default
properties:
vswitchName: ${name}
cidrBlock: 10.1.0.0/16
vpcId: ${defaultNetwork.id}
zoneId: ${default.zones[0].id}
defaultFileSystem:
type: alicloud:nas:FileSystem
name: default
properties:
storageType: Performance
protocolType: NFS
defaultMountTarget:
type: alicloud:nas:MountTarget
name: default
properties:
fileSystemId: ${defaultFileSystem.id}
accessGroupName: DEFAULT_VPC_GROUP_NAME
vswitchId: ${defaultSwitch.id}
defaultCluster:
type: alicloud:ehpc:Cluster
name: default
properties:
clusterName: ${name}
deployMode: Simple
description: ${name}
haEnable: false
imageId: ${defaultGetImages.images[0].id}
imageOwnerAlias: system
volumeProtocol: nfs
volumeId: ${defaultFileSystem.id}
volumeMountpoint: ${defaultMountTarget.mountTargetDomain}
computeCount: 1
computeInstanceType: ${defaultGetInstanceTypes.instanceTypes[0].id}
loginCount: 1
loginInstanceType: ${defaultGetInstanceTypes.instanceTypes[0].id}
managerCount: 1
managerInstanceType: ${defaultGetInstanceTypes.instanceTypes[0].id}
osTag: CentOS_7.6_64
schedulerType: pbs
password: your-password123
vswitchId: ${defaultSwitch.id}
vpcId: ${defaultNetwork.id}
zoneId: ${default.zones[0].id}
variables:
default:
fn::invoke:
function: alicloud:getZones
arguments:
availableResourceCreation: VSwitch
defaultGetImages:
fn::invoke:
function: alicloud:ecs:getImages
arguments:
nameRegex: ^centos_7_6_x64*
owners: system
defaultGetInstanceTypes:
fn::invoke:
function: alicloud:ecs:getInstanceTypes
arguments:
availabilityZone: ${default.zones[0].id}
Import
Ehpc Cluster can be imported using the id, e.g.
$ pulumi import alicloud:ehpc/cluster:Cluster example <id>
Constructors
Properties
The type of the domain account service. Valid values: nis
, ldap
. Default value: nis
The additional volumes. See additional_volumes
below.
The application. See application
below.
The auto-renewal period of the subscription compute nodes. The parameter takes effect when AutoRenew is set to true.
The version of the E-HPC client. By default, the parameter is set to the latest version number.
The name of the cluster. The name must be 2
to 64
characters in length.
The version of the cluster. Default value: 1.0
.
The number of the compute nodes. Valid values: 1
to 99
.
Specifies whether the compute nodes support hyper-threading. Default value: true
.
The instance type of the compute nodes.
The maximum hourly price of the compute nodes. A maximum of three decimal places can be used in the value of the parameter. The parameter is valid only when the ComputeSpotStrategy parameter is set to SpotWithPriceLimit.
The bidding method of the compute nodes. Default value: NoSpot
. Valid values:
The mode in which the cluster is deployed. Valid values: Standard
, Simple
, Tiny
. Default value: Standard.
The description of the cluster. The description must be 2
to 256
characters in length. It cannot start with http://
or https://
.
The billing method of the nodes.
The version of E-HPC. By default, the parameter is set to the latest version number.
The type of the image. Valid values: others
, self
, system
, marketplace
. Default value: system
.
The URL of the job files that are uploaded to an Object Storage Service (OSS) bucket.
Specifies whether to enable auto scaling. Default value: false
.
The name of the AccessKey pair.
The number of the logon nodes. Valid values: 1
.
The instance type of the logon nodes.
The number of the management nodes. Valid values: 1 and 2.
The instance type of the management nodes.
The root password of the logon node. The password must be 8 to 30 characters in length and contain at least three of the following items: uppercase letters, lowercase letters, digits, and special characters. The password can contain the following special characters: ( ) ~ ! @ # $ % ^ & * - + = { } [ ] : ; ‘ < > , . ? /
. You must specify either password
or key_pair_name
. If both are specified, the Password parameter prevails.
The unit of the subscription duration. Valid values: Year
, Month
, Hour
. Default value: Month
.
The post install script. See post_install_script
below.
The node of the RAM role.
The name of the Resource Access Management (RAM) role.
The release instance. Valid values: true
.
The remote directory to which the file system is mounted.
Specifies whether to enable Virtual Network Computing (VNC). Default value: false
.
The ID of the resource group.
The ID of the Super Computing Cluster (SCC) instance. If you specify the parameter, the SCC instance is moved to a new SCC cluster.
The type of the scheduler. Valid values: pbs
, slurm
, opengridscheduler
and deadline
. Default value: pbs
.
The ID of the security group to which the cluster belongs.
If you do not use an existing security group, set the parameter to the name of a new security group. A default policy is applied to the new security group.
The performance level of the ESSD that is used as the system disk. Default value: PL1
For more information, see ESSDs. Valid values:
The size of the system disk. Unit: GB
. Valid values: 40
to 500
. Default value: 40
.
The type of the system disk. Valid values: cloud_efficiency
, cloud_ssd
, cloud_essd
or cloud
. Default value: cloud_ssd
.
The mount options of the file system.
The mount target of the file system. Take note of the following information:
The type of the protocol that is used by the file system. Valid values: NFS
, SMB
. Default value: NFS
.
The type of the shared storage. Only Apsara File Storage NAS file systems are supported.
Specifies whether not to install the agent. Default value: false
.
Specifies whether the logon node uses an elastic IP address (EIP). Default value: false
.