Parameters¶
There are a limited set of parameters that can be configured within the Puppet node classifier file. This file (site.pp) can be used as is, or can be switched out for any one of Puppet’s External Node Classifiers (ENC) for more dynamic functionality.
The node classifier file (site.pp) is the file that a Puppet server uses to determine what a node configuration should be when it checks in. This file matches nodes for their FQDN.
Below we have broken up the (site.pp) file which can serve as a working example.
Global Parameters¶
A global parameter gets set in the following section. These parameters can also be set individually per node if desired. These variable names are used later on in the node configuration section.
Parameter | Description |
version (install required) | ScaleIO RPM version numbers that should be installed or upgraded to |
sds_network (optional) | Network address that SDS should communicate on |
mdm_fqdn (optional) | Can be used to define node classifications by name |
mdm_ip (config required) | Array of MDM IP addresses as [‘Primary’,’Secondary’] |
tb_fqdn | Can be used to define Tie-Breaker classifications by name |
tb_ip | Tie-Breaker IP that is required if the ScaleIO cluster is not installed yet |
cluster_name | Cluster name that should be configured |
enable_cluster_mode | Boolean that determines whether Cluster Mode is on or off |
password | New password to be set on the MDM during initial install |
gw_password | Password for the Gateway REST interface |
$version = '1.30-426.0'
$mdm_fqdn = ['mdm1.scaleio.local','mdm2.scaleio.local']
$mdm_ip = ['192.168.50.12','192.168.50.13']
$tb_fqdn = 'tb.scaleio.local'
$tb_ip = '192.168.50.11'
$cluster_name = "cluster1"
$enable_cluster_mode = true
$password = 'Scaleio123'
$gw_password= 'Scaleio123'
SDS Devices¶
The SDS Devices represent the block storage devices on an SDS node. As part of the parameters you also specify which protection domain an SDS node takes part in. The devices themselves can be block devices (partitions) that have a pre-determined size or files on file systems that will be truncated to create the sparse space.
This is an example of a hash that represents a node.
'FQDN' => {
'ip' => 'IP of NODE',
'protection_domain' => 'Protection Domain',
'devices' => {
'Device Path1' => { 'size' => '100GB',
'storage_pool' => 'Name of Storage Pool'
},
'Device Path2' => { 'size' => '100GB',
'storage_pool' => 'Name of Storage Pool'
},
}
This are working hashes that represents nodes.
$sio_sds_device = {
'tb.scaleio.local' => {
'ip' => '192.168.50.11',
'protection_domain' => 'protection_domain1',
'devices' => {
'/home/vagrant/sio_device1' => { 'size' => '100GB',
'storage_pool' => 'capacity'
},
}
},
'mdm1.scaleio.local' => {
'ip' => '192.168.50.12',
'protection_domain' => 'protection_domain1',
'devices' => {
'/home/vagrant/sio_device1' => { 'size' => '100GB',
'storage_pool' => 'capacity'
},
}
},
'mdm2.scaleio.local' => {
'ip' => '192.168.50.13',
'protection_domain' => 'protection_domain1',
'devices' => {
'/home/vagrant/sio_device1' => { 'size' => '100GB',
'storage_pool' => 'capacity'
},
}
},
}
SDC Volumes¶
The volumes section represents the actual consumable device that a client has available to carve space from. Here you specify the Protection Domain and Storage Pool. You can also specify any abritrary size in GB. The sdc_ip represents an array of SDC IPs that will have access to the volume.
$sio_sdc_volume = {
'volume1' => { 'size_gb' => 8,
'protection_domain' => 'protection_domain1',
'storage_pool' => 'capacity',
'sdc_ip' => [
'192.168.50.11',
'192.168.50.12',
'192.168.50.13',
]
}
}
Call-Home¶
The Call-Home section is used to configure the Call-Home service.
$callhome_cfg = {
'email_to' => "emailto@address.com",
'email_from' => "emailfrom@address.com",
'username' => "monitor_username",
'password' => "monitor_password",
'customer' => "customer_name",
'smtp_host' => "smtp_host",
'smtp_port' => "smtp_port",
'smtp_user' => "smtp_user",
'smtp_password' => "smtp_password",
'severity' => "error",
}
Node Configuration¶
This is the node configuration. With each node statement there is a regular expression that determines what configuration is applied to nodes with specific FQDNs. The required configuration parameters differ depending on the node type. Since the MDM and TB nodes specified here have mixed components there are more variables specified that needed for those node types.
See the Global Parameters section for details of other parameters listed below. The components parameter is the only one that specifies something unique per node.
Parameter | Description |
components | An array of the components that can be installed (tb,sds,sdc,gw,lia,callhome) |
Notice that the nodes are using a Regular Expression (/tb/) which matches any node that checks in with TB in the name. The nodes can be duplicated and completely customizable based on site naming preferences. Notice the components line where we specify (tb,sds,sdc,gw) meaning the node has is multi-role as a Tie-Breaker, SDS, SDC, and Gateway.
- node /tb/ {
- class {‘scaleio::params’:
- password => $password, version => $version, mdm_ip => $mdm_ip, tb_ip => $tb_ip, callhome_cfg => $callhome_cfg, sio_sds_device => $sio_sds_device, sds_ssd_env_flag => true, components => [‘tb’,’sds’,’sdc’],
} include scaleio
}
- node /mdm/ {
- class {‘scaleio::params’:
- password => $password, version => $version, mdm_ip => $mdm_ip, tb_ip => $tb_ip, cluster_name => $cluster_name, sio_sds_device => $sio_sds_device, sio_sdc_volume => $sio_sdc_volume, callhome_cfg => $callhome_cfg, components => [‘mdm’,’sds’,’sdc’,’callhome’],
} include scaleio
}
- node /sds/ {
- class {‘scaleio::params’:
- password => $password, version => $version, mdm_ip => $mdm_ip, sio_sds_device => $sio_sds_device, sds_ssd_env_flag => true, components => [‘sds’],
} include scaleio
}
- node /sdc/ {
- class {‘scaleio::params’:
- password => $password, version => $version, mdm_ip => $mdm_ip, components => [‘sdc’],
} include scaleio
}
- node /gw/ {
- class {‘scaleio::params’:
- gw_password => $gw_password, version => $version, mdm_ip => $mdm_ip, components => [‘gw’],
} include scaleio
}