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.

Example inputs

terraform.tfvars

remote_host={
    user = "root"
    private_key = ""
    certificate = ""
    password = "password"
    }


ip="1.2.11.4"
versions={
    pflex = "4.5.3000.118"
    kernel = "5.15.0-1-generic"
}
scini = {
    url = "http://example.com/release/5.15.0-1-generic"
    linux_distro = "RHEL9" #"Ubuntu"
    autobuild_scini = true
}

sdc_pkg = {
    url = "http://example.com/release/SIGNED/EMC-ScaleIO-sdc-4.5-3000.118.Ubuntu.22.04.x86_64.tar"
    local_dir = "/tmp"
    pkg_name = "EMC-ScaleIO-sdc-4.5-3000.118.Ubuntu.22.04.x86_64.tar"
    remote_pkg_name = "emc-sdc-package.tar"
    remote_dir = "/tmp"
    remote_file = "EMC-ScaleIO-sdc-4.5-3000.118.Ubuntu.22.04.x86_64.tar"
    use_remote_path = true
    skip_download_sdc = false
}

powerflex_config = {
    username = "admin"
    endpoint = "https://1.2.6.4:443"
    password = "Password"
}

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
powerflex_config Stores the configuration for terraform PowerFlex provider.
object({
# Define the attributes of the configuration for terraform PowerFlex provider.
username = string
endpoint = string
password = string
})
n/a yes
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.