SolidFire Developer Community & Managing SolidFire with Puppet

SolidFire Developer Community

Recently we launched our http://developer.solidfire.com dev community as a place to go when building tools that work with SolidFire. This complements our Git repository at https://github.com/solidfire where we are publishing code and integrations that have been developed. PowerShell and code around our SolidFire Agile Infrastructure solutions lives here, for example.

Josh Atwell has done a great job on this and we are just getting started on making this a vibrant community. I will start to contribute as much as I can to this as well. While not a developer – well, I did used to love a bit of Turbo Pascal in 1991 – increasingly people are asking questions and wanting to figure out ways to automate common storage tasks. Look forward to interacting with people there soon.

Controlling SolidFire with Puppet

In addition, Ed Balduf has done some good work in building an initial set of Puppet modules. I thought I would give these a spin today as its the first time I’ve really done much with Puppet.

This just details the basic ‘baby steps’ I took and gives people an idea of how to demo our automation / API features with Puppet.

The modules Ed has developed are available here: https://github.com/ebalduf/puppet and right they now just give two simple functions – the ability to create a CHAP / tenant account on SolidFire and create a volume.

Setup

1) I took an Ubuntu 14.04 VM and installed puppet onto it: apt-get install puppet

2) Cloned the modules from git into my home directory (/home/solidfire)

3) Copied over the modules into puppet the correct location: cp -R solidfire/ /etc/puppet/modules/.

Applying/Running the Code

In the directory /etc/puppet/modules/solidfire/examples/manifests I edited the two example manifests – account.pp and volume.pp. These create a volume and an account. The example below creates an account called puppetDemoAccount – all of the other settings should be familar.

solidfire_account { ‘puppetDemoAccount’:
ensure => ‘present’,
mvip => ’10.1.1.100′,
passwd => ‘solidfire’,
login => ‘admin’,
}

Then run puppet apply account.pp and I get a new account created on SolidFire. Changing and running puppet apply volume.pp then gives me a volume with QOS and all other settings, attached to the account I just created:

solidfire_volume { ‘puppetDemoVolume’:
ensure => ‘present’,
mvip => ’10.1.1.100′,
passwd => ‘solidfire’,
login => ‘admin’,
volsize => 3,
account => ‘puppetDemoAccount’,
min_iops => 420,
max_iops => 520,
burst_iops => 610
}

puppet-1

Feeding in from the command line

It is also possible to feed in all the arguments from the command line. Again Ed provided me with the example here and I edited them to match. In bold is highlighted were you set the volume name / account names:

puppet apply -e “solidfire_volume { ‘voltest2‘: ensure => ‘present’, mvip => ’10.1.1.100′,passwd=>’solidfire’,login=>’admin’, volsize=> 2, account => ‘acctest2‘, min_iops => 420, max_iops => 520, burst_iops => 610}”

puppet apply -e “solidfire_account { ‘acctest2‘: ensure => ‘present’, mvip => ’10.1.1.100′,passwd=>’solidfire’,login=>’admin’}”

This at least allows someone to do a basic demo of how we would integrate with Puppet. Clearly we need more in our module on this however this is a great start and we are working to get this on the approved Puppet module list.

Spread the word. Share this post!

Leave A Reply

Your email address will not be published. Required fields are marked *