Forge Home

scaleio

Puppet library for Scaleio 2.0 deployment and configuration

41,785 downloads

7,326 latest version

4.6 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Support the Puppet Community by contributing to this module

You are welcome to contribute to this module by suggesting new features, currency updates, or fixes. Every contribution is valuable to help ensure that the module remains compatible with the latest Puppet versions and continues to meet community needs. Complete the following steps:

  1. Review the module’s contribution guidelines and any licenses. Ensure that your planned contribution aligns with the author’s standards and any legal requirements.
  2. Fork the repository on GitHub, make changes on a branch of your fork, and submit a pull request. The pull request must clearly document your proposed change.

For questions about updating the module, contact the module’s author.

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 2023.8.x, 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 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.

Download

Documentation

cloudscaling/scaleio — version 1.2.1 Dec 2nd 2016

ScaleIO

Overview

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.

Setup

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)

    emc-scaleio-mdm
    emc-scaleio-sds
    emc-scaleio-sdc
    emc-scaleio-gateway
    emc_scaleio_gui
    
  • 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: ftp://QNzgdxXix:Aw3wFAwAq3@ftp.emc.com/. 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=>'10.0.0.1', 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

    FACTER_mdm_ips='10.0.0.1,10.0.0.2'
    

    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=>'10.0.0.1', role=>'manager' }"
    puppet apply "scaleio::mdm { 'tb': sio_name=>'tb', ips=>'10.0.0.2', 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=>'10.0.0.1', ip_roles=>'all', protection_domain=>'pd', storage_pools=>'sp1', device_paths=>'/dev/sdb' }"
    puppet apply "scaleio::sds { 'sds 2':
      sio_name=>'sds2', ips=>'10.0.0.2', ip_roles=>'all', protection_domain=>'pd', storage_pools=>'sp1', device_paths=>'/dev/sdb' }"
    puppet apply "scaleio::sds { 'sds 3':
      sio_name=>'sds3', ips=>'10.0.0.3', 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=>'10.0.0.1,10.0.0.2' }"
    

    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=>'10.0.0.1,10.0.0.2', 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=>'10.0.0.1', protection_domain=>'pd', storage_pools=>'sp1',
      device_paths=>'/dev/sdb', performance_profile=>'default' }"
    

Reference

  • puppetlabs-stdlib
  • puppetlabs-firewall

Limitations

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