Cluster Configuration

Configuration objects are rank 3, and subordinate to node and nodearray. The configuration object define the configurable properties for the configuration code that runs on the nodes and CycleCloud Project configurations.

Object Attributes

Configuration object attributes behave like other objects, but are extended to provide nested definitions. Internally, the configuration sections are merged, so there can be an arbitrary number of sections.

No quotes are necessary for strings or for boolean expressions, true or false.

[[[configuraton my-project]]]
Attribute1 = Value1
Attribute2 = Value2
KeyAttribute3.Attribute3 = true

[[[configuraton cyclecloud.mounts.mount1]]]
Attribute1 = Value1

Supported Configurations

CycleCloud supports a number of default configuration objects. These supported objects are contained under the name cyclecloud.

[[[configuration cyclecloud]]]

CycleCloud supports the parameterized configuration of many system services.

Attribute Type Description
maintenance_converge.enabled Boolean CycleCloud nodes are reconfigured every 20 minutes to ensure they are in the correct state. There are times when you may not want this to be the default behavior such as when you are manually testing and updating the configuration on a node. Setting this value to false will make the node configure itself only once. Default: true
node.prevent_metadata_access Boolean Prevents users, other than the root user or cyclecloud user from accessing the VM metadata from the node. These access rules are applied in iptables. Default: true
timezone String The timezone for a node can be changed by setting this attribute to any valid timezone string, for example PST, EST. Default: UTC
ntp.disabled Boolean Opt-out of ntp time service by setting true. Default: false
ntp.servers List (String) A list of NTP servers to use. Default: pool.ntp.org
keepalive.timeout Integer The amount of time in seconds to keep a node "alive" if it has not finished installing/configuring software. Default: 14400 (4 hours)
discoverable Boolean Whether or not this node can be "discovered" (searched for) by other nodes started by CycleCloud. Default: false
autoscale.forced_shutdown_timeout Integer The amount of time (in minutes) before a forced shutdown occurs if autoscale cannot scale the node down successfully. Default: 15
security.limits Integer Linux only. The limits to apply to the node. Domain, type, and item can be specified for any valid value defined. Defaults: security.limits.\*.hard.nofile = 524288 and security.limits.\*.soft.nofile = 1048576
mounts Nested For NFS exporting and mounting and volume mounting.
selinux.policy String Linux only. Bypass an enforced selinux policy for custom images. Already disabled on core CycleCloud images.
install_epel Boolean Add the extended packages repo for yum on RedHat variant image. Default: true
disable_rhui Boolean Opt-out of Red Hat repository configs. Default : false
ganglia.install Boolean Opt-out of ganglia installation by setting false. Default: true
fail2ban.enabled Boolean Opt-out of fail2ban installation by setting false. Default: true
dns.domain String Use nsupdate to force a dynamic DNS record update. Useful ONLY when allowed by DNS policy, and the cluster is using a DNS server that allows dynamic updates. Default: nil
dns.alias String Use nsupdate to force a dynamic DNS record update. Useful ONLY when allowed by DNS policy, and the cluster is using a DNS server that allows dynamic updates. Default: nil
replace_sudoers Boolean Allow Cyclecloud to managed the sudoers configuration. Disabling can interfere with user or scheduler services. Default: true
Attribute Type Description
keepalive.timeout Integer The amount of time in seconds to keep a node "alive" if it has not finished installing/configuring software. Default: 14400 (4 hours)
discoverable Boolean Whether or not this node can be "discovered" (searched for) by other nodes started by CycleCloud. Default: false
security.limits Integer Linux only. The limits to apply to the node. Domain, type, and item can be specified for any valid value defined. Defaults: security.limits.\*.hard.nofile = 524288 and security.limits.\*.soft.nofile = 1048576
mounts Nested For NFS exporting and mounting and volume mounting.
selinux.policy String Linux only. Bypass an enforced selinux policy on cluster instances. Default: nil
dns.domain String Use nsupdate to force a dynamic DNS record update. Useful ONLY when allowed by DNS policy, and the cluster is using a DNS server that allows dynamic updates. Default: nil
dns.alias String Use nsupdate to force a dynamic DNS record update. Useful ONLY when allowed by DNS policy, and the cluster is using a DNS server that allows dynamic updates. Default: nil
samba.enabled Boolean Linux only. Installs Samba on a filer for use with Windows execute nodes. Default: false

[[[configuration cyclecloud.cluster]]]

CycleCloud cluster namespace contains configurations for distributed services and clustered applications.

Attribute Type Description
autoscale.idle_time_after_jobs Integer Nodes are terminated if they are idle for specified time (in seconds) after they have run jobs. Default: 1800
autoscale.idle_time_before_jobs Integer Nodes are terminated if they are idle for specified time (in seconds) before they have run jobs. Default: 1800
autoscale.stop_interval Integer Time delay between runs of auto-stop checks (in seconds). Default: 60.
autoscale.use_node_groups Boolean Enable grouped nodes - equivalent to placement groups. Effects only PBSPro and Grid Engine clusters. Default: true

[[[configuration cyclecloud.hosts.standalone_dns]]]

CycleCloud will configure the /etc/hosts file to contain a large set of hosts so that forward and reverse name resolution is functional. These configurations act to operate as DNS replacement configured on the individual nodes, not centrally managed, therefore called stand-alone DNS.

Attribute Type Description
enabled Boolean Enable management of the etc hosts file. Default: true.
alt_suffix String Override the default domain name of the VNET. Example: contoso.com
subnets List (String) List of CIDR blocks for extended standalone name resolution.

By default, CycleCloud will inspect the network interface and compose the /etc/hosts file to include hosts in the subnet mask. Additional ranges can be added using the subnets attribute.

[[[configuration cyclecloud.hosts.standalone_dns]]]
alt_suffix = my-domain.local
subnets = 10.0.1.0/24, 10.0.5.0/24

To override and disable the standalone service:

[[[configuration ]]]
cyclecloud.hosts.standalone_dns.enabled = false

[[[configuration cyclecloud.mounts]]]

A significant subdomain of the cyclecloud configuration is mounts. Each named mount section corresponds to an entry in /etc/fstab.

An example of a mount section named primary.

  [[[configuration cyclecloud.mounts.primary]]]
    type = nfs
    mountpoint = /usr/share/lsf
    export_path = /mnt/raid/lsf
    options = hard,proto=tcp,mountproto=tcp,retry=30,actimeo=3600,nolock
    address = 10.0.0.14

Important

The mount section name correlates to the mount attribute of a [[[volume]]] object.

Attribute Type Description
type String The type attribute should be set to nfs for all NFS exports to differentiate from volume mounts and other shared filesystem types.
export_path String The location of the export on the NFS filer. If an export_path is not specified, the mountpoint of the mount will be used as the export_path.
fs_type String Type of filesystem to use. E.g ext4, xfs.
mountpoint String The location where the filesystem will be mounted after any additional configuration is applied. If the directory does not already exist, it will be created.
cluster_name String The name of the CycleCloud cluster which exports the filesystem. If not set, the node's local cluster is assumed.
address String The explicit hostname or IP address of the filesystem. If not set, search will attempt to find the filesystem in a CycleCloud cluster.
options String Any non-default options to use when mounting the filesystem.
disabled Boolean If set to true, the node will not mount the filesystem.
raid_level Integer The type of RAID configuration to use when multiple devices/volumes are being used. Defaults to a value of 0, meaning RAID0, but other raid levels can be used such as 1 or 10.
raid_device_symlink String When a raid device is created, specifying this attribute will create a symbolic link to the raid device. By default, this attribute is not set and therefore no symlink is created. This should be set in cases where you need access to the underlying raid device.
devices List (String) This is a list of devices that should compose the mountpoint. In general, this parameter shouldn't be specified (as CycleCloud will set this for you based on [[[volume]]] sections), but you can manually specify the devices if so desired.
vg_name String Devices are configured on Linux using the Logical Volume Manager (LVM). The volume group name will be automatically assigned, but in cases where a specific name is used, this attribute can be set. The default is set to cyclecloud-vgX, where X is an automatically assigned number.
lv_name String Devices are configured on Linux using the Logical Volume Manager (LVM). This value is automatically assigned and does not need specification, but if you want to use a custom logical volume name, it can be specified using this attribute. Defaults to lv0.
order Integer By specifying an order, you can control the order in which mountpoints are mounted. The default order value for all mountpoints is 1000, except for 'ephemeral' which is 0 (ephemeral is always mounted first by default). You can override this behavior on a case-by-case basis as needed.
encryption.bits Integer The number of bits to use when encrypting the filesystem. Standard values are 128 or 256 bit AES encryption. This value is required if encryption is desired.
encryption.key String The encryption key to use when encrypting the filesystem. If omitted, a random 2048 bit key will be generated. The automatically generated key is useful for when you are encrypting disks that do not persist between reboots (e.g. encrypting ephemeral devices).
encryption.name String The name of the encrypted filesystem, used when saving encryption keys. Defaults to cyclecloud_cryptX, where X is an automatically generated number.
encryption.key_path String The location of the file the key will be written on disk to. Defaults to /root/cyclecloud_cryptX.key, where X is a automatically generated number.

[[[configuration cyclecloud.exports]]]

Similar to mounts, CycleCloud nodes can be configured as NFS servers if the server recipe is enabled. Export section corresponds to /etc/exports entry.

An example of using exports with an export object named nfs_data:

[[[configuration cyclecloud.exports.nfs_data]]]
type = nfs
export_path = /mnt/exports/nfs_data
writable = false
Attribute Type Description
type String REQUIRED The type attribute must be set to nfs for all NFS exports to differentiate from other shared filesystem types.
export_path String The local path to export as an NFS filesystem. If the directory does not exist already, it will be created.
owner String The user account that should own the exported directory.
group String The group of the user that should own the exported directory.
mode String The default filesystem permissions on the exported directory.
network String The network interface on which the directory is exported. Defaults to all: *.
sync Boolean Synchronous/asynchronous export option. Defaults to true.
writable Boolean The ro/rw export option for the filesystem. Defaults to true.
options String Any non-default options to use when exporting the filesystem.

[[[configuration]]]

A limited number of configuration options are available under no namespace, usually for legacy reasons.

Attribute Type Description
http_proxy String The hostname or IP address of the proxy server to use on the node (e.g. 10.10.10.10)
https_proxy String The hostname or IP address of the HTTPS proxy server to use on the node. (e.g. 10.10.0.1)
no_proxy String A comma separated list of hostnames or IP addresses not to use a proxy server for. Default: 169.254.169.254 to allow access to Azure metadata