Linux SDC

SDC Host Module for Linux

This Terraform module installs the SDC package on a remote Linux host using the powerflex_sdc_host resource.

Note: VM should have the following packages installed fio sshpass unzip yum-utils wget gcc make

Example Main.tf

main.tf for Ubuntu

terraform {
  required_providers {
    powerflex = {
      version = ">=1.6.0"
      source  = "registry.terraform.io/dell/powerflex"
      }
    }
}

module "sdc_host" {

  # Here is an example of a source that pulls from the registry
  source  = "dell/modules/powerflex//modules/sdc_host_linux"
  version = "x.x.x" // pull in the latest version like "1.2.0"

  remote_host = { // Stores the SSH credentials for connecting to the remote Linux host.
      user = "root"
      password = "password"
  }

  sdc_name = "terraform-sdc"// The name of the SDC will default to 'terraform-sdc'

  ip="1.2.11.4" //Stores the IP address of the remote Linux host.
  versions={
      pflex = "4.5.3000.118"
      kernel = "5.15.0-1-generic"
  }
  scini = {
      url = "" // leave as empty for autobuild = true
      linux_distro = "Ubuntu"
      autobuild_scini = true // allow to build scini on destination machine. This may not work on PowerFlex v3.X. Prerequisites here https://www.dell.com/support/kbdoc/en-us/000224134/how-to-on-demand-compilation-of-the-powerflex-sdc-driver 
  }

  sdc_pkg = {
      url = "http://example.com/release/SIGNED/EMC-ScaleIO-sdc-4.5-3000.118.Ubuntu.22.04.x86_64.tar"
      local_dir = "/tmp"
      remote_pkg_name = "emc-sdc-package.tar" // Dont update this, It should be emc-sdc-package.tar
      remote_dir = "/tmp" // temp directory on the SDC host
      remote_file = "EMC-ScaleIO-sdc-4.5-3000.118.Ubuntu.22.04.x86_64.tar" // name of file once downloaded on to remote should match what is being downloaded from sdc_pkg
      use_remote_path = true // Leave this as true
      skip_download_sdc = false // Leave this as false
  }
  mdm_ips = [] // If only attaching to one cluster then leave as empty list [] and the default virtual ips will be picked up. If wanting to attach to more then one cluster, give the mdm ips in a fomat like so provider block eg. ['10.10.10.5,10.10.10.6', '10.10.10.7,10.10.10.8']
}

main.tf for RHEL9

terraform {
  required_providers {
    powerflex = {
      version = ">=1.6.0"
      source  = "registry.terraform.io/dell/powerflex"
      }
    }
}

module "sdc_host" {

  # Here is an example of a source that pulls from the registry
  source  = "dell/modules/powerflex//modules/sdc_host_linux"
  version = "x.x.x" // pull in the latest version like "1.2.0"

  remote_host = { // Stores the SSH credentials for connecting to the remote Linux host.
      user = "root"
      password = "password"
  }

  sdc_name = "terraform-sdc"// The name of the SDC will default to 'terraform-sdc'

  ip="1.2.11.4" //Stores the IP address of the remote Linux host.
  versions={
      pflex = "4.5.3000.118"
      kernel = "5.15.0-1-generic"
  }
  scini = {
      url = "" // leave as empty for autobuild = true
      linux_distro = "RHEL9"
      autobuild_scini = true // allow to build scini on destination machine. This may not work on PowerFlex v3.X. Prerequisites here https://www.dell.com/support/kbdoc/en-us/000224134/how-to-on-demand-compilation-of-the-powerflex-sdc-driver 
  }

  sdc_pkg = {
      url = "http://example.com/release/SIGNED/EMC-ScaleIO-sdc-4.5-3000.118.Ubuntu.22.04.x86_64.rpm"
      local_dir = "/tmp"
      remote_pkg_name = "emc-sdc-package.rpm" // Dont update this, It should be emc-sdc-package.rpm
      remote_dir = "/tmp" // temp directory on the SDC host
      remote_file = "EMC-ScaleIO-sdc-4.5-3000.118.Ubuntu.22.04.x86_64.rpm" // name of file once downloaded on to remote should match what is being downloaded from sdc_pkg
      use_remote_path = true // Leave this as true
      skip_download_sdc = false // Leave this as false
  }
  mdm_ips = [] // If only attaching to one cluster then leave as empty list [] and the default virtual ips will be picked up. If wanting to attach to more then one cluster, give the mdm ips in a fomat like so provider block eg. ['10.10.10.5,10.10.10.6', '10.10.10.7,10.10.10.8']
}

Usage

To run this example you need to execute:

$ terraform init
$ terraform apply

After successful operation of above commands, to remove deployment, you need to execute:

terraform destroy 

Requirements

Name Version
powerflex >=1.6.0

Providers

No providers.

Modules

Name Source Version
sdc_host_linux ../../modules/sdc_host_linux n/a

Resources

No resources.

Inputs

Name Description Type Default Required
ip Stores the IP address of the remote Linux host. string n/a yes
mdm_ips all the mdms (either primary,secondary or virtual ips) in a comma separated list by cluster if unset will use the mdms of the cluster set in the provider block eg. [‘10.10.10.5,10.10.10.6’, ‘10.10.10.7,10.10.10.8’] list(string) [] no
remote_host Stores the SSH credentials for connecting to the remote Linux host.
object({
# Define the user attribute of the remote variable.
user = string
# Define the ssh private_key file with path for the SDC login user
private_key = optional(string, “”)
# Define the ssh certificate file path, issued to the SDC login user
certificate = optional(string, “”)
password = optional(string)
})
n/a yes
scini The SCINI module package related variables.
object({
# The URL where the SCINI module package is located. Ignored if autobuild_scini is true.
url = optional(string)
# specify distro where SDC will be deployed eg. RHEL9, Ubuntu etc. as case sensitive
linux_distro = string
#allow to build scini on destination machine. This may not work on PowerFlex v3.X. Prerequisites here https://www.dell.com/support/kbdoc/en-us/000224134/how-to-on-demand-compilation-of-the-powerflex-sdc-driver
autobuild_scini = optional(bool, false)
})
n/a yes
sdc_pkg configuration for SDC package like url to download package from, copy as local package or directory on remote server. One of local_dir or remote_dir will be used based on the variable use_remote_path
object({
# examples “http://example.com/EMC-ScaleIO-sdc-3.6-700.103.Ubuntu.22.04.x86_64.tar", “ftp://username:password@ftpserver/path/to/file”
url = optional(string)
#the name of the SDC package for local.
pkg_name = optional(string)
#the name of the SDC package for remote machine. It should be emc-sdc-package.(tar/rpm)
remote_pkg_name = optional(string)
#local directory where the SDC package will be downloaded.
local_dir = optional(string)
#remote directory where the SDC package will be downloaded. (if use_remote_path is true)
remote_dir = optional(string, “/tmp”)
# use the SDC package on remote machine path (where SDC is deployed)
use_remote_path = bool
# if SDC package is available in local directory, download can be skipped by setting to true
skip_download_sdc = optional(bool, false)
})
n/a yes
versions n/a
object({
pflex = string
kernel = string
})
n/a yes

Outputs

No outputs.