Forge Home


Puppet library for Scaleio 2.0 deployment and configuration


6,921 latest version

4.6 quality score

Version information

  • 1.2.1 (latest)
  • 1.2.0
  • 1.1.5
  • 1.1.1
  • 1.1.0
  • 1.0.1 (deleted)
  • 1.0.0
  • 0.3.11
  • 0.3.10
  • 0.3.9
  • 0.3.8
  • 0.3.7
  • 0.3.6
  • 0.3.5
  • 0.3.4
  • 0.3.3
  • 0.3.2
  • 0.3.1
  • 0.3.0
  • 0.2.6
  • 0.2.5
  • 0.2.4
  • 0.2.3
  • 0.2.2
  • 0.2.1
  • 0.1.22
  • 0.1.21
  • 0.1.20
  • 0.1.19
  • 0.1.18
  • 0.1.17
  • 0.1.16
  • 0.1.15
  • 0.1.14
  • 0.1.13
  • 0.1.12
  • 0.1.11
  • 0.1.10
  • 0.1.9
  • 0.1.8
  • 0.1.7
  • 0.1.6
  • 0.1.5
  • 0.1.4
  • 0.1.3
  • 0.1.2
  • 0.1.1
  • 0.1.0
released Dec 2nd 2016
This version is compatible with:
  • Puppet Enterprise 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x, 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x, 2018.1.x, 2017.3.x, 2017.2.x, 2017.1.x, 2016.5.x, 2016.4.x
  • Puppet >= 3.7.4
  • , ,

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'cloudscaling-scaleio', '1.2.1'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add cloudscaling-scaleio
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install cloudscaling-scaleio --version 1.2.1

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.



cloudscaling/scaleio — version 1.2.1 Dec 2nd 2016



A Puppet module that installs and configures the ScaleIO 2.0 block storage service components. The module currently supports Ubuntu 14.04/16.04 and CentOS 6 and 7.

Module Description

ScaleIO is software that takes local storage from operating systems and configures them in a virtual SAN to deliver block services to operating systems via IP. The module handles the configuration of ScaleIO components and the creation and mapping of volumes to hosts.

Most aspects of configuration of ScaleIO have been brought into Puppet.


What Puppet-ScaleIO affects

  • Installs firewall (iptables) settings based on ScaleIO components installed
  • Installs dependency packages such as numactl and libaio1
  • Installs oracle-java8 for gateway

Tested with

  • Puppet 3., 4.
  • ScaleIO 2.0+
  • Ubuntu 14.04/16.04, CentOS 6, CentOS 7

Setup Requirements

  • Requires ScaleIO packages available in apt repository (depending on the specific components you want to install)

  • Required modules to install

    puppet module install puppetlabs-stdlib
    puppet module install puppetlabs-firewall

Beginning with scaleio

puppet module install cloudscaling-scaleio

Structure and specifics

All files reside in the root of manifests.

They consist of:

  • NAME_server.pp files - containing installation of the services named with the "NAME". Should be invoked on the nodes where the service is to be installed.
  • All other .pp files - configure ScaleIO cluster. Should be invoked on either current master MDM or with FACTER_mdm_ips="ip1,ip2,..." set can be invoked from anywhere.

Main parameter for addressing components in cluster is "name". Only SDC is addressed by "ip" for removal. All resource declarations are idempotent - they can be repeated as many times as required with the same results. Any optional parameters can be specified later with the same resource declaration.

Usage example

Example of deployment for 3 nodes MDM and 3 nodes SDS cluster is below:

It's possible to deploy from local directory by the command (replace <my_puppet_dir> with the place where your puppet is):

puppet apply --modulepath="/<my_puppet_dir>:/etc/puppet/modules" -e "command"
  1. You might want to make sure that kernel you have on the nodes for ScaleIO SDC installation (compute and cinder nodes in case of OpenStack deployment) is suitable for the drivers present here: Look for something like Ubuntu/2.0.5014.0/4.2.0-30-generic. Local kernel version can be found with uname -a command.

  2. Deploy servers. Each puppet should be run on a machine where this service should reside (in any order or in parallel):

    Deploy master MDM and create 1-node cluster (can be run without name and ips to just install without cluster creation)

    host1> puppet apply "class { 'scaleio::mdm_server': master_mdm_name=>'master', mdm_ips=>'', is_manager=>1 }"

    Deploy secondary MDM (can be rerun with is_manager=>0 to make it TieBreaker)

    host2> puppet apply "class { 'scaleio::mdm_server': is_manager=>1 }"

    Deploy TieBreaker (can be rerun with is_manager=>1 to make it Manager)

    host3> puppet apply "class { 'scaleio::mdm_server': is_manager=>0 }"

    Deploy 3 SDS server ()

    host1> puppet apply "class { 'scaleio::sds_server': }"
    host2> puppet apply "class { 'scaleio::sds_server': }"
    host3> puppet apply "class { 'scaleio::sds_server': }"
  3. Configure the cluster (commands can be run from any node).

    Set FACTER_mdm_ips variable


    Change default cluster password

    puppet apply "scaleio::login {'login': password=>'admin'} -> scaleio::cluster { 'cluster': password=>'admin', new_password=>'password' }"

    Login to cluster

    puppet apply "scaleio::login {'login': password=>'password'}"

    Add standby MDMs

    puppet apply "scaleio::mdm { 'slave': sio_name=>'slave', ips=>'', role=>'manager' }"
    puppet apply "scaleio::mdm { 'tb': sio_name=>'tb', ips=>'', role=>'tb' }"

    Create Protection domain with 2 storage pools (fault_sets=>['fs1','fs2','fs3'] can also be specified here)

    puppet apply "scaleio::protection_domain { 'protection domain':
      sio_name=>'pd', storage_pools=>['sp1'] }"

    Add 3 SDSs to cluster (Storage pools and device paths in comma-separated lists should go in the same order)

    puppet apply "scaleio::sds { 'sds 1':
      sio_name=>'sds1', ips=>'', ip_roles=>'all', protection_domain=>'pd', storage_pools=>'sp1', device_paths=>'/dev/sdb' }"
    puppet apply "scaleio::sds { 'sds 2':
      sio_name=>'sds2', ips=>'', ip_roles=>'all', protection_domain=>'pd', storage_pools=>'sp1', device_paths=>'/dev/sdb' }"
    puppet apply "scaleio::sds { 'sds 3':
      sio_name=>'sds3', ips=>'', ip_roles=>'all', protection_domain=>'pd', storage_pools=>'sp1', device_paths=>'/dev/sdb' }"

    Set password for user 'scaleio_client' (non-admin user account)

    puppet apply "scaleio::cluster { 'cluster': client_password=>'Client_Password' }"
  4. Deploy clients (in any order or in parallel)

    Deploy SDC service (should be on the same nodes where volume are mapped to)

    host1> puppet apply "class { 'scaleio::sdc_server': mdm_ip=>',' }"

    Deploy Gateway server (password and ips are optional, can be set later with the same command)

    host2> puppet apply "class { 'scaleio::gateway_server': mdm_ips=>',', password=>'password' }"

    Deploy GUI (optional)

    host3> puppet apply "class { 'scaleio::gui_server': }"

Performance tuning

  • The manifest scaleio::sds_server sets noop scheduler for all SSD disks.

  • The manifests scaleio::sdc and scaleio::sds apply high_performance profile for SDS and SDC. In order to use regular profile set the parameter performance_profile, e.g.

    puppet apply "scaleio::sds { 'sds 1':
      sio_name=>'sds1', ips=>'', protection_domain=>'pd', storage_pools=>'sp1',
      device_paths=>'/dev/sdb', performance_profile=>'default' }"


  • puppetlabs-stdlib
  • puppetlabs-firewall


This module currently only support ScaleIO 2.0 and presumes that linux kernel for OS to host the SDC service is suitable for the one in emc-scaleio-sdc package. Alternatively after SDC deployment scini driver can be updated on the system according to ScaleIO 2.0 deployment guide.

No InstallationManager support is provided. Provisioning of LIA and CallHome is not available.

Contact information